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> List-Post: openvpn-devel@lists.sourceforge.net 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
pgpeKuwBbXnvJ.pgp
Description: PGP signature