Ondrej Zajicek <santiago@crfreenet.org> writes:
Also note that unreachable routing entries should not be propagated to core.
This is actually done to satisfy a requirement of the Babel protocol: Temporary blackholing is used to avoid routing loops. Quoting section 3.5.5 of RFC6126: ... Now, if the protocol can't propagate an infeasible route to the core, how do I satisfy this requirement?
Didn't know that. You could propagate the unreachable route in the sense that it will work. But usually it is not a good idea - e.g. some other protocol could have regular routes for the same network, or there could be some covering route.
BTW, the argumentation in 3.5.5 of RFC 6126 seems a bit strange to me. It essentially says that unreachable routes are added to avoid transient routing loops before Babel converges. But transient routing loops until convergence is a common behavior for IGPs (both RIP, OSPF and IS-IS do that), while blackholing may be far less expected behavior, esp. if it is for several minutes, which is far longer time than usually necessary for protocol convergence. It seems more like local policy setting than something which should be part of protocol specification.
Hmm, I think Juliusz is probably better at answering that than I am; added to CC... Juliusz, care to weigh in?
It is true that this part is probably not described anywhere in depth. There are some notes in nest/protocol.h that are not propagated to the documentation. For the rest, you can use the source, but sometimes even the source is 'wrong'.
Will poke around, thanks.
In that case you have always non-NULL babel_iface.iface and you could remove some vestigial code from RIP, like: bif->iface ? bif->iface->name : "(dummy)"
Yeah, have already removed that in some places, but some house cleaning is probably needed :) -Toke