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@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