diff options
author | Tom Gundersen <teg@jklm.no> | 2014-01-28 23:23:31 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-01-30 14:30:39 +0100 |
commit | 377a218f876507fb8be9c21ef4121fa2576ec317 (patch) | |
tree | e5da9ac8c900e9150b752cf0b75f027c748424b5 /src/shared/net-util.c | |
parent | eb0ea358b688a6f83ff305c6b825c61f12b6dcb8 (diff) |
sd-dhcp-client/net-util: make netmask_to_prefixlen generic
This was originally included in the dhcp-client at my request, but it is not
really dhcp-specific and useful outside of it, so let's pull it out.
Diffstat (limited to 'src/shared/net-util.c')
-rw-r--r-- | src/shared/net-util.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/shared/net-util.c b/src/shared/net-util.c index 887dae5125..630be18e56 100644 --- a/src/shared/net-util.c +++ b/src/shared/net-util.c @@ -58,6 +58,21 @@ bool net_match_config(const struct ether_addr *match_mac, return 1; } +unsigned net_netmask_to_prefixlen(const struct in_addr *addr) { + unsigned len = 0; + uint32_t mask; + + assert(addr); + + mask = be32toh(addr->s_addr); + while (mask) { + len++; + mask = mask << 1; + } + + return len; +} + int config_parse_ifname(const char *unit, const char *filename, unsigned line, |