These days it is highly unlikely that OpenVPN will be built in a non-IPv6
capable Linux environment. So remove compile-time related macros identifying
that.
This also solves an issue which was introduced in commit
51bd56f46f55177cf0f8b
where HAVE_TUN_PI is no longer detected. The tun_pi struct is defined in
linux/if_tun.h, which will be checked for later on. As this struct has history
in linux/if_tun.h all back to the beginning of the kernel git tree (2.6.12-rc2,
April 2005), it is considered not needed to check for this struct explicit.
[ v2: Commit
7c0a2b5f2b4409 modifies some of the checks this patch touches. This
patch just adopts to those changes ]
Signed-off-by: David Sommerseth <davids@redhat.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Alon Bar-Lev <alon.barlev@gmail.com>
Message-Id:
1335521425-23391-1-git-send-email-davids@redhat.com
URL: http://article.gmane.org/gmane.network.openvpn.devel/6351
[AC_DEFINE([in_addr_t], [uint32_t], [Workaround missing in_addr_t])],
[[${SOCKET_INCLUDES}]]
)
-AC_CHECK_TYPE(
- [struct tun_pi],
- [AC_DEFINE([HAVE_TUN_PI], [1], [struct tun_pi needed for IPv6 support])],
- ,
- [[${SOCKET_INCLUDES}]]
-)
AC_CHECK_TYPE(
[struct iphdr],
[AC_DEFINE([HAVE_IPHDR], [1], [struct iphdr needed for IPv6 support])],
#error header file linux/sockios.h required
#endif
-#if defined(HAVE_TUN_PI) && defined(HAVE_IPHDR) && defined(HAVE_IOVEC) && defined(ETH_P_IPV6) && defined(ETH_P_IP) && defined(HAVE_READV) && defined(HAVE_WRITEV)
-#define LINUX_IPV6 1
-/* #warning IPv6 ON */
-#else
-#define LINUX_IPV6 0
-/* #warning IPv6 OFF */
-#endif
-
#if !PEDANTIC
void
{
struct ifreq ifr;
- /* warn if a very old linux version is used & --tun-ipv6 set
- */
-#if LINUX_IPV6 == 0
- if ( tt->ipv6 )
- msg (M_WARN, "NOTE: explicit support for IPv6 tun devices is not provided for this OS");
-#endif
-
/*
* We handle --dev null specially, we do not open /dev/null for this.
*/
int
write_tun (struct tuntap* tt, uint8_t *buf, int len)
{
-#if LINUX_IPV6
if (tt->ipv6)
{
struct tun_pi pi;
return(ret - sizeof(pi));
}
else
-#endif
return write (tt->fd, buf, len);
}
int
read_tun (struct tuntap* tt, uint8_t *buf, int len)
{
-#if LINUX_IPV6
if (tt->ipv6)
{
struct iovec vect[2];
return(ret - sizeof(pi));
}
else
-#endif
return read (tt->fd, buf, len);
}