diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-02-14 16:03:58 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-09-11 22:11:34 +0200 | 
| commit | 2dfe8ef46305c10c40f8572b47de01acb8f8eec5 (patch) | |
| tree | 39bc48ca136d788269e202b4c526f5acd5c7e73d /isisd | |
| parent | b5cd8ab2b7f2b18456669453da67d0e25ffdb8f1 (diff) | |
isisd: Add pack func for SID Structure Sub-Sub-TLV
Add a function to pack an SRv6 SID Structure Sub-Sub-TLV
(RFC 9352 section #9).
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
Diffstat (limited to 'isisd')
| -rw-r--r-- | isisd/isis_tlvs.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c index d9b0d67af4..04ff21125a 100644 --- a/isisd/isis_tlvs.c +++ b/isisd/isis_tlvs.c @@ -2015,6 +2015,26 @@ static void free_subsubtlv_srv6_sid_structure(  	XFREE(MTYPE_ISIS_SUBSUBTLV, sid_struct);  } +static int pack_subsubtlv_srv6_sid_structure( +	struct isis_srv6_sid_structure_subsubtlv *sid_struct, struct stream *s) +{ +	if (!sid_struct) +		return 0; + +	if (STREAM_WRITEABLE(s) < 6) { +		return 1; +	} + +	stream_putc(s, ISIS_SUBSUBTLV_SRV6_SID_STRUCTURE); +	stream_putc(s, 4); +	stream_putc(s, sid_struct->loc_block_len); +	stream_putc(s, sid_struct->loc_node_len); +	stream_putc(s, sid_struct->func_len); +	stream_putc(s, sid_struct->arg_len); + +	return 0; +} +  static struct isis_item *copy_item(enum isis_tlv_context context,  				   enum isis_tlv_type type,  				   struct isis_item *item);  | 
