diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-01-27 16:05:28 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 17:34:56 +0200 | 
| commit | 31d76b10456e3da481cd67047dfcd5e810503792 (patch) | |
| tree | b0022feabb9d5a5a2073e65d28bab050cc51ad5b /isisd/isis_nb_config.c | |
| parent | 95096e9585e254f6b56578fb159ffb2495384f9e (diff) | |
isisd: Add nb command to unset an SRv6 locator
Add a northbound command to unset an SRv6 locator for a specific
IS-IS area. This is a wrapper around `isis_srv6_locator_unset()`.
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd/isis_nb_config.c')
| -rw-r--r-- | isisd/isis_nb_config.c | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c index 5ec17f3937..4b754c727a 100644 --- a/isisd/isis_nb_config.c +++ b/isisd/isis_nb_config.c @@ -3527,6 +3527,41 @@ int isis_instance_segment_routing_srv6_locator_modify(  	return NB_OK;  } +int isis_instance_segment_routing_srv6_locator_destroy( +	struct nb_cb_destroy_args *args) +{ +	struct isis_area *area; +	const char *loc_name; + +	if (args->event != NB_EV_APPLY) +		return NB_OK; + +	area = nb_running_get_entry(lyd_parent(lyd_parent(args->dnode)), NULL, +				    true); + +	loc_name = yang_dnode_get_string(args->dnode, NULL); + +	sr_debug("Trying to unset SRv6 locator %s", loc_name); + +	if (strncmp(loc_name, area->srv6db.config.srv6_locator_name, +		    sizeof(area->srv6db.config.srv6_locator_name)) != 0) { +		sr_debug("SRv6 locator %s is not configured", loc_name); +		snprintf(args->errmsg, args->errmsg_len, +			 "SRv6 locator %s is not configured", loc_name); +		return NB_ERR_NO_CHANGES; +	} + +	if (!isis_srv6_locator_unset(area)) { +		zlog_warn("Failed to unset SRv6 locator"); +		return NB_ERR; +	} + +	sr_debug("Deleted SRv6 locator %s for IS-IS area %s", loc_name, +		 area->area_tag); + +	return NB_OK; +} +  /*   * XPath: /frr-isisd:isis/instance/mpls/ldp-sync   */  | 
