diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-06-03 02:21:30 +0200 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 22:11:48 +0200 | 
| commit | 71b8056d6d549c6f5baadeee4519cbf50ccd61a1 (patch) | |
| tree | b3457b91a41b4a027efe206d22ae7483dd133d43 /isisd/isis_srv6.c | |
| parent | 455aded931005980b5db55ecbc1371a6c5efd813 (diff) | |
isisd: Initialize/free SRv6 adjacency SIDs list
Initialize/free SRv6 adjacency SIDs list when an IS-IS area is
created/destroyed.
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd/isis_srv6.c')
| -rw-r--r-- | isisd/isis_srv6.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/isisd/isis_srv6.c b/isisd/isis_srv6.c index 5c04f53f56..398c487fbc 100644 --- a/isisd/isis_srv6.c +++ b/isisd/isis_srv6.c @@ -702,6 +702,7 @@ void isis_srv6_area_init(struct isis_area *area)  	/* Initialize SRv6 Data Base */  	memset(srv6db, 0, sizeof(*srv6db)); +	srv6db->srv6_endx_sids = list_new();  	/* Pull defaults from the YANG module */  	srv6db->config.enabled = yang_get_default_bool("%s/enabled", ISIS_SRV6); @@ -727,11 +728,18 @@ void isis_srv6_area_init(struct isis_area *area)  void isis_srv6_area_term(struct isis_area *area)  {  	struct isis_srv6_db *srv6db = &area->srv6db; +	struct srv6_adjacency *sra;  	struct listnode *node, *nnode;  	struct srv6_locator_chunk *chunk;  	sr_debug("ISIS-SRv6 (%s): Terminate SRv6", area->area_tag); +	/* Uninstall all local SRv6 End.X SIDs */ +	if (area->srv6db.config.enabled) +		for (ALL_LIST_ELEMENTS(area->srv6db.srv6_endx_sids, node, nnode, +				       sra)) +			srv6_endx_sid_del(sra); +  	/* Free SRv6 Locator chunks list */  	for (ALL_LIST_ELEMENTS(srv6db->srv6_locator_chunks, node, nnode, chunk))  		srv6_locator_chunk_free(&chunk); @@ -739,6 +747,7 @@ void isis_srv6_area_term(struct isis_area *area)  	/* Free SRv6 SIDs list */  	list_delete(&srv6db->srv6_sids); +	list_delete(&srv6db->srv6_endx_sids);  }  /**  | 
