diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2021-06-11 18:27:46 +0300 | 
|---|---|---|
| committer | Igor Ryzhov <iryzhov@nfware.com> | 2021-06-11 18:30:47 +0300 | 
| commit | 240f48b36b59bc53599e8df6579513e0d7744680 (patch) | |
| tree | c12e2c5b6dec823c01b4f37fde490fbc59863e10 /isisd/isis_adjacency.c | |
| parent | 352cc841d897eb343f12d7f85c7f346ab3c29beb (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.c | 6 | 
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]);  | 
