On Sat, 1 Aug 2015 15:04:39 -0700 Dinesh Dutt <[email protected]> wrote:
> > On Aug 1, 2015, at 6:31 AM, Timo Teras <[email protected]> wrote: > > > > As prerequisite the Cumulus tree next-hop-tracking should get in. > > > > I did have to revert one patch: "A valid BGP nexthop is flagged as > > invalid" which considers recursive routes as valid nexthops - but > > that's not how zebra works when calculating FIB candidates. Perhaps > > this is fixed somehow else in cumulus tree on later commits? > > We need that to support static routes based on dynamically learnt > routes, only BGP based Data centers with third party next hops etc. Hmm... The proper check would probably be: if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB) && (rn->match == ZEBRA_ROUTE_CONNECT || ! CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE)) && CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ACTIVE)) The code in zebra_rib.c allows to always use ZEBRA_ROUTE_CONNECT always as recursive next hop, but recursive prefix learned from routing daemon is not allowed as recursive nexthop. This should fix both cases. My problem is was that when I have multiple iBGP connection, but there was disconnects with few links. I got mismatch with BGP table and FIB. BGP thought a prefix was valid but the nexthop was not learned from other iBGP link. This caused it to still announce that route out, but zebra refused to install it to FIB. Thanks, Timo _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
