diff --git a/include/stdplus/net/addr/ip.hpp b/include/stdplus/net/addr/ip.hpp
index 71bb7f6..cac9e71 100644
--- a/include/stdplus/net/addr/ip.hpp
+++ b/include/stdplus/net/addr/ip.hpp
@@ -2,6 +2,7 @@
 #include <netinet/in.h>
 
 #include <stdplus/hash.hpp>
+#include <stdplus/variant.hpp>
 
 #include <algorithm>
 #include <variant>
@@ -69,6 +70,24 @@
     }
 };
 
+namespace detail
+{
+using InAnyAddrV = std::variant<In4Addr, In6Addr>;
+}
+
+struct InAnyAddr : detail::InAnyAddrV
+{
+    constexpr InAnyAddr(in_addr a) noexcept : detail::InAnyAddrV(In4Addr{a}) {}
+    constexpr InAnyAddr(In4Addr a) noexcept : detail::InAnyAddrV(a) {}
+    constexpr InAnyAddr(in6_addr a) noexcept : detail::InAnyAddrV(In6Addr{a}) {}
+    constexpr InAnyAddr(In6Addr a) noexcept : detail::InAnyAddrV(a) {}
+
+    constexpr bool operator==(auto rhs) const noexcept
+    {
+        return variantEqFuzzy(*this, rhs);
+    }
+};
+
 } // namespace stdplus
 
 template <>
@@ -88,3 +107,12 @@
         return stdplus::hashMulti(addr.s6_addr32);
     }
 };
+
+template <>
+struct std::hash<stdplus::InAnyAddr>
+{
+    inline std::size_t operator()(stdplus::InAnyAddr a) const noexcept
+    {
+        return std::hash<stdplus::detail::InAnyAddrV>{}(a);
+    }
+};
diff --git a/test/net/addr/ip.cpp b/test/net/addr/ip.cpp
index 2745626..7d0cace 100644
--- a/test/net/addr/ip.cpp
+++ b/test/net/addr/ip.cpp
@@ -23,4 +23,25 @@
     std::hash<In6Addr>{}(In6Addr{});
 }
 
+TEST(EqualOperator, InAnyAddr)
+{
+    EXPECT_EQ(InAnyAddr(In6Addr{0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                0xff}),
+              (In6Addr{0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff}));
+    EXPECT_NE(InAnyAddr(In6Addr{0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                0xff}),
+              (in_addr{}));
+    EXPECT_EQ((In6Addr{}), InAnyAddr(In6Addr{}));
+    EXPECT_NE((In4Addr{}), InAnyAddr(In6Addr{}));
+    EXPECT_EQ((In4Addr{}), InAnyAddr(In4Addr{}));
+    EXPECT_NE((In6Addr{}), InAnyAddr(In4Addr{}));
+    EXPECT_EQ(InAnyAddr(In6Addr{}), (in6_addr{}));
+    EXPECT_EQ(InAnyAddr(In4Addr{}), (in_addr{}));
+    EXPECT_NE(InAnyAddr(In6Addr{1}), InAnyAddr(In6Addr{}));
+    EXPECT_EQ(InAnyAddr(In6Addr{1}), InAnyAddr(In6Addr{1}));
+
+    std::hash<InAnyAddr>{}(In4Addr{});
+    std::hash<InAnyAddr>{}(In6Addr{});
+}
+
 } // namespace stdplus
