[PATCH 1/6] Identify TUN interface via its index instead of localized device name

Ľubomír Carik lubomir.carik at gmail.com
Fri Mar 3 14:56:05 PST 2017


Signed-off-by: Ľubomír Carik <Lubomir.Carik at gmail.com>
---
 vpnc-script-win.js | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/vpnc-script-win.js b/vpnc-script-win.js
index a3a0974..709721b 100644
--- a/vpnc-script-win.js
+++ b/vpnc-script-win.js
@@ -67,36 +67,37 @@ case "connect":
 		(address_array[3] & netmask_array[3]) + 1
 	);
 	var internal_gw = internal_gw_array.join(".");
+	var tundevid = env("TUNIDX")
 	
 	echo("VPN Gateway: " + env("VPNGATEWAY"));
 	echo("Internal Address: " + env("INTERNAL_IP4_ADDRESS"));
 	echo("Internal Netmask: " + env("INTERNAL_IP4_NETMASK"));
 	echo("Internal Gateway: " + internal_gw);
-	echo("Interface: \"" + env("TUNDEV") + "\"");
+	echo("Interface idx: \"" + tundevid + "\" (\"" + env("TUNDEV") + "\")");
 	
 	if (env("INTERNAL_IP4_MTU")) {
 	    echo("MTU: " + env("INTERNAL_IP4_MTU"));
-	    run("netsh interface ipv4 set subinterface \"" + env("TUNDEV") +
+	    run("netsh interface ipv4 set subinterface \"" + tundevid +
 		"\" mtu=" + env("INTERNAL_IP4_MTU") + " store=active");
 	    if (env("INTERNAL_IP6_ADDRESS")) {
-		run("netsh interface ipv6 set subinterface \"" + env("TUNDEV") +
+		run("netsh interface ipv6 set subinterface \"" + tundevid +
 		    "\" mtu=" + env("INTERNAL_IP4_MTU") + " store=active");
 	    }
 	}
 
-	echo("Configuring \"" + env("TUNDEV") + "\" interface for Legacy IP...");
+	echo("Configuring \"" + tundevid + "\" interface for Legacy IP...");
 	
 	if (!env("CISCO_SPLIT_INC") && REDIRECT_GATEWAY_METHOD != 2) {
 		// Interface metric must be set to 1 in order to add a route with metric 1 since Windows Vista
-		run("netsh interface ip set interface \"" + env("TUNDEV") + "\" metric=1");
+		run("netsh interface ip set interface \"" + tundevid + "\" metric=1");
 	}
 	
 	if (env("CISCO_SPLIT_INC") || REDIRECT_GATEWAY_METHOD > 0) {
-		run("netsh interface ip set address \"" + env("TUNDEV") + "\" static " +
+		run("netsh interface ip set address \"" + tundevid + "\" static " +
 			env("INTERNAL_IP4_ADDRESS") + " " + env("INTERNAL_IP4_NETMASK"));
 	} else {
 		// The default route will be added automatically
-		run("netsh interface ip set address \"" + env("TUNDEV") + "\" static " +
+		run("netsh interface ip set address \"" + tundevid + "\" static " +
 			env("INTERNAL_IP4_ADDRESS") + " " + env("INTERNAL_IP4_NETMASK") + " " + internal_gw + " 1");
 	}
 
@@ -108,7 +109,7 @@ case "connect":
 		var wins = env("INTERNAL_IP4_NBNS").split(/ /);
 		for (var i = 0; i < wins.length; i++) {
 	                run("netsh interface ip add wins \"" +
-			    env("TUNDEV") + "\" " + wins[i]
+			    tundevid + "\" " + wins[i]
 			    + " index=" + (i+1));
 		}
 	}
@@ -117,7 +118,7 @@ case "connect":
 		var dns = env("INTERNAL_IP4_DNS").split(/ /);
 		for (var i = 0; i < dns.length; i++) {
 	                run("netsh interface ip add dns \"" +
-			    env("TUNDEV") + "\" " + dns[i]
+			    tundevid + "\" " + dns[i]
 			    + " index=" + (i+1));
 		}
 	}
@@ -155,9 +156,9 @@ case "connect":
 	echo("Route configuration done.");
 
         if (env("INTERNAL_IP6_ADDRESS")) {
-		echo("Configuring \"" + env("TUNDEV") + "\" interface for IPv6...");
+		echo("Configuring \"" + tundevid + "\" interface for IPv6...");
 
-		run("netsh interface ipv6 set address \"" + env("TUNDEV") + "\" " +
+		run("netsh interface ipv6 set address \"" + tundevid + "\" " +
 		    env("INTERNAL_IP6_ADDRESS") + " store=active");
 
 		echo("done.");
@@ -166,7 +167,7 @@ case "connect":
 	        echo("Configuring IPv6 networks:");
 	        if (env("INTERNAL_IP6_NETMASK") && !env("INTERNAL_IP6_NETMASK").match("/128$")) {
 			run("netsh interface ipv6 add route " + env("INTERNAL_IP6_NETMASK") +
-			    " \"" + env("TUNDEV") + "\" fe80::8 store=active")
+			    " \"" + tundevid + "\" fe80::8 store=active")
 		}
 
 	        if (env("CISCO_IPV6_SPLIT_INC")) {
@@ -175,11 +176,11 @@ case "connect":
 				var netmasklen = env("CISCO_SPLIT_INC_" + i +
 						 "_MASKLEN");
 				run("netsh interface ipv6 add route " + network + "/" +
-				    netmasklen + " \"" + env("TUNDEV") + "\" fe80::8 store=active")
+				    netmasklen + " \"" + tundevid + "\" fe80::8 store=active")
 			}
 		} else {
 			echo("Setting default IPv6 route through VPN.");
-			run("netsh interface ipv6 add route 2000::/3 \"" + env("TUNDEV") +
+			run("netsh interface ipv6 add route 2000::/3 \"" + tundevid +
 			    "\" fe80::8 store=active");
 		}
 		echo("IPv6 route configuration done.");
-- 
2.12.0.windows.1




More information about the openconnect-devel mailing list