summaryrefslogtreecommitdiff
path: root/nest
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2023-03-08 21:38:18 +0100
committerMaria Matejka <mq@ucw.cz>2023-04-04 17:00:58 +0200
commit97d2875e999487bfe91f16c77c409ac0080541d3 (patch)
treeda69c481133162c2c7621095ba04ca49aa77b880 /nest
parentaa5fc3b99d9bada123cb4b7030fa0c8ba5fae2ea (diff)
Fixed bad filter re-evaluation with import table if filtered->accepted
The import table feed wasn't resetting the table-specific route values like REF_FILTERED and thus made the route look like filtered even though it should have been re-evaluated as accepted.
Diffstat (limited to 'nest')
-rw-r--r--nest/proto.c3
-rw-r--r--nest/rt-table.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/nest/proto.c b/nest/proto.c
index e37bc93a..6c6d4ed3 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -657,7 +657,10 @@ channel_reload_stopped(struct rt_export_request *req)
/* Restart reload */
if (c->reload_pending)
+ {
+ c->reload_pending = 0;
channel_request_reload(c);
+ }
if (c->channel_state != CS_UP)
channel_check_stopped(c);
diff --git a/nest/rt-table.c b/nest/rt-table.c
index 3428c122..218fcbe7 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -4406,8 +4406,10 @@ void channel_reload_export_bulk(struct rt_export_request *req, const net_addr *n
for (uint i=0; i<count; i++)
if (feed[i]->sender == c->in_req.hook)
{
+ /* Strip the table-specific information */
+ rte new = rte_init_from(feed[i]);
+
/* Strip the later attribute layers */
- rte new = *feed[i];
while (new.attrs->next)
new.attrs = new.attrs->next;