]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Include structure when removing End.DT46 SID
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:35:02 +0000 (17:35 +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 70b0c50ede58809118268d97ab819d486c4f3212..2b42becb95e61ad4722bb9b80daf95181631f237 100644 (file)
@@ -517,6 +517,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)
@@ -530,9 +531,14 @@ 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);
 
-       zclient_send_localsid(zclient, bgp->tovpn_zebra_vrf_sid_last_sent,
-                             bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC,
-                             NULL);
+       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, &seg6localctx);
        XFREE(MTYPE_BGP_SRV6_SID, bgp->tovpn_zebra_vrf_sid_last_sent);
        bgp->tovpn_zebra_vrf_sid_last_sent = NULL;
 }