Hi,

This works perfectly on win8.1, win7 sp1 and winXP sp3 :)

Thank you

Cédric



* Gert Doering <g...@greenie.muc.de> [2014-04-13 19:06 +0200]:
> Hi,
> 
> On Sun, Apr 13, 2014 at 03:39:20PM +0200, Cedric Tabary wrote:
> > Bug is still there in this build,
> > I think you patched the route removal but not the ipv6 address removal
> > on the interface itself.
> 
> Next try.  Thanks for your patience :-) - this patch + installer do the
> "store=active" both on the "address delete" and on the "route delete",
> so it would be good to know that it works on both ends of the spectrum,
> Win XP and Win 8.1
> 
>   http://www.greenie.net/ipv6/openvpn-install-2.3.3-win8fix-I100-i686.exe
>   http://www.greenie.net/ipv6/openvpn-install-2.3.3-win8fix-I100-x86_64.exe
> 
> gert
> -- 
> USENET is *not* the non-clickable part of WWW!
>                                                            //www.muc.de/~gert/
> Gert Doering - Munich, Germany                             g...@greenie.muc.de
> fax: +49-89-35655025                        g...@net.informatik.tu-muenchen.de

> From ee4a33029d1aafd1aa3c85f0317a93612c03ea1a Mon Sep 17 00:00:00 2001
> From: Gert Doering <g...@greenie.muc.de>
> Date: Sun, 13 Apr 2014 13:12:02 +0200
> Subject: [PATCH] IPv6 address/route delete fix for Win8
> 
> Use "store=active" for IPv6 address and route deletion - seems to be
> required on Windows 8 and up, and not doing it will break OpenVPN
> reconnection (old addresses are not properly deleted, thus address can
> not be configured on connect).
> 
> Reported-by: Cedric <cedric+open...@bgtn.net>
> Signed-off-by: Gert Doering <g...@greenie.muc.de>
> ---
>  src/openvpn/route.c | 8 +++++++-
>  src/openvpn/tun.c   | 6 +++++-
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/openvpn/route.c b/src/openvpn/route.c
> index 6333ee7..f470f7e 100644
> --- a/src/openvpn/route.c
> +++ b/src/openvpn/route.c
> @@ -1974,10 +1974,16 @@ delete_route_ipv6 (const struct route_ipv6 *r6, const 
> struct tuntap *tt, unsigne
>      argv_printf_cat (&argv, "METRIC %d", r->metric);
>  #endif
>  
> +  /* Windows XP to 7 "just delete" routes, wherever they came from, but
> +   * in Windows 8(.1?), if you create them with "store=active", this is
> +   * how you should delete them as well (pointed out by Cedric Tabary)
> +   */
> +  argv_printf_cat( &argv, " store=active" );
> +
>    argv_msg (D_ROUTE, &argv);
>  
>    netcmd_semaphore_lock ();
> -  openvpn_execve_check (&argv, es, 0, "ERROR: Windows route add ipv6 command 
> failed");
> +  openvpn_execve_check (&argv, es, 0, "ERROR: Windows route delete ipv6 
> command failed");
>    netcmd_semaphore_release ();
>  
>  #elif defined (TARGET_SOLARIS)
> diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c
> index 976cc52..ba4b15e 100644
> --- a/src/openvpn/tun.c
> +++ b/src/openvpn/tun.c
> @@ -5196,10 +5196,14 @@ close_tun (struct tuntap *tt)
>         /* remove route pointing to interface */
>         delete_route_connected_v6_net(tt, NULL);
>  
> +       /* "store=active" is needed in Windows 8(.1) to delete the
> +        * address we added (pointed out by Cedric Tabary).
> +        */
> +
>         /* netsh interface ipv6 delete address \"%s\" %s */
>         ifconfig_ipv6_local = print_in6_addr (tt->local_ipv6, 0,  &gc);
>         argv_printf (&argv,
> -                 "%s%sc interface ipv6 delete address %s %s",
> +                 "%s%sc interface ipv6 delete address %s %s store=active",
>                    get_win_sys_path(),
>                    NETSH_PATH_SUFFIX,
>                    tt->actual_name,
> -- 
> 1.8.3.2
> 




Reply via email to