]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Descope dest and gateway when copying routes. Set RTA_IFP and RTA_IFA when changing...
authorRoy Marples <roy@marples.name>
Wed, 6 Apr 2016 18:49:13 +0000 (18:49 +0000)
committerRoy Marples <roy@marples.name>
Wed, 6 Apr 2016 18:49:13 +0000 (18:49 +0000)
if-bsd.c

index 8389d4aebba8dcf69040c58f62e100f80512f50a..aa7e89ae1caffbc7fdafeb1299103adcff1084c7 100644 (file)
--- a/if-bsd.c
+++ b/if-bsd.c
@@ -878,6 +878,7 @@ if_copyrt6(struct dhcpcd_ctx *ctx, struct rt6 *rt, struct rt_msghdr *rtm)
        memset(rt, 0, sizeof(*rt));
        rt->flags = (unsigned int)rtm->rtm_flags;
        COPYOUT6(rt->dest, rti_info[RTAX_DST]);
+       DESCOPE(&rt->dest);
        if (rtm->rtm_addrs & RTA_NETMASK) {
                /*
                 * We need to zero out the struct beyond sin6_len and
@@ -931,6 +932,7 @@ if_copyrt6(struct dhcpcd_ctx *ctx, struct rt6 *rt, struct rt_msghdr *rtm)
        } else
                ipv6_mask(&rt->net, 128);
        COPYOUT6(rt->gate, rti_info[RTAX_GATEWAY]);
+       DESCOPE(&rt->gate);
        rt->mtu = (unsigned int)rtm->rtm_rmx.rmx_mtu;
 
        if (rtm->rtm_index)
@@ -1037,7 +1039,8 @@ if_route6(unsigned char cmd, const struct rt6 *rt)
 
        if (cmd == RTM_ADD)
                rtm.hdr.rtm_addrs |= RTA_GATEWAY;
-       if (cmd == RTM_ADD && !(rtm.hdr.rtm_flags & RTF_REJECT))
+       if ((cmd == RTM_ADD || cmd == RTM_CHANGE)
+           && !(rtm.hdr.rtm_flags & RTF_REJECT))
                rtm.hdr.rtm_addrs |= RTA_IFP | RTA_IFA;
 
        ADDADDR(&rt->dest);