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_nb_config.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_nb_config.c')
| -rw-r--r-- | isisd/isis_nb_config.c | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c index 3674d69376..bf043c4f41 100644 --- a/isisd/isis_nb_config.c +++ b/isisd/isis_nb_config.c @@ -1930,6 +1930,57 @@ int isis_instance_mpls_te_router_address_destroy(  }  /* + * XPath: /frr-isisd:isis/instance/mpls-te/router-address-v6 + */ +int isis_instance_mpls_te_router_address_ipv6_modify( +	struct nb_cb_modify_args *args) +{ +	struct in6_addr value; +	struct isis_area *area; + +	if (args->event != NB_EV_APPLY) +		return NB_OK; + +	area = nb_running_get_entry(args->dnode, NULL, true); +	/* only proceed if MPLS-TE is enabled */ +	if (!IS_MPLS_TE(area->mta)) +		return NB_OK; + +	yang_dnode_get_ipv6(&value, args->dnode, NULL); +	/* Update Area IPv6 Router ID if different */ +	if (!IPV6_ADDR_SAME(&area->mta->router_id_ipv6, &value)) { +		IPV6_ADDR_COPY(&area->mta->router_id_ipv6, &value); + +		/* And re-schedule LSP update */ +		lsp_regenerate_schedule(area, area->is_type, 0); +	} + +	return NB_OK; +} + +int isis_instance_mpls_te_router_address_ipv6_destroy( +	struct nb_cb_destroy_args *args) +{ +	struct isis_area *area; + +	if (args->event != NB_EV_APPLY) +		return NB_OK; + +	area = nb_running_get_entry(args->dnode, NULL, true); +	/* only proceed if MPLS-TE is enabled */ +	if (!IS_MPLS_TE(area->mta)) +		return NB_OK; + +	/* Reset Area Router ID */ +	IPV6_ADDR_COPY(&area->mta->router_id_ipv6, &in6addr_any); + +	/* And re-schedule LSP update */ +	lsp_regenerate_schedule(area, area->is_type, 0); + +	return NB_OK; +} + +/*   * XPath: /frr-isisd:isis/instance/segment-routing/enabled   */  int isis_instance_segment_routing_enabled_modify(  | 
