diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 87c660d..e9f658a 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -297,7 +297,7 @@
 ObjectPath EthernetInterface::neighbor(std::string ipAddress,
                                        std::string macAddress)
 {
-    if (!isValidIP(AF_INET, ipAddress) && !isValidIP(AF_INET6, ipAddress))
+    if (!isValidIP(ipAddress))
     {
         log<level::ERR>("Not a valid IP address",
                         entry("ADDRESS=%s", ipAddress.c_str()));
@@ -773,8 +773,7 @@
 {
     for (const auto& nameserverip : value)
     {
-        if (!isValidIP(AF_INET, nameserverip) &&
-            !isValidIP(AF_INET6, nameserverip))
+        if (!isValidIP(nameserverip))
         {
             log<level::ERR>("Not a valid IP address"),
                 entry("ADDRESS=%s", nameserverip.c_str());
diff --git a/src/util.cpp b/src/util.cpp
index 7ede99c..b1f4d39 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -189,6 +189,11 @@
     return inet_pton(family, address.c_str(), buf) > 0;
 }
 
+bool isValidIP(stdplus::const_zstring address) noexcept
+{
+    return isValidIP(AF_INET, address) || isValidIP(AF_INET6, address);
+}
+
 bool isValidPrefix(int family, uint8_t prefix)
 {
     return familyVisit(
diff --git a/src/util.hpp b/src/util.hpp
index 52abfb7..16dca64 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -131,6 +131,7 @@
  * @returns true if it is valid otherwise false.
  */
 bool isValidIP(int family, stdplus::const_zstring address) noexcept;
+bool isValidIP(stdplus::const_zstring address) noexcept;
 
 /* @brief checks that the given prefix is valid or not.
  * @param[in] family - IP address family(AF_INET/AF_INET6).
diff --git a/test/test_util.cpp b/test/test_util.cpp
index 712fe98..cfbab77 100644
--- a/test/test_util.cpp
+++ b/test/test_util.cpp
@@ -70,41 +70,32 @@
 
 TEST_F(TestUtil, IpValidation)
 {
-    std::string ipaddress = "0.0.0.0";
-    EXPECT_EQ(true, isValidIP(AF_INET, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET, "0.0.0.0"));
+    EXPECT_TRUE(isValidIP("0.0.0.0"));
 
-    ipaddress = "9.3.185.83";
-    EXPECT_EQ(true, isValidIP(AF_INET, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET, "9.3.185.83"));
 
-    ipaddress = "9.3.185.a";
-    EXPECT_EQ(false, isValidIP(AF_INET, ipaddress));
+    EXPECT_FALSE(isValidIP(AF_INET, "9.3.185.a"));
+    EXPECT_FALSE(isValidIP("9.3.185.a"));
 
-    ipaddress = "9.3.a.83";
-    EXPECT_EQ(false, isValidIP(AF_INET, ipaddress));
+    EXPECT_FALSE(isValidIP(AF_INET, "9.3.a.83"));
 
-    ipaddress = "x.x.x.x";
-    EXPECT_EQ(false, isValidIP(AF_INET, ipaddress));
+    EXPECT_FALSE(isValidIP(AF_INET, "x.x.x.x"));
 
-    ipaddress = "0:0:0:0:0:0:0:0";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "0:0:0:0:0:0:0:0"));
+    EXPECT_TRUE(isValidIP("0:0:0:0:0:0:0:0"));
 
-    ipaddress = "1:0:0:0:0:0:0:8";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "1:0:0:0:0:0:0:8"));
 
-    ipaddress = "1::8";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "1::8"));
 
-    ipaddress = "0:0:0:0:0:FFFF:204.152.189.116";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "0:0:0:0:0:FFFF:204.152.189.116"));
 
-    ipaddress = "::ffff:204.152.189.116";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "::ffff:204.152.189.116"));
 
-    ipaddress = "a:0:0:0:0:FFFF:204.152.189.116";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "a:0:0:0:0:FFFF:204.152.189.116"));
 
-    ipaddress = "1::8";
-    EXPECT_EQ(true, isValidIP(AF_INET6, ipaddress));
+    EXPECT_TRUE(isValidIP(AF_INET6, "1::8"));
 }
 
 TEST_F(TestUtil, PrefixValidation)
