diff options
| author | David Härdeman | 2025-11-18 07:55:41 +0000 |
|---|---|---|
| committer | Álvaro Fernández Rojas | 2025-11-27 07:24:02 +0000 |
| commit | fca3fee38ea48843f277e26624e9555d8b74edc5 (patch) | |
| tree | 407da42e5e25769a76c7cc919f266d46aa3a15d6 | |
| parent | e8022eebc8a7d4c85d763e2121b98d98989e9263 (diff) | |
| download | odhcpd-fca3fee38ea48843f277e26624e9555d8b74edc5.tar.gz | |
netlink: add netmask for IPv4
Add a netmask member to struct odhcpd_ipaddr, this is mostly for
convenience.
Signed-off-by: David Härdeman <david@hardeman.nu>
Link: https://github.com/openwrt/odhcpd/pull/320
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
| -rw-r--r-- | src/netlink.c | 3 | ||||
| -rw-r--r-- | src/odhcpd.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/netlink.c b/src/netlink.c index d09e3f8..c07a9e4 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -571,6 +571,9 @@ static int cb_addr_valid(struct nl_msg *msg, void *arg) memset(&oaddrs[ctxt->ret], 0, sizeof(oaddrs[ctxt->ret])); oaddrs[ctxt->ret].prefix_len = ifa->ifa_prefixlen; + if (ifa->ifa_family == AF_INET) + oaddrs[ctxt->ret].netmask = htonl(~((1U << (32 - ifa->ifa_prefixlen)) - 1)); + nla_memcpy(&oaddrs[ctxt->ret].addr, nla_addr, sizeof(oaddrs[ctxt->ret].addr)); if (nla[IFA_BROADCAST]) diff --git a/src/odhcpd.h b/src/odhcpd.h index e708f34..88135f1 100644 --- a/src/odhcpd.h +++ b/src/odhcpd.h @@ -176,6 +176,7 @@ struct odhcpd_ipaddr { /* IPv4 only */ struct { struct in_addr broadcast; + in_addr_t netmask; }; }; }; |