isisd: Add SRv6 SIDs to SRv6 configuration

Add the list of SRv6 SIDs allocated by the IS-IS instance to the per-area
SRv6 configuration. The list is area-specific. Each IS-IS area has its
own SRv6 SIDs list. The list is initialized when an IS-IS area is
created and freed when an IS-IS area is destroyed.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
This commit is contained in:
Carmine Scarpitta 2023-02-02 12:32:10 +01:00
parent f6238e10b0
commit 26d7806d20
2 changed files with 10 additions and 0 deletions

View File

@ -185,6 +185,10 @@ void isis_srv6_area_init(struct isis_area *area)
/* Initialize SRv6 Locator chunks list */
srv6db->srv6_locator_chunks = list_new();
/* Initialize SRv6 SIDs list */
srv6db->srv6_sids = list_new();
srv6db->srv6_sids->del = (void (*)(void *))isis_srv6_sid_free;
}
/**
@ -204,6 +208,9 @@ void isis_srv6_area_term(struct isis_area *area)
for (ALL_LIST_ELEMENTS(srv6db->srv6_locator_chunks, node, nnode, chunk))
srv6_locator_chunk_free(&chunk);
list_delete(&srv6db->srv6_locator_chunks);
/* Free SRv6 SIDs list */
list_delete(&srv6db->srv6_sids);
}
/**

View File

@ -55,6 +55,9 @@ struct isis_srv6_db {
/* List of SRv6 Locator chunks */
struct list *srv6_locator_chunks;
/* List of SRv6 SIDs allocated by the IS-IS instance */
struct list *srv6_sids;
/* Area SRv6 configuration. */
struct {
/* Administrative status of SRv6 */