]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: Add pack func for SID Structure Sub-Sub-TLV
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Tue, 14 Feb 2023 15:03:58 +0000 (16:03 +0100)
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Mon, 11 Sep 2023 20:11:34 +0000 (22:11 +0200)
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>
isisd/isis_tlvs.c

index d9b0d67af44ffa17c76cef12b81dfb93b1364774..04ff21125a255e12c651e39345db69bcc02b37a8 100644 (file)
@@ -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);