util: Collapse toCidr functions
This collapses the v4/v6 Cidr conversion function into a single routine.
It also removes multi-instruction instrinsics like popcnt, and instead
only uses ctz / clz when needed.
Change-Id: I3fecec9b050617d2556488a5d0c007df860a080b
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/test_util.cpp b/test/test_util.cpp
index 4673e51..9b61c64 100644
--- a/test/test_util.cpp
+++ b/test/test_util.cpp
@@ -132,6 +132,10 @@
uint8_t prefix = toCidr(AF_INET, mask);
EXPECT_EQ(prefix, 24);
+ mask = "255.255.255.255";
+ prefix = toCidr(AF_INET, mask);
+ EXPECT_EQ(prefix, 32);
+
mask = "255.255.0.0";
prefix = toCidr(AF_INET, mask);
EXPECT_EQ(prefix, 16);
@@ -156,6 +160,10 @@
uint8_t prefix = toCidr(AF_INET6, mask);
EXPECT_EQ(prefix, 32);
+ mask = "::";
+ prefix = toCidr(AF_INET6, mask);
+ EXPECT_EQ(prefix, 0);
+
mask = "ffff:ffff:ffff::";
prefix = toCidr(AF_INET6, mask);
EXPECT_EQ(prefix, 48);
@@ -193,10 +201,6 @@
prefix = toCidr(AF_INET6, mask);
EXPECT_EQ(prefix, 0);
- mask = "::";
- prefix = toCidr(AF_INET6, mask);
- EXPECT_EQ(prefix, 0);
-
mask = ":";
prefix = toCidr(AF_INET6, mask);
EXPECT_EQ(prefix, 0);