summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarmine Scarpitta <cscarpit@cisco.com>2024-09-15 18:56:48 +0200
committerCarmine Scarpitta <cscarpit@cisco.com>2024-10-23 17:42:47 +0200
commitaf6160e24d27df90821555afbb6f90f01dc5b4ac (patch)
treeea3ca3dc6142a5a1133951c193376a88e4514188
parent13a99f866a0a9085d0cdd75ff21892bb495eece5 (diff)
bgpd: Include structure when removing End.DT46 SID
Include SID structure information when removing an SRv6 End.DT46 SID from the forwarding plane. Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
-rw-r--r--bgpd/bgp_mplsvpn.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index 6d4dce41a4..45f7f20f8a 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -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);
}