summaryrefslogtreecommitdiffstats
path: root/src/openvpn/route.c
diff options
context:
space:
mode:
authorGert Doering <gert@greenie.muc.de>2014-04-13 13:12:02 +0200
committerGert Doering <gert@greenie.muc.de>2014-04-13 21:34:44 +0200
commit4b4fac9184fcea1eab4f4223309211780cee188a (patch)
treeee572a34e2ae8ae708d48cf7b0fc33dfcdcfb57a /src/openvpn/route.c
parent2903eba5dfe35c981329a833845e24de3882161a (diff)
downloadopenvpn-4b4fac9184fcea1eab4f4223309211780cee188a.tar.gz
openvpn-4b4fac9184fcea1eab4f4223309211780cee188a.tar.xz
openvpn-4b4fac9184fcea1eab4f4223309211780cee188a.zip
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+openvpn@bgtn.net> Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Cedric Tabary <cedric+openvpn@bgtn.net> Message-Id: <20140413170648.GU16637@greenie.muc.de> URL: http://article.gmane.org/gmane.network.openvpn.devel/8499
Diffstat (limited to 'src/openvpn/route.c')
-rw-r--r--src/openvpn/route.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/openvpn/route.c b/src/openvpn/route.c
index 825ea47..1d9da42 100644
--- a/src/openvpn/route.c
+++ b/src/openvpn/route.c
@@ -1958,10 +1958,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)