]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Support IFA_F_NOPREFIXROUTE on Linux.
authorRoy Marples <roy@marples.name>
Mon, 28 Apr 2014 23:56:21 +0000 (23:56 +0000)
committerRoy Marples <roy@marples.name>
Mon, 28 Apr 2014 23:56:21 +0000 (23:56 +0000)
if-linux.c

index 546be369b026773107fba443cd4728b24b02dc97..ad52bba70c4c57be5d3f0836caf67b976fc1fd5f 100644 (file)
@@ -32,6 +32,7 @@
 #include <sys/ioctl.h>
 #include <sys/param.h>
 
+#include <linux/if_addr.h>
 #include <linux/filter.h>
 #include <linux/if_packet.h>
 #include <linux/netlink.h>
@@ -992,6 +993,9 @@ if_address6(const struct ipv6_addr *ap, int action)
        struct nlma nlm;
        struct ifa_cacheinfo cinfo;
        int retval = 0;
+#ifdef IFA_F_NOPREFIXROUTE
+       uint32_t flags;
+#endif
 
        memset(&nlm, 0, sizeof(nlm));
        nlm.hdr.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
@@ -1018,6 +1022,11 @@ if_address6(const struct ipv6_addr *ap, int action)
                    &cinfo, sizeof(cinfo));
        }
 
+#ifdef IFA_F_NOPREFIXROUTE
+       flags = IFA_F_NOPREFIXROUTE;
+       add_attr_32(&nlm.hdr, sizeof(nlm), IFA_FLAGS, flags);
+#endif
+
        if (send_netlink(ap->iface->ctx, &nlm.hdr) == -1)
                retval = -1;
        return retval;