From: Donald Sharp Date: Tue, 12 Sep 2017 12:18:39 +0000 (-0400) Subject: zebra: Allow recursive nexthop resolution to consider blackholes X-Git-Tag: frr-4.0-dev~287^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=59693377a9443a2c0eec2c4607d2895db9c39100;p=mirror%2Ffrr.git zebra: Allow recursive nexthop resolution to consider blackholes When we get a route install for a route that needs to be recursively resolved allow the blackhole to be considered and used if it is available. This allows bgp to install a route that will be blackholed. Signed-off-by: Donald Sharp --- diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index c4c80b156b..d947db066f 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -357,6 +357,10 @@ static void nexthop_set_resolved(afi_t afi, struct nexthop *newhop, resolved_hop->ifindex = newhop->ifindex; } + if (newhop->type == NEXTHOP_TYPE_BLACKHOLE) { + resolved_hop->type = NEXTHOP_TYPE_BLACKHOLE; + resolved_hop->bh_type = nexthop->bh_type; + } resolved_hop->rparent = nexthop; nexthop_add(&nexthop->resolved, resolved_hop); } @@ -484,8 +488,6 @@ static int nexthop_active(afi_t afi, struct route_entry *re, } else if (CHECK_FLAG(re->flags, ZEBRA_FLAG_INTERNAL)) { resolved = 0; for (ALL_NEXTHOPS(match->nexthop, newhop)) { - if (newhop->type == NEXTHOP_TYPE_BLACKHOLE) - continue; if (!CHECK_FLAG(newhop->flags, NEXTHOP_FLAG_FIB)) continue; @@ -509,8 +511,6 @@ static int nexthop_active(afi_t afi, struct route_entry *re, } else if (re->type == ZEBRA_ROUTE_STATIC) { resolved = 0; for (ALL_NEXTHOPS(match->nexthop, newhop)) { - if (newhop->type == NEXTHOP_TYPE_BLACKHOLE) - continue; if (!CHECK_FLAG(newhop->flags, NEXTHOP_FLAG_FIB)) continue;