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.
This commit is contained in:
parent
c1632ad0f3
commit
4e8f8afc68
1 changed files with 8 additions and 0 deletions
|
@ -640,6 +640,14 @@ babel_announce_rte(struct babel_proto *p, struct babel_entry *e)
|
||||||
.nh.iface = r->neigh->ifa->iface,
|
.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);
|
rta *a = rta_lookup(&a0);
|
||||||
rte *rte = rte_get_temp(a);
|
rte *rte = rte_get_temp(a);
|
||||||
rte->u.babel.seqno = r->seqno;
|
rte->u.babel.seqno = r->seqno;
|
||||||
|
|
Loading…
Reference in a new issue