]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: Add SRv6 End.X SID to IS ext reach Sub-TLVs
authorCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Thu, 25 May 2023 10:13:33 +0000 (12:13 +0200)
committerCarmine Scarpitta <carmine.scarpitta@uniroma2.it>
Mon, 11 Sep 2023 20:11:42 +0000 (22:11 +0200)
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>
isisd/isis_tlvs.c
isisd/isis_tlvs.h

index d573d4044e0fc0531476e6d02747645a357482bb..9fc602c2095bd5583a9aa53c54c5df738b4a64e8 100644 (file)
@@ -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);
 }
 
index 1b48fd579a40e9f732d36d938a242f06d2145da3..138e5bbeae53f015e62c9333d15c31ea5fdf4456 100644 (file)
@@ -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 */