[Openvpn-devel,v4,3/7] allow usage of --server-ipv6 even when no --server is specified

Message ID 20200530000600.1680-4-a@unstable.cc
State Accepted
Headers show
Series Allow IPv6-only tunnels | expand

Commit Message

Antonio Quartulli May 29, 2020, 2:05 p.m. UTC
From: Antonio Quartulli <antonio@openvpn.net>

Until now OpenVPN has not allowed to specify --server-ipv6
if no --server was also set. This constraint comes from the
fact that most of the IPv6 logic (i.e. ifconfig-pool handling)
relied on IPv4 components to be activated and configured as

Now that the IPv6 code path has been made independent from
IPv4, it is finally possible to to relax the constraint
mentioned above and make it possible for the user to have a
configurations with --server-ipv6 only.

Trac: #208
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
Changes from v4:
- fix typ0 in message

Changes from v3:
- patchset rebased on top of pre-ipv6-only patchset

Changes from v4:
- change commit subject/message
- move ifconfig-ipv6-pool check change into 4/8

 src/openvpn/helper.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)


Gert Doering June 6, 2020, 4:27 a.m. UTC | #1
Acked-by: Gert Doering <gert@greenie.muc.de>

Stared-at-code and tested on the t_server setup.  Sufficiently trivial
change :-) - but also all the other code parts that assume "if you do
--server-ipv6, you must have done --server as well!!" have been adjusted
in previous patches (ipv6-only ifconfig, ipv6-only pools).

Your patch has been applied to the master branch.

commit 7d65aad8973fa85a007a3de8907b9cbced20b2b4
Author: Antonio Quartulli
Date:   Sat May 30 02:05:56 2020 +0200

     allow usage of --server-ipv6 even when no --server is specified

     Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
     Acked-by: Gert Doering <gert@greenie.muc.de>
     Message-Id: <20200530000600.1680-4-a@unstable.cc>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19949.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>

kind regards,

Gert Doering


diff --git a/src/openvpn/helper.c b/src/openvpn/helper.c
index 34cfa6bd..277e6972 100644
--- a/src/openvpn/helper.c
+++ b/src/openvpn/helper.c
@@ -174,10 +174,11 @@  helper_client_server(struct options *o)
     if (o->server_ipv6_defined)
-        if (!o->server_defined)
+        if (o->client)
-            msg(M_USAGE, "--server-ipv6 must be used together with --server");
+            msg(M_USAGE, "--server-ipv6 and --client cannot be used together");
         if (o->server_flags & SF_NOPOOL)
             msg( M_USAGE, "--server-ipv6 is incompatible with 'nopool' option" );
@@ -187,6 +188,9 @@  helper_client_server(struct options *o)
             msg( M_USAGE, "--server-ipv6 already defines an ifconfig-ipv6-pool, so you can't also specify --ifconfig-pool explicitly");
+        o->mode = MODE_SERVER;
+        o->tls_server = true;
         /* local ifconfig is "base address + 1" and "+2" */
         o->ifconfig_ipv6_local =
             print_in6_addr( add_in6_addr( o->server_network_ipv6, 1), 0, &o->gc );