-#ifdef HAVE_GETADDRINFO
-const char *
-inet_ntop(int af, const void *src, char *dst, socklen_t len)
-{
- struct sockaddr *sa;
- struct sockaddr_in sin;
- struct sockaddr_in6 sin6;
- size_t salen;
-
- if (af == AF_INET) {
- memset(&sin, 0, sizeof(sin));
- sin.sin_family = af;
- memcpy(&sin.sin_addr, src, sizeof(sin.sin_addr));
- sa = (struct sockaddr *)&sin;
- salen = sizeof(sin);
- } else if (af == AF_INET6) {
- memset(&sin6, 0, sizeof(sin6));
- sin6.sin6_family = af;
- memcpy(&sin6.sin6_addr, src, sizeof(sin6.sin6_addr));
- sa = (struct sockaddr *)&sin6;
- salen = sizeof(sin6);
- } else {
- WSASetLastError(WSAEAFNOSUPPORT);
- w32_set_winsock_errno();
- return NULL;
- }
-
- if (getnameinfo(sa, salen, dst, len, NULL, 0, NI_NUMERICHOST)) {
- WSASetLastError(WSAEAFNOSUPPORT);
- w32_set_winsock_errno();
- return NULL;
- }
-
- return dst;
-}
-#endif
-