summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nest/rt-table.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index 9ce52428..9dcbda05 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -678,8 +678,18 @@ rt_notify_accepted(struct channel *c, net *net, rte *new_changed, rte *old_chang
*
* - We found new_best the same as new_changed, therefore it cannot
* be old_best and we have to continue search for old_best.
+ *
+ * There is also a hack to ensure consistency in case of changed filters.
+ * It does not find the proper old_best, just selects a non-NULL route.
*/
+ /* Hack for changed filters */
+ if (old_changed && (old_changed->lastmod <= c->last_tx_filter_change))
+ {
+ old_best = old_changed;
+ goto found;
+ }
+
/* First case */
if (old_meet)
if (old_best = export_filter(c, old_changed, &old_free, 1))