From: Maria Matejka Date: Wed, 9 Mar 2022 13:09:34 +0000 (+0100) Subject: Merge commit '8f3942a9' into haugesund X-Git-Tag: v3.0-alpha1~171^2~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6151e51ffaffd946cc1d7208aefd51acbac625d1;p=thirdparty%2Fbird.git Merge commit '8f3942a9' into haugesund Conflicts: nest/rt-table.c --- 6151e51ffaffd946cc1d7208aefd51acbac625d1 diff --cc nest/rt-table.c index 36414ed45,280551aaf..5b5016960 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@@ -852,9 -575,15 +863,15 @@@ rt_notify_accepted(struct channel *c, n if ((new_changed == old_changed) || (old_best == old_changed)) { /* Feed or old_best changed -> find first accepted by filters */ - for (struct rte_storage *r = net->routes; r && rte_is_valid(&r->rte); r = r->next) + for (struct rte_storage *r = net->routes; rte_is_valid(r); r = r->next) + { + /* Already rejected before */ + if (!refeed && bmap_test(&c->export_reject_map, r->rte.id)) + continue; + if (new_best = export_filter(c, ((nb0 = r->rte), &nb0), 0)) break; + } } else { @@@ -1002,19 -723,19 +1011,19 @@@ rt_notify_merged(struct channel *c, ne * done outside of scope of rte_announce(). */ static void - rte_announce(rtable *tab, uint type, net *net, struct rte_storage *new, struct rte_storage *old, + rte_announce(rtable *tab, net *net, struct rte_storage *new, struct rte_storage *old, struct rte_storage *new_best, struct rte_storage *old_best) { - if (!new || !rte_is_valid(&new->rte)) + if (!rte_is_valid(new)) new = NULL; - if (!old || !rte_is_valid(&old->rte)) + if (!rte_is_valid(old)) old = NULL; - if (!new_best || !rte_is_valid(&new_best->rte)) + if (!rte_is_valid(new_best)) new_best = NULL; - if (!old_best || !rte_is_valid(&old_best->rte)) + if (!rte_is_valid(old_best)) old_best = NULL; if (!new && !old && !new_best && !old_best)