]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Include structure when removing End.DT46 SID 17212/head
authorCarmine Scarpitta <cscarpit@cisco.com>
Sun, 15 Sep 2024 16:56:48 +0000 (18:56 +0200)
committerCarmine Scarpitta <cscarpit@cisco.com>
Wed, 23 Oct 2024 15:42:47 +0000 (17:42 +0200)
Include SID structure information when removing an SRv6 End.DT46 SID
from the forwarding plane.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
bgpd/bgp_mplsvpn.c

index 6d4dce41a4ce9798bd3ab1eaeb45784829cf0da5..45f7f20f8ac94bd15802d080b88ced45b920bf4e 100644 (file)
@@ -536,6 +536,7 @@ void vpn_leak_zebra_vrf_sid_withdraw_per_af(struct bgp *bgp, afi_t afi)
 void vpn_leak_zebra_vrf_sid_withdraw_per_vrf(struct bgp *bgp)
 {
        int debug = BGP_DEBUG(vpn, VPN_LEAK_LABEL);
+       struct seg6local_context seg6localctx = {};
 
        if (bgp->vrf_id == VRF_UNKNOWN) {
                if (debug)
@@ -549,9 +550,19 @@ void vpn_leak_zebra_vrf_sid_withdraw_per_vrf(struct bgp *bgp)
                zlog_debug("%s: deleting sid for vrf %s (id=%d)", __func__,
                           bgp->name_pretty, bgp->vrf_id);
 
+       if (bgp->tovpn_sid_locator) {
+               seg6localctx.block_len =
+                       bgp->tovpn_sid_locator->block_bits_length;
+               seg6localctx.node_len =
+                       bgp->tovpn_sid_locator->node_bits_length;
+               seg6localctx.function_len =
+                       bgp->tovpn_sid_locator->function_bits_length;
+               seg6localctx.argument_len =
+                       bgp->tovpn_sid_locator->argument_bits_length;
+       }
        zclient_send_localsid(zclient, bgp->tovpn_zebra_vrf_sid_last_sent,
                              bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC,
-                             NULL);
+                             &seg6localctx);
        XFREE(MTYPE_BGP_SRV6_SID, bgp->tovpn_zebra_vrf_sid_last_sent);
 }