Hi, I'm trying to figure out how zebra schedules recalculation of prefixes using recursive nexthop, but how not found the place. Is this done at all?
When I add a route "a.b.c.d/n via e.f.g.h" and e.f.g.h points to another route I added earlier; it seems that sometimes the original a.b.c.d/n prefix does not get updated with correct nexthop when e.f.g.h's route changes. The logic is in rib_process() which calls nexthop_active_update(). That in turn uses nexthop_active_check() and nexthop_active_ipv[46] function does the dirty work of resolving the next hop. Apparently when recursive via is used, a temporary 'resolved' nexthop route is created. However, I don't see anywhere how these 'resolved' nexthops get refreshed when the underlying route is changed. Perhaps with existing routing daemons they expect the routing daemon to refresh all prefixes? In any case, it seems we'd need to fix zebra to not use 'resolved' temporary nodes. But instead probably resolve it always on install time, and keep a list of 'dependant' routes in the prefix that is used recursively. That way all prefix can be immediately refreshed when the underlying prefix is added/removed/changed. Thanks, Timo _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
