From: Ondrej Zajicek (work) Date: Tue, 26 May 2020 21:43:13 +0000 (+0200) Subject: Babel: Set onlink flag for IPv4 routes with unreachable next hop X-Git-Tag: v2.0.8~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4e8f8afc68cc7ba09ca42d989e47dbfcb17d2772;p=thirdparty%2Fbird.git Babel: Set onlink flag for IPv4 routes with unreachable next hop If the next hop of a route is not a reachable address, the route should be installed as onlink. This enables a configuration common in mesh networks where the mesh interface is assigned a /32 and babel handles the routing by installing onlink routes. Thanks to Toke Hoiland-Jorgensen for the patch. --- diff --git a/proto/babel/babel.c b/proto/babel/babel.c index ebd5f7cc4..ba98598ba 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -640,6 +640,14 @@ babel_announce_rte(struct babel_proto *p, struct babel_entry *e) .nh.iface = r->neigh->ifa->iface, }; + /* + * If we cannot find a reachable neighbour, set the entry to be onlink. This + * makes it possible to, e.g., assign /32 addresses on a mesh interface and + * have routing work. + */ + if (!neigh_find(&p->p, r->next_hop, r->neigh->ifa->iface, 0)) + a0.nh.flags = RNF_ONLINK; + rta *a = rta_lookup(&a0); rte *rte = rte_get_temp(a); rte->u.babel.seqno = r->seqno;