Add some utilities to IPSockAddr

These utilities help construct IPSockAddr and are used in
DnsResolver.

Bug: 130686826
Test: built, flashed, rebooted
Test: atest passed
Change-Id: I032d78f96e5d87d918a6ada976c770c73879d38c
diff --git a/libnetdutils/include/netdutils/InternetAddresses.h b/libnetdutils/include/netdutils/InternetAddresses.h
index 472ac89..e817b78 100644
--- a/libnetdutils/include/netdutils/InternetAddresses.h
+++ b/libnetdutils/include/netdutils/InternetAddresses.h
@@ -242,6 +242,23 @@
   public:
     // TODO: static forString
 
+    static IPSockAddr toIPSockAddr(const std::string& repr, in_port_t port) {
+        return IPSockAddr(IPAddress::forString(repr), port);
+    }
+    static IPSockAddr toIPSockAddr(const sockaddr& sa) {
+        switch (sa.sa_family) {
+            case AF_INET:
+                return IPSockAddr(*reinterpret_cast<const sockaddr_in*>(&sa));
+            case AF_INET6:
+                return IPSockAddr(*reinterpret_cast<const sockaddr_in6*>(&sa));
+            default:
+                return IPSockAddr();
+        }
+    }
+    static IPSockAddr toIPSockAddr(const sockaddr_storage& ss) {
+        return toIPSockAddr(*reinterpret_cast<const sockaddr*>(&ss));
+    }
+
     IPSockAddr() = default;
     IPSockAddr(const IPSockAddr&) = default;
     IPSockAddr(IPSockAddr&&) = default;