diff options
| author | Olivier Dugeon <olivier.dugeon@orange.com> | 2021-06-30 17:23:56 +0200 | 
|---|---|---|
| committer | Olivier Dugeon <olivier.dugeon@orange.com> | 2021-11-30 15:22:28 +0100 | 
| commit | 173f8887cc3716985bfe4b84bdf2228194716f7d (patch) | |
| tree | 6bf71295b47e814980e8620feba04e6950d7ed18 /isisd/isis_adjacency.c | |
| parent | 0536fea8d24baf569f20f1848d4764237b7ac542 (diff) | |
isisd: Add support for RFC6119 (IPv6 TE in IS-IS)
 - Add advertisement of Global IPv6 address in IIH pdu
 - Add new CLI to set IPv6 Router ID
 - Add advertisement of IPv6 Router ID
 - Correctly advertise IPv6 local and neighbor addresses in Extended IS and MT
   Reachability TLVs
 - Correct output of Neighbor IPv6 address in 'show isis database detail'
 - Manage IPv6 addresses advertisement and corresponiding Adjacency SID when
   IS-IS is not using Multi-Topology by introducing a new ISIS_MT_DISABLE
   value for mtid (== 4096 i.e. first reserved flag set to 1)
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Diffstat (limited to 'isisd/isis_adjacency.c')
| -rw-r--r-- | isisd/isis_adjacency.c | 23 | 
1 files changed, 16 insertions, 7 deletions
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index f5e8a790bf..ea05824f0e 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -168,7 +168,7 @@ void isis_delete_adj(void *arg)  	XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->area_addresses);  	XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv4_addresses); -	XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ipv6_addresses); +	XFREE(MTYPE_ISIS_ADJACENCY_INFO, adj->ll_ipv6_addrs);  	adj_mt_finish(adj);  	list_delete(&adj->adj_sids); @@ -414,11 +414,11 @@ void isis_adj_print(struct isis_adjacency *adj)  			zlog_debug("%pI4", &adj->ipv4_addresses[i]);  	} -	if (adj->ipv6_address_count) { +	if (adj->ll_ipv6_count) {  		zlog_debug("IPv6 Address(es):"); -		for (unsigned int i = 0; i < adj->ipv6_address_count; i++) { +		for (unsigned int i = 0; i < adj->ll_ipv6_count; i++) {  			char buf[INET6_ADDRSTRLEN]; -			inet_ntop(AF_INET6, &adj->ipv6_addresses[i], buf, +			inet_ntop(AF_INET6, &adj->ll_ipv6_addrs[i], buf,  				  sizeof(buf));  			zlog_debug("%s", buf);  		} @@ -577,12 +577,21 @@ void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,  				vty_out(vty, "      %pI4\n",  					&adj->ipv4_addresses[i]);  		} -		if (adj->ipv6_address_count) { +		if (adj->ll_ipv6_count) {  			vty_out(vty, "    IPv6 Address(es):\n"); -			for (unsigned int i = 0; i < adj->ipv6_address_count; +			for (unsigned int i = 0; i < adj->ll_ipv6_count; i++) { +				char buf[INET6_ADDRSTRLEN]; +				inet_ntop(AF_INET6, &adj->ll_ipv6_addrs[i], +					  buf, sizeof(buf)); +				vty_out(vty, "      %s\n", buf); +			} +		} +		if (adj->global_ipv6_count) { +			vty_out(vty, "    Global IPv6 Address(es):\n"); +			for (unsigned int i = 0; i < adj->global_ipv6_count;  			     i++) {  				char buf[INET6_ADDRSTRLEN]; -				inet_ntop(AF_INET6, &adj->ipv6_addresses[i], +				inet_ntop(AF_INET6, &adj->global_ipv6_addrs[i],  					  buf, sizeof(buf));  				vty_out(vty, "      %s\n", buf);  			}  | 
