From c1d9c355dbd38337ad6cb5f737053e6b79d97c61 Mon Sep 17 00:00:00 2001 From: Jan Maria Matejka Date: Fri, 14 Dec 2018 16:10:19 +0100 Subject: [PATCH] Nest: Don't make tmp_attr before preexport is called --- nest/rt-table.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/nest/rt-table.c b/nest/rt-table.c index ae4bb74d..1cb8d2a1 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -405,8 +405,6 @@ export_filter_(struct channel *c, rte *rt0, rte **rt_free, linpool *pool, int si rt = rt0; *rt_free = NULL; - rte_make_tmp_attrs(&rt, pool); - v = p->preexport ? p->preexport(p, &rt, pool) : 0; if (v < 0) { @@ -425,6 +423,8 @@ export_filter_(struct channel *c, rte *rt0, rte **rt_free, linpool *pool, int si goto accept; } + rte_make_tmp_attrs(&rt, pool); + v = filter && ((filter == FILTER_REJECT) || (f_run(filter, &rt, pool, (silent ? FF_SILENT : 0)) > F_ACCEPT)); @@ -1477,12 +1477,14 @@ rt_examine(rtable *t, net_addr *a, struct proto *p, struct filter *filter) rte_update_lock(); /* Rest is stripped down export_filter() */ - rte_make_tmp_attrs(&rt, rte_update_pool); int v = p->preexport ? p->preexport(p, &rt, rte_update_pool) : 0; if (v == RIC_PROCESS) + { + rte_make_tmp_attrs(&rt, rte_update_pool); v = (f_run(filter, &rt, rte_update_pool, FF_SILENT) <= F_ACCEPT); + } - /* Discard temporary rte */ + /* Discard temporary rte */ if (rt != n->routes) rte_free(rt);