From f99def613008dc4f6ef50861bd59a2a5c2521d24 Mon Sep 17 00:00:00 2001 From: Ameya Dharkar Date: Thu, 26 Jul 2018 14:48:05 -0700 Subject: [PATCH] bgpd: Show routes filtered by prefix-list in filter-routes command Changed "show bgp ipv4 neighbor filtered-routes" to show routes filtered by prefx lists, distribute lists and filter lists Closes: #2653 Signed-off-by: Ameya Dharkar adharkar@vmware.com --- bgpd/bgp_route.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index f10f7425c6..b1727a3b04 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -10101,6 +10101,7 @@ static void show_adj_route(struct vty *vty, struct peer *peer, afi_t afi, json_object *json_ocode = NULL; json_object *json_ar = NULL; struct peer_af *paf; + bool route_filtered; if (use_json) { json_scode = json_object_new_object(); @@ -10223,17 +10224,29 @@ static void show_adj_route(struct vty *vty, struct peer *peer, afi_t afi, } bgp_attr_dup(&attr, ain->attr); - ret = bgp_input_modifier(peer, &rn->p, &attr, - afi, safi, rmap_name); + route_filtered = false; + + /* Filter prefix using distribute list, + * filter list or prefix list + */ + if ((bgp_input_filter(peer, &rn->p, &attr, afi, + safi)) == FILTER_DENY) + route_filtered = true; + + /* Filter prefix using route-map */ + if ((bgp_input_modifier(peer, &rn->p, &attr, + afi, safi, rmap_name)) + == RMAP_DENY) + route_filtered = true; if (type == bgp_show_adj_route_filtered - && ret != RMAP_DENY) { + && !route_filtered) { bgp_attr_undup(&attr, ain->attr); continue; } if (type == bgp_show_adj_route_received - && ret == RMAP_DENY) + && route_filtered) filtered_count++; route_vty_out_tmp(vty, &rn->p, &attr, safi, -- 2.39.5