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

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

index 1255651f5313adb649e713355d244434f7af0b52..6d4dce41a4ce9798bd3ab1eaeb45784829cf0da5 100644 (file)
@@ -495,6 +495,7 @@ void vpn_leak_zebra_vrf_sid_update(struct bgp *bgp, afi_t afi)
 void vpn_leak_zebra_vrf_sid_withdraw_per_af(struct bgp *bgp, afi_t afi)
 {
        int debug = BGP_DEBUG(vpn, VPN_LEAK_LABEL);
+       struct seg6local_context seg6localctx = {};
 
        if (bgp->vrf_id == VRF_UNKNOWN) {
                if (debug)
@@ -507,9 +508,23 @@ void vpn_leak_zebra_vrf_sid_withdraw_per_af(struct bgp *bgp, afi_t afi)
                zlog_debug("%s: deleting sid for vrf %s afi (id=%d)", __func__,
                           bgp->name_pretty, bgp->vrf_id);
 
-       zclient_send_localsid(zclient,
-               bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent,
-               bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC, NULL);
+       if (bgp->vpn_policy[afi].tovpn_sid_locator) {
+               seg6localctx.block_len =
+                       bgp->vpn_policy[afi]
+                               .tovpn_sid_locator->block_bits_length;
+               seg6localctx.node_len =
+                       bgp->vpn_policy[afi]
+                               .tovpn_sid_locator->node_bits_length;
+               seg6localctx.function_len =
+                       bgp->vpn_policy[afi]
+                               .tovpn_sid_locator->function_bits_length;
+               seg6localctx.argument_len =
+                       bgp->vpn_policy[afi]
+                               .tovpn_sid_locator->argument_bits_length;
+       }
+       zclient_send_localsid(
+               zclient, bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent,
+               bgp->vrf_id, ZEBRA_SEG6_LOCAL_ACTION_UNSPEC, &seg6localctx);
        XFREE(MTYPE_BGP_SRV6_SID,
              bgp->vpn_policy[afi].tovpn_zebra_vrf_sid_last_sent);
 }