diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-02-19 16:26:09 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-02-19 16:26:09 +0100 |
commit | 3a8ca7abbcf6452fa56d0c1c6ddcf7d5bd6876ed (patch) | |
tree | 40046aeaee2ed0c54a3bcea9f1edd1c35820e116 /nest/rt-table.c | |
parent | bf8d7bba9ef3c6d95661f97dc71fa7a6b2cf0b87 (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.
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r-- | nest/rt-table.c | 6 |
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; |