From de2425e1de263f02779bcf0d06e6d2ddb8d08ebc Mon Sep 17 00:00:00 2001 From: wangmenglan Date: Fri, 24 Feb 2023 13:59:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=96=E7=95=A5=E6=96=B9=E5=BC=8F=E9=80=89?= =?UTF-8?q?=E6=8B=A9BFD=E6=97=B6,=E6=89=8D=E6=B7=BB=E5=8A=A0bfdd=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=91=BD;=E8=8E=B7=E5=8F=96mac=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E4=B8=BA=E7=A9=BA,=E8=BF=94=E5=9B=9E-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- platform/src/health_check.cpp | 38 ++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/platform/src/health_check.cpp b/platform/src/health_check.cpp index 2f42fb2..934c3a3 100644 --- a/platform/src/health_check.cpp +++ b/platform/src/health_check.cpp @@ -102,15 +102,17 @@ int health_check_session_add(int session_id, const struct health_check *policy) tmp = (struct session_iterm *)calloc(1, sizeof(struct session_iterm)); assert(tmp); - health_check_session_init_bfd_client(&client); - bfd_vtysh_connect(&client); - ret = bfd_vtysh_add_dev(&client, policy->address, policy->retires, policy->interval_ms); - if (ret != 0) { - LOG_DEBUG("bfd vtysh add dev address [%s] failed!", policy->address); + if (policy->method == HEALTH_CHECK_METHOD_BFD) { + health_check_session_init_bfd_client(&client); + bfd_vtysh_connect(&client); + ret = bfd_vtysh_add_dev(&client, policy->address, policy->retires, policy->interval_ms); + if (ret != 0) { + LOG_DEBUG("bfd vtysh add dev address [%s] failed!", policy->address); + bfd_vtysh_close(&client); + return -1; + } bfd_vtysh_close(&client); - return -1; } - bfd_vtysh_close(&client); memset(tmp, 0, sizeof(*tmp)); tmp->session_id = session_id; @@ -138,15 +140,17 @@ int health_check_session_del(int session_id) return -1; } - health_check_session_init_bfd_client(&client); - bfd_vtysh_connect(&client); - ret = bfd_vtysh_del_dev(&client, tmp->policy.address); - if (ret != 0) { - LOG_DEBUG("bfd vtysh delete dev address [%s] failed!", tmp->policy.address); + if (tmp->policy.method == HEALTH_CHECK_METHOD_BFD) { + health_check_session_init_bfd_client(&client); + bfd_vtysh_connect(&client); + ret = bfd_vtysh_del_dev(&client, tmp->policy.address); + if (ret != 0) { + LOG_DEBUG("bfd vtysh delete dev address [%s] failed!", tmp->policy.address); + bfd_vtysh_close(&client); + return -1; + } bfd_vtysh_close(&client); - return -1; } - bfd_vtysh_close(&client); pthread_rwlock_wrlock(&g_handle.rwlock); HASH_DELETE(hh1, g_handle.root_by_id, tmp); @@ -284,6 +288,7 @@ int health_check_session_get_mac(int session_id, char *mac_buff) { uint8_t *p = NULL; struct session_iterm *tmp = NULL; + uint8_t init_mac[HC_MAC_LEN] = {0}; pthread_rwlock_rdlock(&g_handle.rwlock); HASH_FIND(hh1, g_handle.root_by_id, &session_id, sizeof(session_id), tmp); @@ -294,8 +299,13 @@ int health_check_session_get_mac(int session_id, char *mac_buff) } p = (uint8_t *)tmp->mac; + if (memcmp(p, init_mac, HC_MAC_LEN) == 0) { + pthread_rwlock_unlock(&g_handle.rwlock); + return -1; + } snprintf(mac_buff, 18, "%02x:%02x:%02x:%02x:%02x:%02x", p[0], p[1], p[2], p[3], p[4], p[5]); pthread_rwlock_unlock(&g_handle.rwlock); LOG_DEBUG("health check session get mac: %s", mac_buff); + return 0; } \ No newline at end of file