diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-07-19 14:28:53 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-07-19 14:28:53 +0200 |
commit | 0f673666017bfc9c05c9495ae53bc323b9dc6660 (patch) | |
tree | 83b12ce02f96e82f311cbb46b1b4a12abe081fc2 /proto/babel/babel.c | |
parent | 5d6ca220850c615126ea6820f8c05528269feec6 (diff) |
Babel: Do not keep an infeasible route as selected
When a route becomes infeasible it should not be kept as selected; this
is forbidden by section 3.6 of the RFC and prevents subsequent updates
from the same router ID from replacing it.
Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>
Diffstat (limited to 'proto/babel/babel.c')
-rw-r--r-- | proto/babel/babel.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 67e1d8be..3b3b9870 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -565,6 +565,11 @@ babel_select_route(struct babel_entry *e) babel_send_seqno_request(e); babel_announce_rte(p, e); + + /* Section 3.6 of the RFC forbids an infeasible from being selected. This + is cleared after announcing the route to the core to make sure an + unreachable route is propagated first. */ + e->selected_in = NULL; } else { |