summaryrefslogtreecommitdiffstats
path: root/libnetdutils/include
diff options
context:
space:
mode:
authorMike Yu <yumike@google.com>2019-10-16 17:22:37 +0800
committerMike Yu <yumike@google.com>2019-10-16 19:58:26 +0800
commit2f35dc8b1de87ad5180628902343afc092641e52 (patch)
tree459bf66b5be804f47bce5cd8bff9f057ec6e5741 /libnetdutils/include
parent485a477dfe5ad0cbfea17c9f94b01364237a0732 (diff)
downloadplatform_system_netd-2f35dc8b1de87ad5180628902343afc092641e52.tar.gz
platform_system_netd-2f35dc8b1de87ad5180628902343afc092641e52.tar.bz2
platform_system_netd-2f35dc8b1de87ad5180628902343afc092641e52.zip
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
Diffstat (limited to 'libnetdutils/include')
-rw-r--r--libnetdutils/include/netdutils/InternetAddresses.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/libnetdutils/include/netdutils/InternetAddresses.h b/libnetdutils/include/netdutils/InternetAddresses.h
index 472ac8946..e817b780d 100644
--- a/libnetdutils/include/netdutils/InternetAddresses.h
+++ b/libnetdutils/include/netdutils/InternetAddresses.h
@@ -242,6 +242,23 @@ class IPSockAddr {
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;