From d9083050c8b9e300b091a8591b59f0810304e509 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Sun, 9 May 2021 22:28:36 +0300 Subject: [PATCH] Revert "bgpd: vrf route leaking, fix vrf redistribute" This reverts commit 6b2433c63f7fd3027cea8e06ca45f85bd3eea6f2. --- bgpd/bgp_zebra.c | 3 +++ zebra/redistribute.c | 17 +++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c index 288c2851b..c300fc7b1 100644 --- a/bgpd/bgp_zebra.c +++ b/bgpd/bgp_zebra.c @@ -1700,6 +1700,9 @@ int bgp_redistribute_set(struct bgp *bgp, afi_t afi, int type, redist_add_instance(&zclient->mi_redist[afi][type], instance); } else { + if (vrf_bitmap_check(zclient->redist[afi][type], bgp->vrf_id)) + return CMD_WARNING; + #ifdef ENABLE_BGP_VNC if (EVPN_ENABLED(bgp) && type == ZEBRA_ROUTE_VNC_DIRECT) { vnc_export_bgp_enable( diff --git a/zebra/redistribute.c b/zebra/redistribute.c index 7cb426359..89f46f9c9 100644 --- a/zebra/redistribute.c +++ b/zebra/redistribute.c @@ -337,12 +337,17 @@ void zebra_redistribute_add(ZAPI_HANDLER_ARGS) zvrf_id(zvrf), afi); } } else { - if (IS_ZEBRA_DEBUG_EVENT) - zlog_debug("%s: setting vrf %s(%u) redist bitmap", - __func__, VRF_LOGNAME(zvrf->vrf), - zvrf_id(zvrf)); - vrf_bitmap_set(client->redist[afi][type], zvrf_id(zvrf)); - zebra_redistribute(client, type, 0, zvrf_id(zvrf), afi); + if (!vrf_bitmap_check(client->redist[afi][type], + zvrf_id(zvrf))) { + if (IS_ZEBRA_DEBUG_EVENT) + zlog_debug( + "%s: setting vrf %s(%u) redist bitmap", + __func__, VRF_LOGNAME(zvrf->vrf), + zvrf_id(zvrf)); + vrf_bitmap_set(client->redist[afi][type], + zvrf_id(zvrf)); + zebra_redistribute(client, type, 0, zvrf_id(zvrf), afi); + } } stream_failure: -- 2.39.5