summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNitin Soni <nsoni@cumulusnetworks.com>2019-01-24 01:43:48 -0800
committerNitin Soni <nsoni@cumulusnetworks.com>2019-01-24 01:43:48 -0800
commit2686df6ad834e188ad2bd11e35d40b477373cc5f (patch)
tree34118ac8b97bb6a2051784e11ada9fe96ba73241
parent262d4dda2aa009f200370a4c4635899ceb85ab90 (diff)
bgpd: route-map fails to filter type-5 routes
Route-map filtering is based on the value of "bgp->adv_cmd_rmap[afi][safi].map". For example, we advertise routes in bgp_evpn_advertise_type5_routes() based on the value of "bgp->adv_cmd_rmap[afi][safi].map". This variable gets populated in vty handler bgp_evpn_advertise_type5. This variable will not get populated if we have not yet applied the route-map configuration. The fix is to correctly populate "bgp->adv_cmd_rmap[afi][safi].map" in bgp_route_map_process_update() if it has not been populated before. Ticket: CM-23263 Signed-off-by: Nitin Soni <nsoni@cumulusnetworks.com> Reviewed-by: CCR-8163
-rw-r--r--bgpd/bgp_routemap.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index d7ee2aa19f..4953032f97 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -3325,12 +3325,18 @@ static void bgp_route_map_process_update(struct bgp *bgp, const char *rmap_name,
!= 0)
continue;
+ /* Make sure the route-map is populated here if not already done */
+ bgp->adv_cmd_rmap[afi][safi].map = map;
+
if (BGP_DEBUG(zebra, ZEBRA))
zlog_debug(
"Processing route_map %s update on advertise type5 route command",
rmap_name);
- bgp_evpn_withdraw_type5_routes(bgp, afi, safi);
- bgp_evpn_advertise_type5_routes(bgp, afi, safi);
+
+ if (route_update) {
+ bgp_evpn_withdraw_type5_routes(bgp, afi, safi);
+ bgp_evpn_advertise_type5_routes(bgp, afi, safi);
+ }
}
}