]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3694] New convenience functions added to IOAddress.
authorMarcin Siodelski <marcin@isc.org>
Mon, 23 Feb 2015 21:24:07 +0000 (22:24 +0100)
committerMarcin Siodelski <marcin@isc.org>
Mon, 23 Feb 2015 21:24:07 +0000 (22:24 +0100)
src/lib/asiolink/io_address.h
src/lib/asiolink/tests/io_address_unittest.cc

index 84bbe09e9b582af96a6cd6a366ce57a3a985c7a3..a851a8fdbaa512c5dbd8cd05b755eaade9f6dbe1 100644 (file)
@@ -103,6 +103,21 @@ public:
         return (asio_address_.is_v4());
     }
 
+    /// \brief Convenience function to check if it is an IPv4 zero address.
+    ///
+    /// \return true if the address is the zero IPv4 address.
+    bool isV4Zero() const {
+        return (equals(IPV4_ZERO_ADDRESS()));
+    }
+
+    /// \brief Convenience function to check if it is an IPv4 broadcast
+    ///        address.
+    ///
+    /// \return true if the address is the broadcast IPv4 address.
+    bool isV4Bcast() const {
+        return (equals(IPV4_BCAST_ADDRESS()));
+    }
+
     /// \brief Convenience function to check for an IPv6 address
     ///
     /// \return true if the address is a V6 address
@@ -110,6 +125,13 @@ public:
         return (asio_address_.is_v6());
     }
 
+    /// \brief Convenience function to check if it is an IPv4 zero address.
+    ///
+    /// \return true if the address is the zero IPv4 address.
+    bool isV6Zero() const {
+        return (equals(IPV6_ZERO_ADDRESS()));
+    }
+
     /// \brief checks whether and address is IPv6 and is link-local
     ///
     /// \return true if the address is IPv6 link-local, false otherwise
index 8050952a5f88de07e26ba70d32ddd18816106512..ba9723561c61dcbf6be2d152a2da89037e4dfc9b 100644 (file)
@@ -119,6 +119,22 @@ TEST(IOAddressTest, isV4) {
     EXPECT_FALSE(address6.isV4());
 }
 
+TEST(IOAddressTest, isV4Zero) {
+    const IOAddress address_zero("0.0.0.0");
+    const IOAddress address_non_zero("192.0.2.3");
+
+    EXPECT_TRUE(address_zero.isV4Zero());
+    EXPECT_FALSE(address_non_zero.isV4Zero());
+}
+
+TEST(IOAddressTest, isV4Bcast) {
+    const IOAddress address_bcast("255.255.255.255");
+    const IOAddress address_non_bcast("10.2.3.4");
+
+    EXPECT_TRUE(address_bcast.isV4Bcast());
+    EXPECT_FALSE(address_non_bcast.isV4Bcast());
+}
+
 TEST(IOAddressTest, isV6) {
     const IOAddress address4("192.0.2.1");
     const IOAddress address6("2001:db8:1::dead:beef");
@@ -127,6 +143,14 @@ TEST(IOAddressTest, isV6) {
     EXPECT_TRUE(address6.isV6());
 }
 
+TEST(IOAddressTest, isV6Zero) {
+    const IOAddress address_zero("::");
+    const IOAddress address_non_zero("0.0.0.0");
+
+    EXPECT_TRUE(address_zero.isV6Zero());
+    EXPECT_FALSE(address_non_zero.isV6Zero());
+}
+
 TEST(IOAddressTest, uint32) {
     IOAddress addr1("192.0.2.5");