Mercurial > hg > dhcpcd
changeset 4194:f82c8bde229d draft
linux: use IFA_F_NOPREFIXROUTE for ipv4 addresses
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Sun, 10 Dec 2017 18:49:20 +0000 |
| parents | a1772bc670f0 |
| children | d16878b8acac |
| files | src/if-linux.c |
| diffstat | 1 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-linux.c Fri Dec 08 10:29:49 2017 +0000 +++ b/src/if-linux.c Sun Dec 10 18:49:20 2017 +0000 @@ -1455,6 +1455,9 @@ { 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)); @@ -1477,6 +1480,13 @@ 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;
