]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Note that the prior issue was fixed in OpenBSD-5.9
authorRoy Marples <roy@marples.name>
Fri, 5 Aug 2016 12:56:02 +0000 (12:56 +0000)
committerRoy Marples <roy@marples.name>
Fri, 5 Aug 2016 12:56:02 +0000 (12:56 +0000)
if-bsd.c

index 3a91a49d7f3d0f0d77b091005f014c27c6503290..bc47346160d5dce7e8bd4faea9d487b671e2e144 100644 (file)
--- a/if-bsd.c
+++ b/if-bsd.c
@@ -941,6 +941,8 @@ if_address6(unsigned char cmd, const struct ipv6_addr *ia)
        ipv6_mask(&mask, ia->prefix_len);
        ADDADDR(&ifa.ifra_prefixmask, &mask);
 
+#undef ADDADDR
+
        /*
         * Every BSD kernel wants to add the prefix of the address to it's
         * list of RA received prefixes.
@@ -955,7 +957,7 @@ if_address6(unsigned char cmd, const struct ipv6_addr *ia)
         * constantly removing the prefix route dhcpcd is capable of adding
         * in it's absense.
         *
-        * What we can do to mitigate the issue is to add the adress with
+        * What we can do to mitigate the issue is to add the address with
         * infinite lifetimes, so the prefix route will never time out.
         * Once done, we can then set lifetimes on the address and all is good.
         * The downside of this approach is that we need to manually remove
@@ -964,16 +966,19 @@ if_address6(unsigned char cmd, const struct ipv6_addr *ia)
         *
         * This issue is discussed on the NetBSD mailing lists here:
         * http://mail-index.netbsd.org/tech-net/2016/08/05/msg006044.html
+        *
+        * Fixed in OpenBSD-5.9
         */
+#if !(defined(OpenBSD) && OpenBSD >= 201605)
        if (cmd == RTM_NEWADDR && !(ia->flags & IPV6_AF_ADDED)) {
                ifa.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
                ifa.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
                (void)ioctl(priv->pf_inet6_fd, SIOCAIFADDR_IN6, &ifa);
        }
+#endif
 
        ifa.ifra_lifetime.ia6t_vltime = ia->prefix_vltime;
        ifa.ifra_lifetime.ia6t_pltime = ia->prefix_pltime;
-#undef ADDADDR
 
        return ioctl(priv->pf_inet6_fd,
            cmd == RTM_DELADDR ? SIOCDIFADDR_IN6 : SIOCAIFADDR_IN6, &ifa);