Commit 6fc66ca7 authored by Marc Celani's avatar Marc Celani Committed by Sara Golemon

IPAddress::empty()

Summary: Checks if IPAddress has not been initialized.

Test Plan: unit test

Reviewed By: tudorb@fb.com

Subscribers: tudorb

FB internal diff: D1459525
parent a8307a9e
...@@ -251,6 +251,12 @@ class IPAddress : boost::totally_ordered<IPAddress> { ...@@ -251,6 +251,12 @@ class IPAddress : boost::totally_ordered<IPAddress> {
return isV6() && asV6().isIPv4Mapped(); return isV6() && asV6().isIPv4Mapped();
} }
// @return true if address is uninitialized
bool empty() const { return (family_ == AF_UNSPEC); }
// @return true if address is initialized
explicit operator bool() { return !empty(); }
// @return true if this is an IPAddressV4 instance // @return true if this is an IPAddressV4 instance
bool isV4() const { return (family_ == AF_INET); } bool isV4() const { return (family_ == AF_INET); }
......
...@@ -31,14 +31,20 @@ TEST(IPAddress, CodeExample) { ...@@ -31,14 +31,20 @@ TEST(IPAddress, CodeExample) {
EXPECT_EQ(4, sizeof(IPAddressV4)); EXPECT_EQ(4, sizeof(IPAddressV4));
EXPECT_EQ(16, sizeof(IPAddressV6)); EXPECT_EQ(16, sizeof(IPAddressV6));
EXPECT_EQ(20, sizeof(IPAddress)); EXPECT_EQ(20, sizeof(IPAddress));
IPAddress uninitaddr;
IPAddress v4addr("192.0.2.129"); IPAddress v4addr("192.0.2.129");
IPAddress v6map("::ffff:192.0.2.129"); IPAddress v6map("::ffff:192.0.2.129");
ASSERT_TRUE(uninitaddr.empty());
ASSERT_FALSE(v4addr.empty());
ASSERT_FALSE(v6map.empty());
EXPECT_TRUE(v4addr.inSubnet("192.0.2.0/24")); EXPECT_TRUE(v4addr.inSubnet("192.0.2.0/24"));
EXPECT_TRUE(v4addr.inSubnet(IPAddress("192.0.2.0"), 24)); EXPECT_TRUE(v4addr.inSubnet(IPAddress("192.0.2.0"), 24));
EXPECT_TRUE(v4addr.inSubnet("192.0.2.128/30")); EXPECT_TRUE(v4addr.inSubnet("192.0.2.128/30"));
EXPECT_FALSE(v4addr.inSubnet("192.0.2.128/32")); EXPECT_FALSE(v4addr.inSubnet("192.0.2.128/32"));
EXPECT_EQ(2164392128, v4addr.asV4().toLong()); EXPECT_EQ(2164392128, v4addr.asV4().toLong());
EXPECT_EQ(3221226113, v4addr.asV4().toLongHBO()); EXPECT_EQ(3221226113, v4addr.asV4().toLongHBO());
ASSERT_FALSE(uninitaddr.isV4());
ASSERT_FALSE(uninitaddr.isV6());
ASSERT_TRUE(v4addr.isV4()); ASSERT_TRUE(v4addr.isV4());
ASSERT_TRUE(v6map.isV6()); ASSERT_TRUE(v6map.isV6());
EXPECT_TRUE(v4addr == v6map); EXPECT_TRUE(v4addr == v6map);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment