diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-03-11 12:05:37 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 22:11:30 +0200 | 
| commit | 66c50ce22ab2239081c04abf5a565955b6b8c216 (patch) | |
| tree | 1d609a3fd22a94d1a854d1b5756bdcb8da018b74 /isisd/isis_tlvs.c | |
| parent | bc6e273046a6ee8c51bb165aab68380440def8e1 (diff) | |
isisd: Unpack Sub-Sub-TLVs of SRv6 End SID Sub-TLV
Extend SRv6 End SID Sub-TLV unpack function to unpack Sub-Sub-TLVs (RFC
9352 section #9).
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd/isis_tlvs.c')
| -rw-r--r-- | isisd/isis_tlvs.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c index 2a17d79ef1..a9cc7e1c6b 100644 --- a/isisd/isis_tlvs.c +++ b/isisd/isis_tlvs.c @@ -2275,6 +2275,20 @@ static int unpack_item_srv6_end_sid(uint16_t mtid, uint8_t len,  		goto out;  	} +	sid->subsubtlvs = +		isis_alloc_subsubtlvs(ISIS_CONTEXT_SUBSUBTLV_SRV6_END_SID); + +	bool unpacked_known_tlvs = false; +	if (unpack_tlvs(ISIS_CONTEXT_SUBSUBTLV_SRV6_END_SID, subsubtlv_len, s, +			log, sid->subsubtlvs, indent + 4, +			&unpacked_known_tlvs)) { +		goto out; +	} +	if (!unpacked_known_tlvs) { +		isis_free_subsubtlvs(sid->subsubtlvs); +		sid->subsubtlvs = NULL; +	} +  	append_item(&subtlvs->srv6_end_sids, (struct isis_item *)sid);  	return 0;  out:  | 
