summaryrefslogtreecommitdiff
path: root/sysdep
diff options
context:
space:
mode:
Diffstat (limited to 'sysdep')
-rw-r--r--sysdep/linux/netlink.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sysdep/linux/netlink.c b/sysdep/linux/netlink.c
index 3443957b..8168d0dc 100644
--- a/sysdep/linux/netlink.c
+++ b/sysdep/linux/netlink.c
@@ -921,11 +921,11 @@ nl_parse_multipath(struct nl_parse_state *s, struct krt_proto *p, const net_addr
rv->gw = rta_get_via(a[RTA_VIA]);
#endif
+ if (nh->rtnh_flags & RTNH_F_ONLINK)
+ rv->flags |= RNF_ONLINK;
+
if (ipa_nonzero(rv->gw))
{
- if (nh->rtnh_flags & RTNH_F_ONLINK)
- rv->flags |= RNF_ONLINK;
-
neighbor *nbr;
nbr = neigh_find(&p->p, rv->gw, rv->iface,
(rv->flags & RNF_ONLINK) ? NEF_ONLINK : 0);
@@ -1812,6 +1812,9 @@ nl_parse_route(struct nl_parse_state *s, struct nlmsghdr *h)
nhad.nh.gw = rta_get_via(a[RTA_VIA]);
#endif
+ if (i->rtm_flags & RTNH_F_ONLINK)
+ nhad.nh.flags |= RNF_ONLINK;
+
if (ipa_nonzero(nhad.nh.gw))
{
/* Silently skip strange 6to4 routes */
@@ -1819,9 +1822,6 @@ nl_parse_route(struct nl_parse_state *s, struct nlmsghdr *h)
if ((i->rtm_family == AF_INET6) && ipa_in_netX(nhad.nh.gw, (net_addr *) &sit))
return;
- if (i->rtm_flags & RTNH_F_ONLINK)
- nhad.nh.flags |= RNF_ONLINK;
-
neighbor *nbr;
nbr = neigh_find(&p->p, nhad.nh.gw, nhad.nh.iface,
(nhad.nh.flags & RNF_ONLINK) ? NEF_ONLINK : 0);