Skip to contentSkip to conversation

Use adapter index for add/delete_route_ipv6

PATCH In review Lev Stipakov 2 participants 2 messages Dec 11, 2015 – Dec 13, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Use adapter index for add/delete_route_ipv6

Trac #637

---
 src/openvpn/route.c | 8 ++++++++
 src/openvpn/tun.c   | 6 +++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
src/openvpn/route.c +8 -0
index 1775a9c..cf5a067 100644
@@ -1623,6 +1623,10 @@ add_route_ipv6 (struct route_ipv6 *r6, const struct tuntap *tt, unsigned int fla
 
 #elif defined (WIN32)
 
+  struct buffer out = alloc_buf_gc (64, &gc);
+  buf_printf (&out, "interface=%d", tt->adapter_index );
+  device = buf_bptr(&out);
+
   /* netsh interface ipv6 add route 2001:db8::/32 MyTunDevice */
   argv_printf (&argv, "%s%sc interface ipv6 add route %s/%d %s",
 	       get_win_sys_path(),
@@ -1954,6 +1958,10 @@ delete_route_ipv6 (const struct route_ipv6 *r6, const struct tuntap *tt, unsigne
 
 #elif defined (WIN32)
 
+  struct buffer out = alloc_buf_gc (64, &gc);
+  buf_printf (&out, "interface=%d", tt->adapter_index );
+  device = buf_bptr(&out);
+
   /* netsh interface ipv6 delete route 2001:db8::/32 MyTunDevice */
   argv_printf (&argv, "%s%sc interface ipv6 delete route %s/%d %s",
 	       get_win_sys_path(),
src/openvpn/tun.c +5 -1
index b4223b1..b08c827 100644
@@ -1231,11 +1231,13 @@ do_ifconfig (struct tuntap *tt,
       {
 	char * saved_actual;
 	char iface[64];
+	DWORD idx;
 
 	if (!strcmp (actual, "NULL"))
 	  msg (M_FATAL, "Error: When using --tun-ipv6, if you have more than one TAP-Windows adapter, you must also specify --dev-node");
 
-	openvpn_snprintf(iface, sizeof(iface), "interface=%lu", get_adapter_index_flexible(actual));
+	idx = get_adapter_index_flexible(actual);
+	openvpn_snprintf(iface, sizeof(iface), "interface=%lu", idx);
 
 	/* example: netsh interface ipv6 set address interface=42 2001:608:8003::d store=active */
 	argv_printf (&argv,
@@ -1253,6 +1255,8 @@ do_ifconfig (struct tuntap *tt,
 	 */
 	saved_actual = tt->actual_name;
 	tt->actual_name = (char*) actual;
+	/* we use adapter_index in add_route_ipv6 */
+	tt->adapter_index = idx;
 	add_route_connected_v6_net(tt, es);
 	tt->actual_name = saved_actual;
       }
Signature · 1 line
1.9.1
#1 lore raw

ACK, thanks. I have not actually built or tested a 2.3 binary, but since the code is nearly the same as for master and that one works nicely, I assume this works as well.

Your patch has been applied to the release/2.3 branch.

commit ca8cead8fd8c00154f35b90593442e2bfa8f735d (release/2.3)

Author: Lev Stipakov
Date:   Sat Dec 12 01:10:30 2015 +0200
     Use adapter index for add/delete_route_ipv6

     Acked-by: Gert Doering <[email protected]...>
     Message-Id: <[email protected]...>
     URL: http://article.gmane.org/gmane.network.openvpn.devel/10760
     Signed-off-by: Gert Doering <[email protected]...>

--
kind regards,

Gert Doering