From: Josh Cepek Date: Mon, 18 Aug 2014 10:51:01 +0000 (-0500) Subject: Push an IPv6 CIDR mask used by the server, not the pool's size X-Git-Tag: v2.4_alpha1~90 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0d8a4ffa2293dda8139189725a5c49fbe0eb500b;p=thirdparty%2Fopenvpn.git Push an IPv6 CIDR mask used by the server, not the pool's size Correctly handle CIDR masks when pushing clients addressing from an IPv6 pool. This change ignores the incorrectly used `bits` argument to the --ifconfig-ipv6-pool option. The code to save any provided CIDR mask after the pool IP is left in; this may someday become useful when we move to allow IPv6 pools without relying on an IPv4 pool assignment. Signed-off-by: Josh Cepek Acked-by: Arne Schwabe Acked-by: Gert Doering Message-Id: <53F1DA95.7020701@usa.net> URL: http://article.gmane.org/gmane.network.openvpn.devel/8990 Signed-off-by: Gert Doering --- diff --git a/doc/openvpn.8 b/doc/openvpn.8 index 8d1b06223..e1dd7cde3 100644 --- a/doc/openvpn.8 +++ b/doc/openvpn.8 @@ -5799,10 +5799,7 @@ Is only accepted if ``\-\-mode server'' or ``\-\-server'' is set. Specify an IPv6 address pool for dynamic assignment to clients. The pool starts at .B ipv6addr -and increments by +1 for every new client (linear mode). The -.B /bits -setting controls the size of the pool. Due to implementation details, -the pool size must be between /64 and /112. +and matches the offset determined from the start of the IPv4 pool. .TP .B \-\-ifconfig\-ipv6\-push ipv6addr/bits ipv6remote for ccd/ per-client static IPv6 interface configuration, see diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c index 6e6d45772..4c43fcc5b 100644 --- a/src/openvpn/multi.c +++ b/src/openvpn/multi.c @@ -1431,10 +1431,10 @@ multi_select_virtual_addr (struct multi_context *m, struct multi_instance *mi) if ( mi->context.options.ifconfig_ipv6_pool_defined ) { mi->context.c2.push_ifconfig_ipv6_local = remote_ipv6; - mi->context.c2.push_ifconfig_ipv6_remote = + mi->context.c2.push_ifconfig_ipv6_remote = mi->context.c1.tuntap->local_ipv6; - mi->context.c2.push_ifconfig_ipv6_netbits = - mi->context.options.ifconfig_ipv6_pool_netbits; + mi->context.c2.push_ifconfig_ipv6_netbits = + mi->context.options.ifconfig_ipv6_netbits; mi->context.c2.push_ifconfig_ipv6_defined = true; } }