{
struct nlma nlm;
int retval = 0;
+#if defined(IFA_F_NOPREFIXROUTE)
+ uint32_t flags = 0;
+#endif
memset(&nlm, 0, sizeof(nlm));
nlm.hdr.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
add_attr_l(&nlm.hdr, sizeof(nlm), IFA_BROADCAST,
&addr->brd.s_addr, sizeof(addr->brd.s_addr));
+#ifdef IFA_F_NOPREFIXROUTE
+ if (nlm.ifa.ifa_prefixlen < 32)
+ flags |= IFA_F_NOPREFIXROUTE;
+ if (flags)
+ add_attr_32(&nlm.hdr, sizeof(nlm), IFA_FLAGS, flags);
+#endif
+
if (send_netlink(addr->iface->ctx, NULL,
NETLINK_ROUTE, &nlm.hdr, NULL) == -1)
retval = -1;