Am 11.09.15 um 16:33 schrieb Gert Doering:
> Add "ipv6" and "!ipv4" sub-options to "--redirect-gateway" option.
>
> This is done in the same way as in the OpenVPN 3 code base, so
> "--redirect-gateway ipv6" will redirect both IPv4 and IPv6 - if you
> want v6-only, use "--redirect-gateway ipv6 !ipv4".
>
> The actual implementation is much simpler than for IPv4 - we just
> add a few extra routes to the route_ipv6_option_list and leave it to
> init_route_ipv6_list() to figure out whether there is an overlap with
> IPv6 transport, and if yes, insert a host route to the VPN server
> via the current IPv6 default gateway.
>
> Signed-off-by: Gert Doering <g...@greenie.muc.de>
> ---
>  doc/openvpn.8         | 11 +++++++++++
>  src/openvpn/init.c    | 15 +++++++++++++++
>  src/openvpn/options.c |  7 +++++++
>  3 files changed, 33 insertions(+)
>
> diff --git a/doc/openvpn.8 b/doc/openvpn.8
> index 0692a80..98378aa 100644
> --- a/doc/openvpn.8
> +++ b/doc/openvpn.8
> @@ -1240,6 +1240,17 @@ on non-Windows clients).
>  Block access to local LAN when the tunnel is active, except for
>  the LAN gateway itself.  This is accomplished by routing the local
>  LAN (except for the LAN gateway address) into the tunnel.
> +
> +.B ipv6 --
> +Redirect IPv6 routing into the tunnel.  This works similar to the
> +.B def1
> +flag, that is, more specific IPv6 routes are added (2000::/4, 3000::/4),
> +covering the whole IPv6 unicast space.
> +
> +.B !ipv4 --
> +Do not redirect IPv4 traffic - typically used in the flag pair
> +.B "ipv6 !ipv4"
> +to redirect IPv6-only.
>  .\"*********************************************************
>  .TP
>  .B \-\-link\-mtu n
> diff --git a/src/openvpn/init.c b/src/openvpn/init.c
> index 0416e35..c47f4a8 100644
> --- a/src/openvpn/init.c
> +++ b/src/openvpn/init.c
> @@ -1195,6 +1195,21 @@ do_init_route_ipv6_list (const struct options *options,
>    if (options->route_default_metric)
>      metric = options->route_default_metric;
>  
> +  /* redirect (IPv6) gateway to VPN?  if yes, add a few more specifics
> +   */
> +  if ( options->routes_ipv6->flags & RG_REROUTE_GW )
> +    {
> +      char *opt_list[] = { "::/3", "2000::/4", "3000::/4", "fc00::/7", NULL 
> };
> +      int i;
> +
>
I cannot judge how good or bad this default list is. I usually have don
the the ::/1 and 8000::/1 stuff.

Otherwise the patch is fine, so ACK.

Arne

Reply via email to