From 5bc0453605d816d84b4ca1816de22362ac614113 Mon Sep 17 00:00:00 2001
From: Koichiro IWAO
Date: Wed, 1 Jul 2015 00:46:30 +0000
Subject: [PATCH 1/2] common: drop ipv6 autodetection only valid for linux
---
common/os_calls.c | 6 +++---
configure.ac | 5 -----
2 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/common/os_calls.c b/common/os_calls.c
index 50d7e549..46bc0e8a 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -463,7 +463,7 @@ g_tcp_socket(void)
unsigned int option_len;
#endif
-#if defined(XRDP_ENABLE_IPV6) && !defined(NO_ARPA_INET_H_IP6)
+#if defined(XRDP_ENABLE_IPV6)
rv = (int)socket(AF_INET6, SOCK_STREAM, 0);
#else
rv = (int)socket(AF_INET, SOCK_STREAM, 0);
@@ -472,7 +472,7 @@ g_tcp_socket(void)
{
return -1;
}
-#if defined(XRDP_ENABLE_IPV6) && !defined(NO_ARPA_INET_H_IP6)
+#if defined(XRDP_ENABLE_IPV6)
option_len = sizeof(option_value);
if (getsockopt(rv, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&option_value,
&option_len) == 0)
@@ -711,7 +711,7 @@ g_tcp_close(int sck)
/*****************************************************************************/
/* returns error, zero is good */
-#if defined(XRDP_ENABLE_IPV6) && !defined(NO_ARPA_INET_H_IP6)
+#if defined(XRDP_ENABLE_IPV6)
int APP_CC
g_tcp_connect(int sck, const char *address, const char *port)
{
diff --git a/configure.ac b/configure.ac
index f436d9f8..bf51cc53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -111,11 +111,6 @@ then
AC_DEFINE([XRDP_ENABLE_IPV6],1,[Enable IPv6])
fi
-AC_CHECK_MEMBER([struct in6_addr.s6_addr],
- [],
- [AC_DEFINE(NO_ARPA_INET_H_IP6, 1, [for IPv6])],
- [#include ])
-
if test "x$enable_pam" != "xyes" || test "x$bsd" = "xtrue"
then
AC_DEFINE([USE_NOPAM],1,[Disable PAM])
From 536ee41c5e53647c54f63eb9179224756d02a8f6 Mon Sep 17 00:00:00 2001
From: Koichiro IWAO
Date: Wed, 1 Jul 2015 04:19:38 +0000
Subject: [PATCH 2/2] common: add --enable-ipv6only option
---
common/os_calls.c | 4 ++++
configure.ac | 9 +++++++++
2 files changed, 13 insertions(+)
diff --git a/common/os_calls.c b/common/os_calls.c
index 46bc0e8a..04b2ac38 100644
--- a/common/os_calls.c
+++ b/common/os_calls.c
@@ -479,7 +479,11 @@ g_tcp_socket(void)
{
if (option_value != 0)
{
+#if defined(XRDP_ENABLE_IPV6ONLY)
+ option_value = 1;
+#else
option_value = 0;
+#endif
option_len = sizeof(option_value);
if (setsockopt(rv, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&option_value,
option_len) < 0)
diff --git a/configure.ac b/configure.ac
index bf51cc53..26917325 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,6 +32,9 @@ AM_CONDITIONAL(SESMAN_NOPAM, [test x$enable_pam != xyes])
AC_ARG_ENABLE(ipv6, AS_HELP_STRING([--enable-ipv6],
[Build IPv6 support (default: no, experimental)]),
[], [enable_ipv6=no])
+AC_ARG_ENABLE(ipv6only, AS_HELP_STRING([--enable-ipv6only],
+ [Build IPv6-only (default: no)]),
+ [], [enable_ipv6only=no])
AC_ARG_ENABLE(kerberos, AS_HELP_STRING([--enable-kerberos],
[Build kerberos support (default: no)]),
[], [enable_kerberos=no])
@@ -106,6 +109,12 @@ then
fi
fi
+if test "x$enable_ipv6only" = "xyes"
+then
+ enable_ipv6=yes
+ AC_DEFINE([XRDP_ENABLE_IPV6ONLY],1,[Enable IPv6 only])
+fi
+
if test "x$enable_ipv6" = "xyes"
then
AC_DEFINE([XRDP_ENABLE_IPV6],1,[Enable IPv6])