summaryrefslogtreecommitdiff
path: root/isisd/isis_tlvs.c
diff options
context:
space:
mode:
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-02-14 16:03:58 +0100
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>2023-09-11 22:11:34 +0200
commit2dfe8ef46305c10c40f8572b47de01acb8f8eec5 (patch)
tree39bc48ca136d788269e202b4c526f5acd5c7e73d /isisd/isis_tlvs.c
parentb5cd8ab2b7f2b18456669453da67d0e25ffdb8f1 (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/isis_tlvs.c')
-rw-r--r--isisd/isis_tlvs.c20
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);