From: Maria Matejka Date: Tue, 12 Jul 2022 13:05:04 +0000 (+0200) Subject: Merge commit 'f18968f5' into thread-next X-Git-Tag: v3.0-alpha1~171^2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f16270dd91df68410760edad3fa7a1ecfc1c35b;p=thirdparty%2Fbird.git Merge commit 'f18968f5' into thread-next --- 4f16270dd91df68410760edad3fa7a1ecfc1c35b diff --cc nest/rt-table.c index 50ddc141d,2dcb2e261..3f8c7a83f --- a/nest/rt-table.c +++ b/nest/rt-table.c @@@ -3572,10 -2648,11 +3572,13 @@@ rt_update_hostentry(rtable *tab, struc if (n) { struct rte_storage *e = n->routes; - rta *a = e->rte.attrs; - word pref = a->pref; + ea_list *a = e->rte.attrs; - pxlen = n->n.addr->pxlen; ++ u32 pref = rt_get_preference(&e->rte); - if (ea_find(a, &ea_gen_hostentry)) + for (struct rte_storage *ee = n->routes; ee; ee = ee->next) - if ((ee->rte.attrs->pref >= pref) && ee->rte.attrs->hostentry) ++ if (rte_is_valid(&ee->rte) && ++ (rt_get_preference(&ee->rte) >= pref) && ++ ea_find(ee->rte.attrs, &ea_gen_hostentry)) { /* Recursive route should not depend on another recursive route */ log(L_WARN "Next hop address %I resolvable through recursive route for %N", @@@ -3583,12 -2660,11 +3586,14 @@@ goto done; } + pxlen = n->n.addr->pxlen; + - if (a->dest == RTD_UNICAST) - { - for (struct nexthop *nh = &(a->nh); nh; nh = nh->next) + eattr *nhea = ea_find(a, &ea_gen_nexthop); + ASSERT_DIE(nhea); + struct nexthop_adata *nhad = (void *) nhea->u.ptr; + + if (NEXTHOP_IS_REACHABLE(nhad)) + NEXTHOP_WALK(nh, nhad) if (ipa_zero(nh->gw)) { if (if_local_addr(he->addr, nh->iface))