]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Honor route-maps when forcing maximum-prefix for filtered routes
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Sat, 22 Aug 2020 15:21:27 +0000 (18:21 +0300)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Sat, 22 Aug 2020 15:30:54 +0000 (18:30 +0300)
This will check route-maps as well, not only prefix-lists, access-lists, and
filter-lists.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
bgpd/bgp_route.c

index 3a627b44865297667d6038b33308f5f0e2c81d1f..912615a59ffc4496a469a5476afd9a09c2a5d02e 100644 (file)
@@ -3060,6 +3060,7 @@ static uint32_t bgp_filtered_routes_count(struct peer *peer, afi_t afi,
                                          safi_t safi)
 {
        uint32_t count = 0;
+       bool filtered = false;
        struct bgp_dest *dest;
        struct bgp_adj_in *ain;
        struct bgp_table *table = peer->bgp->rib[afi][safi];
@@ -3071,7 +3072,19 @@ static uint32_t bgp_filtered_routes_count(struct peer *peer, afi_t afi,
 
                        if (bgp_input_filter(peer, rn_p, &attr, afi, safi)
                            == FILTER_DENY)
+                               filtered = true;
+
+                       if (bgp_input_modifier(
+                                   peer, rn_p, &attr, afi, safi,
+                                   ROUTE_MAP_IN_NAME(&peer->filter[afi][safi]),
+                                   NULL, 0, NULL)
+                           == RMAP_DENY)
+                               filtered = true;
+
+                       if (filtered)
                                count++;
+
+                       bgp_attr_undup(&attr, ain->attr);
                }
        }