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 07bb0b12..83f0e713 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -543,8 +543,18 @@ rt_notify_accepted(struct announce_hook *ah, net *net, rte *new_changed, rte *ol
*
* - 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 <= ah->last_out_filter_change))
+ {
+ old_best = old_changed;
+ goto found;
+ }
+
/* First case */
if (old_meet)
if (old_best = export_filter(ah, old_changed, &old_free, NULL, 1))