--- ./erts/etc/common/inet_gethost.c.orig 2006-05-03 10:01:23.000000000 +0200 +++ ./erts/etc/common/inet_gethost.c 2006-11-21 00:18:41.000000000 +0100 @@ -1622,6 +1622,15 @@ he = NULL; error_num = ERRCODE_NOTSUP; } +#elif defined(HAVE_GETHOSTBYNAME2) + if (proto == PROTO_IPV6) { + he = gethostbyname2((char*)data, AF_INET6); + error_num = he ? 0 : map_netdb_error(h_errno); + } else { + /* Not supported... */ + he = NULL; + error_num = ERRCODE_NOTSUP; + } #else /* Not supported... */ he = NULL; @@ -1665,6 +1674,17 @@ he = NULL; error_num = ERRCODE_NOTSUP; } +#elif defined(HAVE_STRUCT_IN6_ADDR) + if (proto == PROTO_IPV6) { + struct in6_addr ia; + memcpy(ia.s6_addr, data, 16); + he = gethostbyaddr((const char *) &ia, 16, AF_INET6); + error_num = map_netdb_error(h_errno); + } else { + /* Not supported... */ + he = NULL; + error_num = ERRCODE_NOTSUP; + } #else /* Not supported... */ he = NULL; --- ./erts/configure.in.orig 2006-11-20 20:32:47.000000000 +0100 +++ ./erts/configure.in 2006-11-21 00:15:02.000000000 +0100 @@ -1049,7 +1049,8 @@ dnl Check if we have these, in which case we'll try to build dnl inet_gethost with ipv6 support. -AC_CHECK_FUNCS([getipnodebyname getipnodebyaddr]) +AC_CHECK_FUNCS([getipnodebyname getipnodebyaddr gethostbyname2]) +AC_CHECK_TYPES([struct in6_addr],,,[#include]) AC_CHECK_FUNCS([ieee_handler fpsetmask finite isnan isinf res_gethostbyname dlopen \ pread pwrite writev memmove strerror strerror_r strncasecmp \