Commit 4e8f8afc authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

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.
parent c1632ad0
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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;