aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-03-06 10:09:10 +0100
committerMax Kellermann <max@duempel.org>2009-03-06 10:09:10 +0100
commit4c3ce9ef1cfb2125a7f8efec4735cc0181cb5b75 (patch)
tree46d9824b7b7db8cc9dcc91813002234b860c55c7
parent38ead091f9b80bb325a8042688031beb91fbad02 (diff)
downloadmpd-4c3ce9ef1cfb2125a7f8efec4735cc0181cb5b75.tar.gz
mpd-4c3ce9ef1cfb2125a7f8efec4735cc0181cb5b75.tar.xz
mpd-4c3ce9ef1cfb2125a7f8efec4735cc0181cb5b75.zip
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.
-rw-r--r--src/socket_util.c4
1 files 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" */