]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Babel: Do not keep an infeasible route as selected
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Tue, 19 Jul 2016 12:28:53 +0000 (14:28 +0200)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Tue, 19 Jul 2016 12:28:53 +0000 (14:28 +0200)
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>
proto/babel/babel.c

index 67e1d8befd3bbb61cafefd27c6e4542f98124286..3b3b98702f59ad82d36ea83d16db10fa9763b78c 100644 (file)
@@ -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
     {