From: Roy Marples Date: Wed, 6 Apr 2016 18:49:13 +0000 (+0000) Subject: Descope dest and gateway when copying routes. Set RTA_IFP and RTA_IFA when changing... X-Git-Tag: v6.10.2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6df707c91e60d8bbc6f09bb63599ff87773930f;p=thirdparty%2Fdhcpcd.git Descope dest and gateway when copying routes. Set RTA_IFP and RTA_IFA when changing routes. --- diff --git a/if-bsd.c b/if-bsd.c index 8389d4ae..aa7e89ae 100644 --- 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);