changeset 2449:90584a833678 draft

Support IFA_F_NOPREFIXROUTE on Linux.
author Roy Marples <roy@marples.name>
date Mon, 28 Apr 2014 23:56:21 +0000
parents b366513667c5
children d64ad6b8a38a
files if-linux.c
diffstat 1 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/if-linux.c	Mon Apr 28 23:13:47 2014 +0000
+++ b/if-linux.c	Mon Apr 28 23:56:21 2014 +0000
@@ -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 @@
 	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 @@
 		    &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;