On 30 April 2018 22:32:18 CEST, Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Mon, Apr 30, 2018 at 05:15:18PM +0200, Toke Høiland-Jørgensen wrote:
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).
Hi
I don't see the problem. Condition (e->router_id == p->router_id) means that the router propagates a locally originated route for given prefix. Even in this case it is necessary to select best incoming route (for the same prefix) and propagate it to nest. Then nest decides (based on filters, priority) whether received route is better than locally originated route. If so, best incoming route is propagated back to Babel instead of locally originated one (and also to other protocols including kernel routing table) and is announced by Babel further. Otherwise, nothing happens (locally originated is still selected as best and announced by Babel).
Hmm, it may be that I was just treating a symptom. I'll look at it again and possibly return with another patch :) -Toke