mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 01:31:55 +00:00
Allows importing 'onlink' routes.
This commit is contained in:
parent
4cdd078453
commit
bff74c7aa3
@ -682,13 +682,29 @@ nl_parse_route(struct nlmsghdr *h, int scan)
|
|||||||
ra.dest = RTD_ROUTER;
|
ra.dest = RTD_ROUTER;
|
||||||
memcpy(&ra.gw, RTA_DATA(a[RTA_GATEWAY]), sizeof(ra.gw));
|
memcpy(&ra.gw, RTA_DATA(a[RTA_GATEWAY]), sizeof(ra.gw));
|
||||||
ipa_ntoh(ra.gw);
|
ipa_ntoh(ra.gw);
|
||||||
ng = neigh_find(&p->p, &ra.gw, 0);
|
|
||||||
if (ng && ng->scope)
|
if (i->rtm_flags & RTNH_F_ONLINK)
|
||||||
ra.iface = ng->iface;
|
{
|
||||||
|
/* route with 'onlink' attribute */
|
||||||
|
ra.iface = if_find_by_index(oif);
|
||||||
|
if (ra.iface == NULL)
|
||||||
|
{
|
||||||
|
log(L_WARN "Kernel told us to use unknown interface %u for %I/%d",
|
||||||
|
oif, net->n.prefix, net->n.pxlen);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
|
/* standard route */
|
||||||
return;
|
ng = neigh_find(&p->p, &ra.gw, 0);
|
||||||
|
if (ng && ng->scope)
|
||||||
|
ra.iface = ng->iface;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log(L_WARN "Kernel told us to use non-neighbor %I for %I/%d", ra.gw, net->n.prefix, net->n.pxlen);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user