]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Nest: Don't make tmp_attr before preexport is called
authorJan Maria Matejka <mq@ucw.cz>
Fri, 14 Dec 2018 15:10:19 +0000 (16:10 +0100)
committerMaria Matejka <mq@ucw.cz>
Thu, 20 Dec 2018 12:19:49 +0000 (13:19 +0100)
nest/rt-table.c

index ae4bb74d1b536c20daabaadc2cc047192add65d8..1cb8d2a179b40df1cbd2c8baa1aacf0b537bd15f 100644 (file)
@@ -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);