summaryrefslogtreecommitdiff
path: root/src/SocketCore.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-20 21:53:48 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-20 21:53:48 +0900
commit3c73b6e76746e03f21ef401f17180a296b4a66d3 (patch)
tree80f001ff6de4d14ff853cfb4f1bc58a4332b9f51 /src/SocketCore.cc
parentaf46293ef93a056bcd06f4b8f973fe5aa395d20f (diff)
Eliminated inet_ntoa and inet_ntop. Use getnameinfo() instead.
Diffstat (limited to 'src/SocketCore.cc')
-rw-r--r--src/SocketCore.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc
index bd724240..f6ba3f35 100644
--- a/src/SocketCore.cc
+++ b/src/SocketCore.cc
@@ -1237,4 +1237,27 @@ int callGetaddrinfo
return getaddrinfo(host, service, &hints, resPtr);
}
+int inetNtop(int af, const void* src, char* dst, socklen_t size)
+{
+ int s;
+ if(af == AF_INET) {
+ sockaddr_in sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sin_family = AF_INET;
+ memcpy(&sa.sin_addr, src, sizeof(in_addr));
+ s = getnameinfo(reinterpret_cast<const sockaddr*>(&sa), sizeof(sa),
+ dst, size, 0, 0, NI_NUMERICHOST);
+ } else if(af == AF_INET6) {
+ sockaddr_in6 sa;
+ memset(&sa, 0, sizeof(sa));
+ sa.sin6_family = AF_INET6;
+ memcpy(&sa.sin6_addr, src, sizeof(in6_addr));
+ s = getnameinfo(reinterpret_cast<const sockaddr*>(&sa), sizeof(sa),
+ dst, size, 0, 0, NI_NUMERICHOST);
+ } else {
+ s = EAI_FAMILY;
+ }
+ return s;
+}
+
} // namespace aria2