diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-05-25 12:13:33 +0200 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 22:11:42 +0200 | 
| commit | 3740efacfbd41f089f148e5543d064ea3a4b6a51 (patch) | |
| tree | 2478618af1e5496740881976f6cb856ed6308353 /isisd | |
| parent | f912df37de10f67d86e19e945e7cd6895e90174d (diff) | |
isisd: Add SRv6 End.X SID to IS ext reach Sub-TLVs
Add SRv6 End.X SID Sub-TLV and SRv6 LAN End.X SID Sub-TLV to the
Extended IS Reachability Sub-TLVs data structure and perform proper
initialization/free when the Sub-TLVs data structure is
allocated/destroyed.
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd')
| -rw-r--r-- | isisd/isis_tlvs.c | 15 | ||||
| -rw-r--r-- | isisd/isis_tlvs.h | 6 | 
2 files changed, 21 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c index d573d4044e..9fc602c209 100644 --- a/isisd/isis_tlvs.c +++ b/isisd/isis_tlvs.c @@ -135,6 +135,9 @@ struct isis_ext_subtlvs *isis_alloc_ext_subtlvs(void)  	init_item_list(&ext->lan_sid);  	ext->aslas = list_new(); +	init_item_list(&ext->srv6_endx_sid); +	init_item_list(&ext->srv6_lan_endx_sid); +  	admin_group_init(&ext->ext_admin_group);  	return ext; @@ -166,6 +169,18 @@ void isis_del_ext_subtlvs(struct isis_ext_subtlvs *ext)  	admin_group_term(&ext->ext_admin_group); +	/* First, free SRv6 End.X SID and SRv6 LAN End.X SID list if needed */ +	for (item = ext->srv6_endx_sid.head; item; item = next_item) { +		next_item = item->next; +		isis_free_subsubtlvs(((struct isis_srv6_endx_sid_subtlv *)item)->subsubtlvs); +		XFREE(MTYPE_ISIS_SUBTLV, item); +	} +	for (item = ext->srv6_lan_endx_sid.head; item; item = next_item) { +		next_item = item->next; +		isis_free_subsubtlvs(((struct isis_srv6_lan_endx_sid_subtlv *)item)->subsubtlvs); +		XFREE(MTYPE_ISIS_SUBTLV, item); +	} +  	XFREE(MTYPE_ISIS_SUBTLV, ext);  } diff --git a/isisd/isis_tlvs.h b/isisd/isis_tlvs.h index 1b48fd579a..138e5bbeae 100644 --- a/isisd/isis_tlvs.h +++ b/isisd/isis_tlvs.h @@ -639,6 +639,8 @@ enum ext_subsubtlv_types {  #define EXT_AVA_BW		0x080000  #define EXT_USE_BW		0x100000  #define EXT_EXTEND_ADM_GRP 0x200000 +#define EXT_SRV6_ENDX_SID 0x400000 +#define EXT_SRV6_LAN_ENDX_SID 0x800000  /*   * This structure groups all Extended IS Reachability subTLVs. @@ -688,6 +690,10 @@ struct isis_ext_subtlvs {  	struct isis_item_list lan_sid;  	struct list *aslas; + +	/* SRv6 End.X & LAN End.X SID */ +	struct isis_item_list srv6_endx_sid; +	struct isis_item_list srv6_lan_endx_sid;  };  /* RFC 8919 */  | 
