From: Ondrej Zajicek (work) Date: Tue, 19 Jul 2016 12:28:53 +0000 (+0200) Subject: Babel: Do not keep an infeasible route as selected X-Git-Tag: v1.6.1~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f673666017bfc9c05c9495ae53bc323b9dc6660;p=thirdparty%2Fbird.git 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 --- diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 67e1d8bef..3b3b98702 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 {