On Thu, May 26, 2022 at 03:33:44PM +0200, Daniel Gröber wrote:
Changes in v3: - Squash with ecmp weigth patch - Add babel_route_is_selected() as replacement for e->selected I'm not totally sure the lazy approach is safe yet. We might need additional bookeeping to reset r->active_nexthop on route retraction/flush instead.
Forgot to mention: - Refactor route reload and use babel_announce_rte directly instead of via babel_select_route.
+static void +babel_reconfigure_routes(struct babel_proto *p, struct fib *rtable) +{ + struct fib_iterator fit; + FIB_ITERATE_INIT(&fit, rtable); + FIB_ITERATE_START(rtable, &fit, struct babel_entry, e) + babel_announce_rte(p, e); + FIB_ITERATE_END; +} + static int babel_reconfigure(struct proto *P, struct proto_config *CF) { @@ -2460,6 +2523,10 @@ babel_reconfigure(struct proto *P, struct proto_config *CF) p->p.cf = CF; babel_reconfigure_ifaces(p, new);
+ /* Update all routes to refresh ecmp settings. */ + babel_reconfigure_routes(p, &p->ip6_rtable); + babel_reconfigure_routes(p, &p->ip4_rtable); + babel_trigger_update(p); babel_kick_timer(p);
--Daniel