From a72881406694abf160d5877540a9a2cfcdbeb557 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Mon, 23 Feb 2015 22:24:07 +0100 Subject: [PATCH] [3694] New convenience functions added to IOAddress. --- src/lib/asiolink/io_address.h | 22 +++++++++++++++++ src/lib/asiolink/tests/io_address_unittest.cc | 24 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/lib/asiolink/io_address.h b/src/lib/asiolink/io_address.h index 84bbe09e9b..a851a8fdba 100644 --- a/src/lib/asiolink/io_address.h +++ b/src/lib/asiolink/io_address.h @@ -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 diff --git a/src/lib/asiolink/tests/io_address_unittest.cc b/src/lib/asiolink/tests/io_address_unittest.cc index 8050952a5f..ba9723561c 100644 --- a/src/lib/asiolink/tests/io_address_unittest.cc +++ b/src/lib/asiolink/tests/io_address_unittest.cc @@ -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"); -- 2.47.3