TSG-13912 支持对第三方设备健康检查
bfdd程序重启后, 支持将配置重新下发给bfdd程序
This commit is contained in:
@@ -14,6 +14,8 @@ struct bfd_vtysh_client {
|
||||
|
||||
// exec after connect server
|
||||
int (*pre_config)(struct bfd_vtysh_client *);
|
||||
// recover config after connect server
|
||||
int (*recover_config)(struct bfd_vtysh_client *);
|
||||
};
|
||||
|
||||
int bfd_vtysh_connect(struct bfd_vtysh_client *client);
|
||||
|
||||
@@ -63,6 +63,12 @@ int bfd_vtysh_connect(struct bfd_vtysh_client *client)
|
||||
bfd_vtysh_close(client);
|
||||
}
|
||||
|
||||
if (client->recover_config) {
|
||||
ret = client->recover_config(client);
|
||||
if (ret < 0)
|
||||
bfd_vtysh_close(client);
|
||||
}
|
||||
|
||||
LOG_DEBUG("bfd vtysh_connect(%d): succ", client->fd);
|
||||
return 0;
|
||||
}
|
||||
@@ -71,7 +77,7 @@ int bfd_vtysh_connect(struct bfd_vtysh_client *client)
|
||||
// return -1 : fail
|
||||
void bfd_vtysh_close(struct bfd_vtysh_client *client)
|
||||
{
|
||||
if (client->fd >= 0) {
|
||||
if (client->fd > 0) {
|
||||
close(client->fd);
|
||||
client->fd = -1;
|
||||
}
|
||||
@@ -147,9 +153,6 @@ static int bfd_vtysh_cmd_exec(struct bfd_vtysh_client *client, const char *cmd,
|
||||
if (ret < 0)
|
||||
goto out_err;
|
||||
|
||||
// if (data == NULL)
|
||||
// return 0;
|
||||
|
||||
bufvalid = buf;
|
||||
do {
|
||||
ssize_t nread;
|
||||
@@ -277,7 +280,6 @@ int bfd_vtysh_del_dev(struct bfd_vtysh_client *client, const char *peer_addr)
|
||||
|
||||
// return 1 : up
|
||||
// return 0 : down
|
||||
// return -1 : fail
|
||||
int bfd_vtysh_get_dev_active(struct bfd_vtysh_client *client, char *addr)
|
||||
{
|
||||
int ret = 0;
|
||||
@@ -285,6 +287,9 @@ int bfd_vtysh_get_dev_active(struct bfd_vtysh_client *client, char *addr)
|
||||
char cmd[256] = {0};
|
||||
char stackbuf[4096];
|
||||
|
||||
if (client->fd <= 0)
|
||||
return -1;
|
||||
|
||||
snprintf(cmd, sizeof(cmd), "do show bfd peer %s", addr);
|
||||
ret = bfd_vtysh_cmd_exec(client, cmd, stackbuf, sizeof(stackbuf)-1);
|
||||
if (ret < 0) {
|
||||
@@ -294,7 +299,7 @@ int bfd_vtysh_get_dev_active(struct bfd_vtysh_client *client, char *addr)
|
||||
|
||||
// ex: Status: up/Status: down
|
||||
if ((p = strstr(stackbuf, "Status: ")) == NULL)
|
||||
return -1;
|
||||
return 0;
|
||||
if (strncmp(p+8, "up", 2) == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user