summaryrefslogtreecommitdiff
path: root/src/shared/net-util.c
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-01-28 23:23:31 +0100
committerTom Gundersen <teg@jklm.no>2014-01-30 14:30:39 +0100
commit377a218f876507fb8be9c21ef4121fa2576ec317 (patch)
treee5da9ac8c900e9150b752cf0b75f027c748424b5 /src/shared/net-util.c
parenteb0ea358b688a6f83ff305c6b825c61f12b6dcb8 (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.c15
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,