summaryrefslogtreecommitdiff
path: root/isisd/isis_nb_config.c
diff options
context:
space:
mode:
authorzhou-run <166502045+zhou-run@users.noreply.github.com>2024-05-27 11:08:53 +0800
committerbaozhen (RD) <bao.zhen@h3c.com>2024-05-27 16:39:30 +0800
commit1f5446d2fc83e2eba9e693bc5f439723d5f48865 (patch)
tree9a1e9224b8ab32ebfb7ccb5a1d6f40d376f1151a /isisd/isis_nb_config.c
parentebdbb0e3fedd89514e4e40edc6e967b62a7e450c (diff)
isisd: When operating multiple areas, the system ID behaves abnormally.
When clearing the net in one of the areas, the system ID is unconditionally cleared, even if the net does not include the current system ID. Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com> isisd: When operating multiple areas, the system ID behaves abnormally. When deleting one of the areas, even if the net under the area includes the current system ID, the system ID still remains. Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com> isisd: fix frrbot styling issues found fix frrbot styling issues found Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com> isisd: fix frrbot styling issues found fix frrbot styling issues found Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com> isisd: Resolve compilation issues. The higher version updates 'struct area_addr' to 'struct iso_address'. Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com> isisd: fix frrbot styling issues found fix frrbot styling issues found Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>
Diffstat (limited to 'isisd/isis_nb_config.c')
-rw-r--r--isisd/isis_nb_config.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c
index 763b8b73d2..0a343ddc29 100644
--- a/isisd/isis_nb_config.c
+++ b/isisd/isis_nb_config.c
@@ -252,11 +252,12 @@ int isis_instance_area_address_destroy(struct nb_cb_destroy_args *args)
return NB_ERR_INCONSISTENCY;
listnode_delete(area->area_addrs, addrp);
- XFREE(MTYPE_ISIS_AREA_ADDR, addrp);
/*
* Last area address - reset the SystemID for this router
*/
- if (listcount(area->area_addrs) == 0) {
+ if (!memcmp(addrp->area_addr + addrp->addr_len, area->isis->sysid,
+ ISIS_SYS_ID_LEN) &&
+ listcount(area->area_addrs) == 0) {
for (ALL_LIST_ELEMENTS_RO(area->circuit_list, cnode, circuit))
for (lvl = IS_LEVEL_1; lvl <= IS_LEVEL_2; ++lvl) {
if (circuit->u.bc.is_dr[lvl - 1])
@@ -268,6 +269,8 @@ int isis_instance_area_address_destroy(struct nb_cb_destroy_args *args)
zlog_debug("Router has no SystemID");
}
+ XFREE(MTYPE_ISIS_AREA_ADDR, addrp);
+
return NB_OK;
}