summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2019-02-19 16:26:09 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2019-02-19 16:26:09 +0100
commit3a8ca7abbcf6452fa56d0c1c6ddcf7d5bd6876ed (patch)
tree40046aeaee2ed0c54a3bcea9f1edd1c35820e116
parentbf8d7bba9ef3c6d95661f97dc71fa7a6b2cf0b87 (diff)
Nest: Prevent withdraws from propagation back to source protocol (for accepted mode)
Update for one of previous patches, handles the the issue for first-accepted mode of route propagation.
-rw-r--r--nest/rt-table.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index a1900532..85afe838 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -621,7 +621,7 @@ rt_notify_basic(struct channel *c, net *net, rte *new0, rte *old0, int refeed)
static void
rt_notify_accepted(struct channel *c, net *net, rte *new_changed, rte *old_changed, rte *before_old, int feed)
{
- // struct proto *p = c->proto;
+ struct proto *p = c->proto;
rte *r;
rte *new_best = NULL;
@@ -698,7 +698,9 @@ rt_notify_accepted(struct channel *c, net *net, rte *new_changed, rte *old_chang
*/
/* Hack for changed filters */
- if (old_changed && (old_changed->lastmod <= c->last_tx_filter_change))
+ if (old_changed &&
+ (p != old_changed->sender->proto) &&
+ (old_changed->lastmod <= c->last_tx_filter_change))
{
old_best = old_changed;
goto found;