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

Reply via email to