summaryrefslogtreecommitdiff
path: root/isisd/isis_adjacency.c
diff options
context:
space:
mode:
authorIgor Ryzhov <iryzhov@nfware.com>2021-06-11 18:27:46 +0300
committerIgor Ryzhov <iryzhov@nfware.com>2021-06-11 18:30:47 +0300
commit240f48b36b59bc53599e8df6579513e0d7744680 (patch)
treec12e2c5b6dec823c01b4f37fde490fbc59863e10 /isisd/isis_adjacency.c
parent352cc841d897eb343f12d7f85c7f346ab3c29beb (diff)
isisd: per-instance dynamic hostname cache
Currently, the dynamic hostname cache is global. It is incorrect because neighbors in different VRFs may have the same system ID and different hostnames. This also fixes a memory leak - when the instance is deleted, the cache must be cleaned up and the cleanup thread must be cancelled. Fixes #8832. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'isisd/isis_adjacency.c')
-rw-r--r--isisd/isis_adjacency.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c
index c1f5e49eca..ffda0f8643 100644
--- a/isisd/isis_adjacency.c
+++ b/isisd/isis_adjacency.c
@@ -270,7 +270,7 @@ const char *isis_adj_name(const struct isis_adjacency *adj)
struct isis_dynhn *dyn;
- dyn = dynhn_find_by_id(adj->sysid);
+ dyn = dynhn_find_by_id(adj->circuit->isis, adj->sysid);
if (dyn)
return dyn->hostname;
else
@@ -401,7 +401,7 @@ void isis_adj_print(struct isis_adjacency *adj)
if (!adj)
return;
- dyn = dynhn_find_by_id(adj->sysid);
+ dyn = dynhn_find_by_id(adj->circuit->isis, adj->sysid);
if (dyn)
zlog_debug("%s", dyn->hostname);
@@ -537,7 +537,7 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
vty_out(vty, " SNPA: %s", snpa_print(adj->snpa));
if (adj->circuit
&& (adj->circuit->circ_type == CIRCUIT_T_BROADCAST)) {
- dyn = dynhn_find_by_id(adj->lanid);
+ dyn = dynhn_find_by_id(adj->circuit->isis, adj->lanid);
if (dyn)
vty_out(vty, ", LAN id: %s.%02x", dyn->hostname,
adj->lanid[ISIS_SYS_ID_LEN]);