diff options
-rw-r--r-- | sysdep/linux/netlink.c | 12 |
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); |