Skip to contentSkip to conversation

USE_PF_INET6 by default for v2.3

PATCH In review JuanJo 2 participants 4 messages May 30, 2011 – May 31, 2011

lore
Share & tools
lore

JuanJo

author
#0 lore raw

PATCH 1/1 USE_PF_INET6 by default for v2.3

- put all #ifdef'd code in place, kill the cpp symbol,
- thus in v2.3 it's not actually possible to --disable-ipv6 :)

RATIONALE:
#1 some wacky compilers choke on #ifdef'd constructions for
concatenated strings, and given that:
#2 v2.3 has already transport ipv6 by default
=> doesn't justify putting effort on #1 to keep USE_PF_INET6
ifdef wraps.

---
 configure.ac |   14 ++------
 init.c       |   11 +-----
 mroute.c     |    2 -
 mtcp.c       |    2 -
 multi.c      |   14 -------
 options.c    |   80 +++++++++--------------------------------
 route.c      |    4 --
 socket.c     |  112 +++------------------------------------------------------
 socket.h     |   35 ------------------
 syshead.h    |    4 +-
 10 files changed, 30 insertions(+), 248 deletions(-)
configure.ac +3 -11
index a3789d9..5024d6a 100644
@@ -152,12 +152,6 @@ AC_ARG_ENABLE(multihome,
    [MULTIHOME="yes"]
 )
 
-AC_ARG_ENABLE(ipv6,
-   [  --disable-ipv6          Disable UDP/IPv6 support],
-   [PF_INET6="$enableval"],
-   [PF_INET6="yes"]
-)
-
 AC_ARG_ENABLE(port-share,
    [  --disable-port-share    Disable TCP server port-share support (--port-share)],
    [PORT_SHARE="$enableval"],
@@ -579,14 +573,12 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL_CREATE, 1, [epoll_create functi
 LDFLAGS="$OLDLDFLAGS"
 
 dnl ipv6 support
-if test "$PF_INET6" = "yes"; then
-  AC_CHECKING([for struct sockaddr_in6 for IPv6 support])
-  AC_CHECK_TYPE(
+AC_CHECKING([for struct sockaddr_in6 for IPv6 support])
+AC_CHECK_TYPE(
       [struct sockaddr_in6],
-      [AC_DEFINE(USE_PF_INET6, 1, [struct sockaddr_in6 is needed for IPv6 peer support])],
       [],
+      [AC_MSG_ERROR([struct sockaddr_in6 not found, needed for ipv6 transport support.])],
       [#include "syshead.h"])
-fi
 
 dnl
 dnl check for valgrind tool
init.c +1 -10
index 4a16fba..f1ec0d2 100644
@@ -1745,22 +1745,16 @@ socket_restart_pause (struct context *c)
   switch (c->options.ce.proto)
     {
     case PROTO_UDPv4:
-#ifdef USE_PF_INET6
     case PROTO_UDPv6:
-#endif
       if (proxy)
 	sec = c->options.ce.connect_retry_seconds;
       break;
     case PROTO_TCPv4_SERVER:
-#ifdef USE_PF_INET6
     case PROTO_TCPv6_SERVER:
-#endif
       sec = 1;
       break;
     case PROTO_TCPv4_CLIENT:
-#ifdef USE_PF_INET6
     case PROTO_TCPv6_CLIENT:
-#endif
       sec = c->options.ce.connect_retry_seconds;
       break;
     }
@@ -3188,10 +3182,7 @@ init_instance (struct context *c, const struct env_set *env, const unsigned int
      instances to inherit acceptable fds
      from a top-level parent */
   if (c->options.ce.proto == PROTO_TCPv4_SERVER
-#ifdef USE_PF_INET6
-      || c->options.ce.proto == PROTO_TCPv6_SERVER
-#endif
-     )
+      || c->options.ce.proto == PROTO_TCPv6_SERVER)
     {
       if (c->mode == CM_TOP)
 	link_socket_mode = LS_MODE_TCP_LISTEN;
mroute.c +0 -2
index c8e979a..285b151 100644
@@ -287,7 +287,6 @@ bool mroute_extract_openvpn_sockaddr (struct mroute_addr *addr,
 	}
       return true;
     }
-#ifdef USE_PF_INET6
     case AF_INET6:
       if (use_port)
 	{
@@ -305,7 +304,6 @@ bool mroute_extract_openvpn_sockaddr (struct mroute_addr *addr,
 	  memcpy (addr->addr, &osaddr->addr.in6.sin6_addr, 16);
 	}
       return true;
-#endif
   }
   return false;
 }
mtcp.c +0 -2
index ade2cfb..662cb9a 100644
@@ -151,9 +151,7 @@ multi_tcp_instance_specific_init (struct multi_context *m, struct multi_instance
   ASSERT (mi->context.c2.link_socket->info.lsa);
   ASSERT (mi->context.c2.link_socket->mode == LS_MODE_TCP_ACCEPT_FROM);
   ASSERT (mi->context.c2.link_socket->info.lsa->actual.dest.addr.sa.sa_family == AF_INET
-#ifdef USE_PF_INET6
 	  || mi->context.c2.link_socket->info.lsa->actual.dest.addr.sa.sa_family == AF_INET6
-#endif
 	  );
   if (!mroute_extract_openvpn_sockaddr (&mi->real, &mi->context.c2.link_socket->info.lsa->actual.dest, true))
     {
multi.c +0 -14
index 15bea22..d8af530 100644
@@ -2788,24 +2788,10 @@ tunnel_server (struct context *top)
 {
   ASSERT (top->options.mode == MODE_SERVER);
 
-#ifdef USE_PF_INET6
   if (proto_is_dgram(top->options.ce.proto))
     tunnel_server_udp(top);
   else
     tunnel_server_tcp(top);
-#else
-  switch (top->options.ce.proto)
-    {
-    case PROTO_UDPv4:
-      tunnel_server_udp (top);
-      break;
-    case PROTO_TCPv4_SERVER:
-      tunnel_server_tcp (top);
-      break;
-    default:
-      ASSERT (0);
-    }
-#endif
 }
 
 #else
options.c +18 -62

136 lines not on this page · raw message

route.c +0 -4
index 96596cd..ba879b5 100644
@@ -754,11 +754,9 @@ redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap *tt, u
 	  if (!local)
 	    {
 	      /* route remote host to original default gateway */
-#ifdef USE_PF_INET6
 	      /* if remote_host is not ipv4 (ie: ipv6), just skip
 	       * adding this special /32 route */
 	      if (rl->spec.remote_host != IPV4_INVALID_ADDR) {
-#endif
 		add_route3 (rl->spec.remote_host,
 			    ~0,
 			    rl->spec.net_gateway,
@@ -766,11 +764,9 @@ redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap *tt, u
 			    flags,
 			    es);
 		rl->did_local = true;
-#ifdef USE_PF_INET6
 	      } else {
 		dmsg (D_ROUTE, "ROUTE remote_host protocol differs from tunneled");
 	      }
-#endif
 	    }
 
 	  /* route DHCP/DNS server traffic through original default gateway */
socket.c +6 -106

508 lines not on this page · raw message

socket.h +0 -35
index 33da53c..ea06f2d 100644
@@ -73,9 +73,7 @@ struct openvpn_sockaddr
   union {
     struct sockaddr sa;
     struct sockaddr_in in4;
-#ifdef USE_PF_INET6
     struct sockaddr_in6 in6;
-#endif
   } addr;
 };
 
@@ -92,9 +90,7 @@ struct link_socket_actual
 #ifdef IP_RECVDSTADDR
     struct in_addr in4;
 #endif
-#ifdef USE_PF_INET6
     struct in6_pktinfo in6;
-#endif
   } pi;
 #endif
 };
@@ -390,12 +386,10 @@ void setenv_link_socket_actual (struct env_set *es,
 
 void bad_address_length (int actual, int expected);
 
-#ifdef USE_PF_INET6
 /* IPV4_INVALID_ADDR: returned by link_socket_current_remote()
  * to ease redirect-gateway logic for ipv4 tunnels on ipv6 endpoints
  */
 #define IPV4_INVALID_ADDR 0xffffffff
-#endif
 in_addr_t link_socket_current_remote (const struct link_socket_info *info);
 
 void link_socket_connection_initiated (const struct buffer *buf,
@@ -521,12 +515,10 @@ enum proto_num {
 	PROTO_TCPv4_SERVER,
 	PROTO_TCPv4_CLIENT,
 	PROTO_TCPv4,
-#ifdef USE_PF_INET6
 	PROTO_UDPv6,
 	PROTO_TCPv6_SERVER,
 	PROTO_TCPv6_CLIENT,
 	PROTO_TCPv6,
-#endif
 	PROTO_N
 };
 
@@ -590,9 +582,7 @@ addr_defined (const struct openvpn_sockaddr *addr)
   if (!addr) return 0;
   switch (addr->addr.sa.sa_family) {
     case AF_INET: return addr->addr.in4.sin_addr.s_addr != 0;
-#ifdef USE_PF_INET6
     case AF_INET6: return !IN6_IS_ADDR_UNSPECIFIED(&addr->addr.in6.sin6_addr);
-#endif
     default: return 0;
   }
 }
@@ -608,9 +598,7 @@ addr_defined_ipi (const struct link_socket_actual *lsa)
 #ifdef IP_RECVDSTADDR
     case AF_INET: return lsa->pi.in4.s_addr != 0;
 #endif
-#ifdef USE_PF_INET6
     case AF_INET6: return !IN6_IS_ADDR_UNSPECIFIED(&lsa->pi.in6.ipi6_addr);
-#endif
     default: return 0;
   }
 #else
@@ -631,10 +619,8 @@ addr_match (const struct openvpn_sockaddr *a1, const struct openvpn_sockaddr *a2
   switch(a1->addr.sa.sa_family) {
     case AF_INET:
       return a1->addr.in4.sin_addr.s_addr == a2->addr.in4.sin_addr.s_addr;
-#ifdef USE_PF_INET6
     case AF_INET6:
       return IN6_ARE_ADDR_EQUAL(&a1->addr.in6.sin6_addr, &a2->addr.in6.sin6_addr);
-#endif
   }
   ASSERT(0);
   return false;
@@ -648,12 +634,8 @@ addr_host (const struct openvpn_sockaddr *addr)
    * possible clash: non sense for now given
    * that we do ifconfig only IPv4
    */
-#if defined(USE_PF_INET6) 
   if(addr->addr.sa.sa_family != AF_INET)
     return 0;
-#else 
-  ASSERT(addr->addr.sa.sa_family == AF_INET);
-#endif
   return ntohl (addr->addr.in4.sin_addr.s_addr);
 }
 
@@ -664,11 +646,9 @@ addr_port_match (const struct openvpn_sockaddr *a1, const struct openvpn_sockadd
     case AF_INET:
       return a1->addr.in4.sin_addr.s_addr == a2->addr.in4.sin_addr.s_addr
 	&& a1->addr.in4.sin_port == a2->addr.in4.sin_port;
-#ifdef USE_PF_INET6
     case AF_INET6:
       return IN6_ARE_ADDR_EQUAL(&a1->addr.in6.sin6_addr, &a2->addr.in6.sin6_addr) 
 	&& a1->addr.in6.sin6_port == a2->addr.in6.sin6_port;
-#endif
   }
   ASSERT(0);
   return false;
@@ -691,11 +671,9 @@ addr_zero_host(struct openvpn_sockaddr *addr)
      case AF_INET:
        addr->addr.in4.sin_addr.s_addr = 0;
        break;
-#ifdef USE_PF_INET6
      case AF_INET6: 
        memset(&addr->addr.in6.sin6_addr, 0, sizeof (struct in6_addr));
        break;
-#endif
    }
 }
 
@@ -712,11 +690,9 @@ addr_copy_host(struct openvpn_sockaddr *dst, const struct openvpn_sockaddr *src)
      case AF_INET:
        dst->addr.in4.sin_addr.s_addr = src->addr.in4.sin_addr.s_addr;
        break;
-#ifdef USE_PF_INET6
      case AF_INET6: 
        dst->addr.in6.sin6_addr = src->addr.in6.sin6_addr;
        break;
-#endif
    }
 }
 
@@ -730,15 +706,9 @@ int addr_guess_family(int proto, const char *name);
 static inline int
 af_addr_size(unsigned short af)
 {
-#if defined(USE_PF_INET6) || defined (USE_PF_UNIX)
    switch(af) {
      case AF_INET: return sizeof (struct sockaddr_in);
-#ifdef USE_PF_UNIX
-     case AF_UNIX: return sizeof (struct sockaddr_un);
-#endif
-#ifdef USE_PF_INET6
      case AF_INET6: return sizeof (struct sockaddr_in6);
-#endif
      default: 
 #if 0
       /* could be called from socket_do_accept() with empty addr */
@@ -747,9 +717,6 @@ af_addr_size(unsigned short af)
 #endif
      	return 0;
    }
-#else /* only AF_INET */
-   return sizeof(struct sockaddr_in);
-#endif
 }
 
 static inline bool
@@ -809,9 +776,7 @@ link_socket_verify_incoming_addr (struct buffer *buf,
   if (buf->len > 0)
     {
       switch (from_addr->dest.addr.sa.sa_family) {
-#ifdef USE_PF_INET6
 	case AF_INET6:
-#endif
 	case AF_INET:
 	  if (!link_socket_actual_defined (from_addr))
 	    return false;
syshead.h +2 -2
index 5b86cad..cb98567 100644
@@ -29,7 +29,7 @@
  * Only include if not during configure
  */
 #ifdef WIN32
-/* USE_PF_INET6: win32 ipv6 exists only after 0x0501 (XP) */
+/* PF_INET6: win32 ipv6 exists only after 0x0501 (XP) */
 #define WINVER 0x0501
 #endif
 #ifndef PACKAGE_NAME
@@ -343,7 +343,7 @@
 #ifdef WIN32
 #include <iphlpapi.h>
 #include <wininet.h>
-/* The following two headers are needed of USE_PF_INET6 */
+/* The following two headers are needed of PF_INET6 */
 #include <winsock2.h>
 #include <ws2tcpip.h>
 #endif
Signature · 7 lines
1.7.3.1


-- 
-- 
--JuanJo ; echo [email protected]... | sed 's/[SPAM]//g'
  gpg --keyserver wwwkeys.eu.pgp.net --recv-key 66727177
#1 lore raw
Quoted 10 lines · JuanJo

- put all #ifdef'd code in place, kill the cpp symbol,
- thus in v2.3 it's not actually possible to --disable-ipv6 :)

RATIONALE:
 #1 some wacky compilers choke on #ifdef'd constructions for concatenated strings, and given that:
 #2 v2.3 has already transport ipv6 by default
=> doesn't justify putting effort on #1 to keep USE_PF_INET6 ifdef wraps.

Quoted 2 lines

<...snip...>

FWIW you can also peek at the diff at:
https://github.com/jjo/openvpn-ipv6/commit/77fed9c07c1461cd926ab4e86c587cac8414b957
http://codereview.appspot.com/4564045/

Cheers,

Signature · 1 line
--JuanJo ; echo [email protected]... | sed 's/[SPAM]//g'
#2 lore raw

JuanJo Ciarlante ha scritto:

Quoted 16 lines · JuanJo
Quoted 11 lines

- put all #ifdef'd code in place, kill the cpp symbol,
- thus in v2.3 it's not actually possible to --disable-ipv6 :)

RATIONALE:
#1 some wacky compilers choke on #ifdef'd constructions for
concatenated strings, and given that:
#2 v2.3 has already transport ipv6 by default
=> doesn't justify putting effort on #1 to keep USE_PF_INET6
ifdef wraps.

Quoted 3 lines

<...snip...>

Quoted 6 lines

FWIW you can also peek at the diff at:
https://github.com/jjo/openvpn-ipv6/commit/77fed9c07c1461cd926ab4e86c587cac8414b957
http://codereview.appspot.com/4564045/

Cheers,

Hi JuanJo,

This patch did not apply on top of the earlier "Visual Studio 2008 build fix" patches applied on top of "master". There was one whitespace error and it choked on syshead.h due to a new #include. Besides that it worked great!

A fixed patch is attached.

Signature · 5 lines
Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock

From 77fed9c07c1461cd926ab4e86c587cac8414b957 Mon Sep 17 00:00:00 2001
From: JuanJo Ciarlante <[email protected]...>
Date: Thu, 26 May 2011 19:01:42 +0200
Subject: [PATCH] USE_PF_INET6 by default for v2.3

- put all #ifdef'd code in place, kill the cpp symbol,
- thus in v2.3 it's not actually possible to --disable-ipv6 :)

RATIONALE:
#1 some wacky compilers choke on #ifdef'd constructions for
concatenated strings, and given that:
#2 v2.3 has already transport ipv6 by default
=> doesn't justify putting effort on #1 to keep USE_PF_INET6
ifdef wraps.

---
 configure.ac |   14 ++------
 init.c       |   11 +-----
 mroute.c     |    2 -
 mtcp.c       |    2 -
 multi.c      |   14 -------
 options.c    |   80 +++++++++--------------------------------
 route.c      |    4 --
 socket.c     |  112 +++------------------------------------------------------
 socket.h     |   35 ------------------
 syshead.h    |    4 +-
 10 files changed, 30 insertions(+), 248 deletions(-)
configure.ac +3 -11
index a3789d9..5024d6a 100644
@@ -152,12 +152,6 @@ AC_ARG_ENABLE(multihome,
    [MULTIHOME="yes"]
 )
 
-AC_ARG_ENABLE(ipv6,
-   [  --disable-ipv6          Disable UDP/IPv6 support],
-   [PF_INET6="$enableval"],
-   [PF_INET6="yes"]
-)
-
 AC_ARG_ENABLE(port-share,
    [  --disable-port-share    Disable TCP server port-share support (--port-share)],
    [PORT_SHARE="$enableval"],
@@ -579,14 +573,12 @@ AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL_CREATE, 1, [epoll_create functi
 LDFLAGS="$OLDLDFLAGS"
 
 dnl ipv6 support
-if test "$PF_INET6" = "yes"; then
-  AC_CHECKING([for struct sockaddr_in6 for IPv6 support])
-  AC_CHECK_TYPE(
+AC_CHECKING([for struct sockaddr_in6 for IPv6 support])
+AC_CHECK_TYPE(
       [struct sockaddr_in6],
-      [AC_DEFINE(USE_PF_INET6, 1, [struct sockaddr_in6 is needed for IPv6 peer support])],
       [],
+      [AC_MSG_ERROR([struct sockaddr_in6 not found, needed for ipv6 transport support.])],
       [#include "syshead.h"])
-fi
 
 dnl
 dnl check for valgrind tool
init.c +1 -10
index 4a16fba..f1ec0d2 100644
@@ -1745,22 +1745,16 @@ socket_restart_pause (struct context *c)
   switch (c->options.ce.proto)
     {
     case PROTO_UDPv4:
-#ifdef USE_PF_INET6
     case PROTO_UDPv6:
-#endif
       if (proxy)
 	sec = c->options.ce.connect_retry_seconds;
       break;
     case PROTO_TCPv4_SERVER:
-#ifdef USE_PF_INET6
     case PROTO_TCPv6_SERVER:
-#endif
       sec = 1;
       break;
     case PROTO_TCPv4_CLIENT:
-#ifdef USE_PF_INET6
     case PROTO_TCPv6_CLIENT:
-#endif
       sec = c->options.ce.connect_retry_seconds;
       break;
     }
@@ -3188,10 +3182,7 @@ init_instance (struct context *c, const struct env_set *env, const unsigned int
      instances to inherit acceptable fds
      from a top-level parent */
   if (c->options.ce.proto == PROTO_TCPv4_SERVER
-#ifdef USE_PF_INET6
-      || c->options.ce.proto == PROTO_TCPv6_SERVER
-#endif
-     )
+      || c->options.ce.proto == PROTO_TCPv6_SERVER)
     {
       if (c->mode == CM_TOP)
 	link_socket_mode = LS_MODE_TCP_LISTEN;
mroute.c +0 -2
index c8e979a..285b151 100644
@@ -287,7 +287,6 @@ bool mroute_extract_openvpn_sockaddr (struct mroute_addr *addr,
 	}
       return true;
     }
-#ifdef USE_PF_INET6
     case AF_INET6:
       if (use_port)
 	{
@@ -305,7 +304,6 @@ bool mroute_extract_openvpn_sockaddr (struct mroute_addr *addr,
 	  memcpy (addr->addr, &osaddr->addr.in6.sin6_addr, 16);
 	}
       return true;
-#endif
   }
   return false;
 }
mtcp.c +0 -2
index ade2cfb..662cb9a 100644
@@ -151,9 +151,7 @@ multi_tcp_instance_specific_init (struct multi_context *m, struct multi_instance
   ASSERT (mi->context.c2.link_socket->info.lsa);
   ASSERT (mi->context.c2.link_socket->mode == LS_MODE_TCP_ACCEPT_FROM);
   ASSERT (mi->context.c2.link_socket->info.lsa->actual.dest.addr.sa.sa_family == AF_INET
-#ifdef USE_PF_INET6
 	  || mi->context.c2.link_socket->info.lsa->actual.dest.addr.sa.sa_family == AF_INET6
-#endif
 	  );
   if (!mroute_extract_openvpn_sockaddr (&mi->real, &mi->context.c2.link_socket->info.lsa->actual.dest, true))
     {
multi.c +0 -14
index 15bea22..d8af530 100644
@@ -2788,24 +2788,10 @@ tunnel_server (struct context *top)
 {
   ASSERT (top->options.mode == MODE_SERVER);
 
-#ifdef USE_PF_INET6
   if (proto_is_dgram(top->options.ce.proto))
     tunnel_server_udp(top);
   else
     tunnel_server_tcp(top);
-#else
-  switch (top->options.ce.proto)
-    {
-    case PROTO_UDPv4:
-      tunnel_server_udp (top);
-      break;
-    case PROTO_TCPv4_SERVER:
-      tunnel_server_tcp (top);
-      break;
-    default:
-      ASSERT (0);
-    }
-#endif
 }
 
 #else
options.c +18 -62

136 lines not on this page · raw message

route.c +0 -4
index 96596cd..ba879b5 100644
@@ -754,11 +754,9 @@ redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap *tt, u
 	  if (!local)
 	    {
 	      /* route remote host to original default gateway */
-#ifdef USE_PF_INET6
 	      /* if remote_host is not ipv4 (ie: ipv6), just skip
 	       * adding this special /32 route */
 	      if (rl->spec.remote_host != IPV4_INVALID_ADDR) {
-#endif
 		add_route3 (rl->spec.remote_host,
 			    ~0,
 			    rl->spec.net_gateway,
@@ -766,11 +764,9 @@ redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap *tt, u
 			    flags,
 			    es);
 		rl->did_local = true;
-#ifdef USE_PF_INET6
 	      } else {
 		dmsg (D_ROUTE, "ROUTE remote_host protocol differs from tunneled");
 	      }
-#endif
 	    }
 
 	  /* route DHCP/DNS server traffic through original default gateway */
socket.c +6 -106

508 lines not on this page · raw message

socket.h +0 -35
index 33da53c..ea06f2d 100644
@@ -73,9 +73,7 @@ struct openvpn_sockaddr
   union {
     struct sockaddr sa;
     struct sockaddr_in in4;
-#ifdef USE_PF_INET6
     struct sockaddr_in6 in6;
-#endif
   } addr;
 };
 
@@ -92,9 +90,7 @@ struct link_socket_actual
 #ifdef IP_RECVDSTADDR
     struct in_addr in4;
 #endif
-#ifdef USE_PF_INET6
     struct in6_pktinfo in6;
-#endif
   } pi;
 #endif
 };
@@ -390,12 +386,10 @@ void setenv_link_socket_actual (struct env_set *es,
 
 void bad_address_length (int actual, int expected);
 
-#ifdef USE_PF_INET6
 /* IPV4_INVALID_ADDR: returned by link_socket_current_remote()
  * to ease redirect-gateway logic for ipv4 tunnels on ipv6 endpoints
  */
 #define IPV4_INVALID_ADDR 0xffffffff
-#endif
 in_addr_t link_socket_current_remote (const struct link_socket_info *info);
 
 void link_socket_connection_initiated (const struct buffer *buf,
@@ -521,12 +515,10 @@ enum proto_num {
 	PROTO_TCPv4_SERVER,
 	PROTO_TCPv4_CLIENT,
 	PROTO_TCPv4,
-#ifdef USE_PF_INET6
 	PROTO_UDPv6,
 	PROTO_TCPv6_SERVER,
 	PROTO_TCPv6_CLIENT,
 	PROTO_TCPv6,
-#endif
 	PROTO_N
 };
 
@@ -590,9 +582,7 @@ addr_defined (const struct openvpn_sockaddr *addr)
   if (!addr) return 0;
   switch (addr->addr.sa.sa_family) {
     case AF_INET: return addr->addr.in4.sin_addr.s_addr != 0;
-#ifdef USE_PF_INET6
     case AF_INET6: return !IN6_IS_ADDR_UNSPECIFIED(&addr->addr.in6.sin6_addr);
-#endif
     default: return 0;
   }
 }
@@ -608,9 +598,7 @@ addr_defined_ipi (const struct link_socket_actual *lsa)
 #ifdef IP_RECVDSTADDR
     case AF_INET: return lsa->pi.in4.s_addr != 0;
 #endif
-#ifdef USE_PF_INET6
     case AF_INET6: return !IN6_IS_ADDR_UNSPECIFIED(&lsa->pi.in6.ipi6_addr);
-#endif
     default: return 0;
   }
 #else
@@ -631,10 +619,8 @@ addr_match (const struct openvpn_sockaddr *a1, const struct openvpn_sockaddr *a2
   switch(a1->addr.sa.sa_family) {
     case AF_INET:
       return a1->addr.in4.sin_addr.s_addr == a2->addr.in4.sin_addr.s_addr;
-#ifdef USE_PF_INET6
     case AF_INET6:
       return IN6_ARE_ADDR_EQUAL(&a1->addr.in6.sin6_addr, &a2->addr.in6.sin6_addr);
-#endif
   }
   ASSERT(0);
   return false;
@@ -648,12 +634,8 @@ addr_host (const struct openvpn_sockaddr *addr)
    * possible clash: non sense for now given
    * that we do ifconfig only IPv4
    */
-#if defined(USE_PF_INET6) 
   if(addr->addr.sa.sa_family != AF_INET)
     return 0;
-#else 
-  ASSERT(addr->addr.sa.sa_family == AF_INET);
-#endif
   return ntohl (addr->addr.in4.sin_addr.s_addr);
 }
 
@@ -664,11 +646,9 @@ addr_port_match (const struct openvpn_sockaddr *a1, const struct openvpn_sockadd
     case AF_INET:
       return a1->addr.in4.sin_addr.s_addr == a2->addr.in4.sin_addr.s_addr
 	&& a1->addr.in4.sin_port == a2->addr.in4.sin_port;
-#ifdef USE_PF_INET6
     case AF_INET6:
       return IN6_ARE_ADDR_EQUAL(&a1->addr.in6.sin6_addr, &a2->addr.in6.sin6_addr) 
 	&& a1->addr.in6.sin6_port == a2->addr.in6.sin6_port;
-#endif
   }
   ASSERT(0);
   return false;
@@ -691,11 +671,9 @@ addr_zero_host(struct openvpn_sockaddr *addr)
      case AF_INET:
        addr->addr.in4.sin_addr.s_addr = 0;
        break;
-#ifdef USE_PF_INET6
      case AF_INET6: 
        memset(&addr->addr.in6.sin6_addr, 0, sizeof (struct in6_addr));
        break;
-#endif
    }
 }
 
@@ -712,11 +690,9 @@ addr_copy_host(struct openvpn_sockaddr *dst, const struct openvpn_sockaddr *src)
      case AF_INET:
        dst->addr.in4.sin_addr.s_addr = src->addr.in4.sin_addr.s_addr;
        break;
-#ifdef USE_PF_INET6
      case AF_INET6: 
        dst->addr.in6.sin6_addr = src->addr.in6.sin6_addr;
        break;
-#endif
    }
 }
 
@@ -730,15 +706,9 @@ int addr_guess_family(int proto, const char *name);
 static inline int
 af_addr_size(unsigned short af)
 {
-#if defined(USE_PF_INET6) || defined (USE_PF_UNIX)
    switch(af) {
      case AF_INET: return sizeof (struct sockaddr_in);
-#ifdef USE_PF_UNIX
-     case AF_UNIX: return sizeof (struct sockaddr_un);
-#endif
-#ifdef USE_PF_INET6
      case AF_INET6: return sizeof (struct sockaddr_in6);
-#endif
      default: 
 #if 0
       /* could be called from socket_do_accept() with empty addr */
@@ -747,9 +717,6 @@ af_addr_size(unsigned short af)
 #endif
      	return 0;
    }
-#else /* only AF_INET */
-   return sizeof(struct sockaddr_in);
-#endif
 }
 
 static inline bool
@@ -809,9 +776,7 @@ link_socket_verify_incoming_addr (struct buffer *buf,
   if (buf->len > 0)
     {
       switch (from_addr->dest.addr.sa.sa_family) {
-#ifdef USE_PF_INET6
 	case AF_INET6:
-#endif
 	case AF_INET:
 	  if (!link_socket_actual_defined (from_addr))
 	    return false;
syshead.h +2 -2
index 5b86cad..cb98567 100644
@@ -29,7 +29,7 @@
  * Only include if not during configure
  */
 #ifdef WIN32
-/* USE_PF_INET6: win32 ipv6 exists only after 0x0501 (XP) */
+/* PF_INET6: win32 ipv6 exists only after 0x0501 (XP) */
 #define WINVER 0x0501
 #endif
 #ifndef PACKAGE_NAME
@@ -343,7 +343,7 @@
 #ifdef WIN32
 #include <iphlpapi.h>
 #include <NtDDNdis.h>
 #include <wininet.h>
-/* The following two headers are needed of USE_PF_INET6 */
+/* The following two headers are needed of PF_INET6 */
 #include <winsock2.h>
 #include <ws2tcpip.h>

#endif

Signature · 1 line
1.6.3.3
#3 lore raw

Hi,

Quoted 21 lines · Samuli Seppänen

JuanJo Ciarlante ha scritto:

Quoted 20 lines · JuanJo
Quoted 11 lines

- put all #ifdef'd code in place, kill the cpp symbol,
- thus in v2.3 it's not actually possible to --disable-ipv6 :)

RATIONALE:
 #1 some wacky compilers choke on #ifdef'd constructions for concatenated strings, and given that:
 #2 v2.3 has already transport ipv6 by default
=> doesn't justify putting effort on #1 to keep USE_PF_INET6 ifdef wraps.

Quoted 3 lines

<...snip...>

FWIW you can also peek at the diff at:
  https://github.com/jjo/openvpn-ipv6/commit/77fed9c07c1461cd926ab4e86c587cac8414b957
  http://codereview.appspot.com/4564045/

Quoted 8 lines
Quoted 2 lines

Cheers,

Hi JuanJo,

This patch did not apply on top of the earlier "Visual Studio 2008 build fix" patches applied on top of "master". There was one whitespace error and it choked on syshead.h due to a new #include. Besides that it worked great!

Thanks Samuli for stuffing those bits :) !

Quoted 2 lines

A fixed patch is attached.

Shameless ACK 8)

Cheers,

Quoted 10 lines

--

Samuli Seppänen
Community Manager
OpenVPN Technologies, Inc

irc freenode net: mattock

Signature · 1 line
--JuanJo ; echo [email protected]... | sed 's/[SPAM]//g'