Merge pull request #254 from metalefty/freebsd/ipv6

Unbreak IPv6 on FreeBSD and add IPv6-only option
This commit is contained in:
Itamar Reis Peixoto 2016-02-08 22:40:05 -02:00
commit 08121e0840
2 changed files with 16 additions and 8 deletions

View File

@ -411,7 +411,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);
@ -420,14 +420,18 @@ 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)
{
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)
@ -659,7 +663,7 @@ g_sck_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)
{

View File

@ -54,6 +54,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])
@ -126,16 +129,17 @@ 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])
fi
AC_CHECK_MEMBER([struct in6_addr.s6_addr],
[],
[AC_DEFINE(NO_ARPA_INET_H_IP6, 1, [for IPv6])],
[#include <arpa/inet.h>])
if test "x$enable_pam" != "xyes" || test "x$bsd" = "xtrue"
then
AC_DEFINE([USE_NOPAM],1,[Disable PAM])