diff --git a/common/configure.ac b/common/configure.ac
index c07b7fd..ab7829b 100644
--- a/common/configure.ac
+++ b/common/configure.ac
@@ -85,11 +85,12 @@
 AM_CONDITIONAL([INCLUDED_JPEG], [ test "x$INCLUDED_JPEG" = xyes ])
 AC_CONFIG_SUBDIRS([jpeg])
 
-AC_CHECK_FUNCS_ONCE([vsnprintf snprintf strcasecmp strncasecmp getaddrinfo])
+AC_CHECK_FUNCS_ONCE([vsnprintf snprintf strcasecmp strncasecmp])
 
-AC_CHECK_TYPES([socklen_t],
-	[AC_DEFINE([VNC_SOCKLEN_T], [socklen_t], [Use correct size])],
-	[AC_DEFINE([VNC_SOCKLEN_T], [int])])
+# IPv6 related functions
+AC_CHECK_FUNCS_ONCE([inet_ntop getaddrinfo])
+
+AC_CHECK_TYPES([socklen_t])
 
 AC_CHECK_HEADERS([sys/select.h])
 
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index 4a37d01..7ceff0b 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -24,9 +24,6 @@
 //#include <io.h>
 #include <winsock2.h>
 #define errorNumber WSAGetLastError()
-#ifndef VNC_SOCKLEN_T
-#define VNC_SOCKLEN_T int
-#endif
 #else
 #define errorNumber errno
 #define closesocket close
@@ -45,6 +42,7 @@
 
 #include <stdlib.h>
 #include <network/TcpSocket.h>
+#include <os/net.h>
 #include <rfb/util.h>
 #include <rfb/LogWriter.h>
 
@@ -124,7 +122,7 @@
 {
   int sock, err, result, family;
   vnc_sockaddr_t sa;
-  VNC_SOCKLEN_T salen;
+  socklen_t salen;
 #ifdef HAVE_GETADDRINFO
   struct addrinfo *ai, *current, hints;
 #endif
@@ -233,7 +231,7 @@
 char* TcpSocket::getMyAddress() {
   struct sockaddr_in  info;
   struct in_addr    addr;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
 
   getsockname(getFd(), (struct sockaddr *)&info, &info_size);
   memcpy(&addr, &info.sin_addr, sizeof(addr));
@@ -263,7 +261,7 @@
 char* TcpSocket::getPeerAddress() {
   struct sockaddr_in  info;
   struct in_addr    addr;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
 
   getpeername(getFd(), (struct sockaddr *)&info, &info_size);
   memcpy(&addr, &info.sin_addr, sizeof(addr));
@@ -278,7 +276,7 @@
 
 int TcpSocket::getPeerPort() {
   struct sockaddr_in  info;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
 
   getpeername(getFd(), (struct sockaddr *)&info, &info_size);
   return ntohs(info.sin_port);
@@ -296,7 +294,7 @@
 
 bool TcpSocket::sameMachine() {
   struct sockaddr_in peeraddr, myaddr;
-  VNC_SOCKLEN_T addrlen = sizeof(struct sockaddr_in);
+  socklen_t addrlen = sizeof(struct sockaddr_in);
 
   getpeername(getFd(), (struct sockaddr *)&peeraddr, &addrlen);
   getsockname(getFd(), (struct sockaddr *)&myaddr, &addrlen);
@@ -324,21 +322,21 @@
 bool TcpSocket::isSocket(int sock)
 {
   struct sockaddr_in info;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
   return getsockname(sock, (struct sockaddr *)&info, &info_size) >= 0;
 }
 
 bool TcpSocket::isConnected(int sock)
 {
   struct sockaddr_in info;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
   return getpeername(sock, (struct sockaddr *)&info, &info_size) >= 0;
 }
 
 int TcpSocket::getSockPort(int sock)
 {
   struct sockaddr_in info;
-  VNC_SOCKLEN_T info_size = sizeof(info);
+  socklen_t info_size = sizeof(info);
   if (getsockname(sock, (struct sockaddr *)&info, &info_size) < 0)
     return 0;
   return ntohs(info.sin_port);
diff --git a/common/os/Makefile.am b/common/os/Makefile.am
index 23e4dfb..3d89260 100644
--- a/common/os/Makefile.am
+++ b/common/os/Makefile.am
@@ -1,5 +1,5 @@
 noinst_LTLIBRARIES = libos.la
 
-HDRS = print.h
+HDRS = net.h print.h
 
-libos_la_SOURCES = $(HDRS) print.c
+libos_la_SOURCES = $(HDRS) print.c net.c
diff --git a/common/os/net.c b/common/os/net.c
new file mode 100644
index 0000000..50ce868
--- /dev/null
+++ b/common/os/net.c
@@ -0,0 +1,52 @@
+/* Copyright (C) 2008 TightVNC Team.  All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+#ifdef HAVE_COMMON_CONFIG_H
+#include <common-config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef WIN32
+#include <winsock2.h>
+#else
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#endif
+
+#include <os/net.h>
+
+
+#ifndef HAVE_INET_NTOP
+const char *tight_inet_ntop(int af, const void *src, char *dst,
+			    socklen_t size) {
+	char *tempstr;
+
+	/* Catch bugs - we should not use IPv6 if we don't have inet_ntop */
+	if (af != AF_INET)
+		abort();
+
+	/* inet_ntoa never fails */
+	tempstr = inet_ntoa(*(struct in_addr *)(src));
+	memcpy(dst, tempstr, strlen(tempstr) + 1);
+
+	return dst;
+}
+#endif
diff --git a/common/os/net.h b/common/os/net.h
new file mode 100644
index 0000000..7247103
--- /dev/null
+++ b/common/os/net.h
@@ -0,0 +1,54 @@
+/* Copyright (C) 2008 TightVNC Team.  All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
+ * USA.
+ */
+
+#ifndef OS_NET_H
+#define OS_NET_H
+
+#ifdef HAVE_COMMON_CONFIG_H
+#include <common-config.h>
+#endif
+
+#ifdef WIN32
+#include <common-config.win.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+
+/* IPv6 support on server side - we have to have all those functions */
+#if defined(HAVE_INET_NTOP)
+#define HAVE_IPV6
+#endif
+
+/* IPv4-only stub implementation */
+#ifndef HAVE_INET_NTOP
+const char *tight_inet_ntop(int af, const void *restrict src,
+			    char *restrict dst, socklen_t size);
+#define inet_ntop tight_inet_ntop
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* OS_NET_H */
