diff options
| author | Russ White <russ@riw.us> | 2024-07-08 23:00:35 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-08 23:00:35 -0400 |
| commit | 893ba83ff335db96785f3d4bb96a0d7bec5b8081 (patch) | |
| tree | 24c55f88f065f15d80a3b229d73fcda10b4d7eb7 /isisd/isisd.c | |
| parent | d7d491537a936333830c7c2fa3cb52df7e5476a9 (diff) | |
| parent | 1f5446d2fc83e2eba9e693bc5f439723d5f48865 (diff) | |
Merge pull request #16090 from zhou-run/202405271057
isisd: When operating multiple areas, the system ID behaves abnormally.
Diffstat (limited to 'isisd/isisd.c')
| -rw-r--r-- | isisd/isisd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/isisd/isisd.c b/isisd/isisd.c index 982df0839b..8db6295b66 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -496,6 +496,7 @@ void isis_area_destroy(struct isis_area *area) { struct listnode *node, *nnode; struct isis_circuit *circuit; + struct iso_address *addr; QOBJ_UNREG(area); @@ -545,6 +546,15 @@ void isis_area_destroy(struct isis_area *area) if (!CHECK_FLAG(im->options, F_ISIS_UNIT_TEST)) isis_redist_area_finish(area); + if (listcount(area->area_addrs) > 0) { + addr = listgetdata(listhead(area->area_addrs)); + if (!memcmp(addr->area_addr + addr->addr_len, area->isis->sysid, + ISIS_SYS_ID_LEN)) { + memset(area->isis->sysid, 0, ISIS_SYS_ID_LEN); + area->isis->sysid_set = 0; + } + } + list_delete(&area->area_addrs); for (int i = SPF_PREFIX_PRIO_CRITICAL; i <= SPF_PREFIX_PRIO_MEDIUM; |
