[PATCH 2/3] babel: Short-circuit route selection for routes we originate ourselves

Toke Høiland-Jørgensen toke at toke.dk
Mon Apr 30 17:15:18 CEST 2018


Routes that are originated by this Babel instance doesn't have an entry in
e->selected, which means that the best route selection logic will always
pick another route when an update arrives for the same prefix. This will be
rejected by Bird core, which will cause a nice looping selection
procedure (depending on filters, of course).

To avoid this problem, simply short-circuit the route selection procedure
if the entry has our own router ID set.

Signed-off-by: Toke Høiland-Jørgensen <toke at toke.dk>
---
 proto/babel/babel.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/proto/babel/babel.c b/proto/babel/babel.c
index a8eb5ea8..f7981333 100644
--- a/proto/babel/babel.c
+++ b/proto/babel/babel.c
@@ -727,6 +727,9 @@ babel_select_route(struct babel_proto *p, struct babel_entry *e, struct babel_ro
 {
   struct babel_route *r, *best = e->selected;
 
+  if (e->router_id == p->router_id)
+    return;
+
   /* Shortcut if only non-best was modified */
   if (mod && (mod != best))
   {
-- 
2.17.0



More information about the Bird-users mailing list