From 4c3ce9ef1cfb2125a7f8efec4735cc0181cb5b75 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 6 Mar 2009 10:09:10 +0100 Subject: [PATCH] socket_util: check if IN6_IS_ADDR_V4MAPPED is defined On some systems, the macro IN6_IS_ADDR_V4MAPPED() is not available. Don't try to convert IPv6 to their IPV4 equivalents in this case. --- src/socket_util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/socket_util.c b/src/socket_util.c index 0fea281f0..0b38a1468 100644 --- a/src/socket_util.c +++ b/src/socket_util.c @@ -33,14 +33,14 @@ char * sockaddr_to_string(const struct sockaddr *sa, size_t length, GError **error) { -#ifdef HAVE_IPV6 +#if defined(HAVE_IPV6) && defined(IN6_IS_ADDR_V4MAPPED) const struct sockaddr_in6 *a6 = (const struct sockaddr_in6 *)sa; struct sockaddr_in a4; #endif int ret; char host[NI_MAXHOST], serv[NI_MAXSERV]; -#ifdef HAVE_IPV6 +#if defined(HAVE_IPV6) && defined(IN6_IS_ADDR_V4MAPPED) if (sa->sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&a6->sin6_addr)) { /* convert "::ffff:127.0.0.1" to "127.0.0.1" */