From: Daniel Lenski Date: Sat, 5 Sep 2020 18:10:12 +0000 (-0700) Subject: Merge branch 'kinolaev/vpnc-scripts-kinolaev-master-patch-75707' into 'master' X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=9d0294069dae28c1a59f6e838b10256972cf92c3;p=users%2Fdwmw2%2Fvpnc-scripts.git Merge branch 'kinolaev/vpnc-scripts-kinolaev-master-patch-75707' into 'master' Windows: Specify interface when adding routes See merge request !10 --- 9d0294069dae28c1a59f6e838b10256972cf92c3 diff --cc vpnc-script-win.js index d7c8150,46165a3..99946a8 --- a/vpnc-script-win.js +++ b/vpnc-script-win.js @@@ -105,94 -105,95 +105,94 @@@ case "connect" " mask 255.255.255.255 " + gw); if (env("INTERNAL_IP4_NBNS")) { - 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] - + " index=" + (i+1)); - } - } + 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] + + " index=" + (i+1)); + } + } if (env("INTERNAL_IP4_DNS")) { - var dns = env("INTERNAL_IP4_DNS").split(/ /); - for (var i = 0; i < dns.length; i++) { - var protocol = dns[i].indexOf(":") !== -1 ? "ipv6" : "ipv4"; - run("netsh interface " + protocol + " add dns \"" + - env("TUNDEV") + "\" " + dns[i] - + " index=" + (i+1)); - } - } - echo("done."); - - // Add internal network routes + var dns = env("INTERNAL_IP4_DNS").split(/ /); + for (var i = 0; i < dns.length; i++) { + var protocol = dns[i].indexOf(":") !== -1 ? "ipv6" : "ipv4"; + run("netsh interface " + protocol + " add dns \"" + + env("TUNDEV") + "\" " + dns[i] + + " index=" + (i+1)); + } + } + echo("done."); + + // Add internal network routes echo("Configuring Legacy IP networks:"); if (env("CISCO_SPLIT_INC")) { - // Waiting for the interface to be configured before to add routes - if (!waitForInterface()) { - echo("Interface does not seem to be up."); - } - - for (var i = 0 ; i < parseInt(env("CISCO_SPLIT_INC")); i++) { - var network = env("CISCO_SPLIT_INC_" + i + "_ADDR"); - var netmask = env("CISCO_SPLIT_INC_" + i + "_MASK"); - var netmasklen = env("CISCO_SPLIT_INC_" + i + - "_MASKLEN"); - run("route add " + network + " mask " + netmask + - " " + internal_gw + " if " + env("TUNIDX")); - } - } else if (REDIRECT_GATEWAY_METHOD > 0) { - // Waiting for the interface to be configured before to add routes - if (!waitForInterface()) { - echo("Interface does not seem to be up."); - } - - if (REDIRECT_GATEWAY_METHOD == 1) { - run("route add 0.0.0.0 mask 0.0.0.0 " + internal_gw + " metric 1"); - } else { - run("route add 0.0.0.0 mask 128.0.0.0 " + internal_gw); - run("route add 128.0.0.0 mask 128.0.0.0 " + internal_gw); - } - } - echo("Route configuration done."); + // Waiting for the interface to be configured before to add routes + if (!waitForInterface()) { + echo("Interface does not seem to be up."); + } + + for (var i = 0 ; i < parseInt(env("CISCO_SPLIT_INC")); i++) { + var network = env("CISCO_SPLIT_INC_" + i + "_ADDR"); + var netmask = env("CISCO_SPLIT_INC_" + i + "_MASK"); + var netmasklen = env("CISCO_SPLIT_INC_" + i + + "_MASKLEN"); + run("route add " + network + " mask " + netmask + - " " + internal_gw); ++ " " + internal_gw + " if " + env("TUNIDX")); + } + } else if (REDIRECT_GATEWAY_METHOD > 0) { + // Waiting for the interface to be configured before to add routes + if (!waitForInterface()) { + echo("Interface does not seem to be up."); + } + + if (REDIRECT_GATEWAY_METHOD == 1) { + run("route add 0.0.0.0 mask 0.0.0.0 " + internal_gw + " metric 1"); + } else { + run("route add 0.0.0.0 mask 128.0.0.0 " + internal_gw); + run("route add 128.0.0.0 mask 128.0.0.0 " + internal_gw); + } + } + echo("Route configuration done."); if (env("INTERNAL_IP6_ADDRESS")) { - echo("Configuring \"" + env("TUNDEV") + "\" interface for IPv6..."); - - run("netsh interface ipv6 set address \"" + env("TUNDEV") + "\" " + - env("INTERNAL_IP6_ADDRESS") + " store=active"); - - echo("done."); - - // Add internal network routes - 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") - } - - if (env("CISCO_IPV6_SPLIT_INC")) { - for (var i = 0 ; i < parseInt(env("CISCO_IPV6_SPLIT_INC")); i++) { - var network = env("CISCO_IPV6_SPLIT_INC_" + i + "_ADDR"); - var netmasklen = env("CISCO_SPLIT_INC_" + i + - "_MASKLEN"); - run("netsh interface ipv6 add route " + network + "/" + - netmasklen + " \"" + env("TUNDEV") + "\" fe80::8 store=active") - } - } else { - echo("Setting default IPv6 route through VPN."); - run("netsh interface ipv6 add route 2000::/3 \"" + env("TUNDEV") + - "\" fe80::8 store=active"); - } - echo("IPv6 route configuration done."); - } - - if (env("CISCO_BANNER")) { - echo("--------------------------------------------------"); - echo(env("CISCO_BANNER")); - echo("--------------------------------------------------"); - } - break; + echo("Configuring \"" + env("TUNDEV") + "\" interface for IPv6..."); + + run("netsh interface ipv6 set address \"" + env("TUNDEV") + "\" " + + env("INTERNAL_IP6_ADDRESS") + " store=active"); + + echo("done."); + + // Add internal network routes + 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") + } + + if (env("CISCO_IPV6_SPLIT_INC")) { + for (var i = 0 ; i < parseInt(env("CISCO_IPV6_SPLIT_INC")); i++) { + var network = env("CISCO_IPV6_SPLIT_INC_" + i + "_ADDR"); + var netmasklen = env("CISCO_SPLIT_INC_" + i + + "_MASKLEN"); + run("netsh interface ipv6 add route " + network + "/" + + netmasklen + " \"" + env("TUNDEV") + "\" fe80::8 store=active") + } + } else { + echo("Setting default IPv6 route through VPN."); + run("netsh interface ipv6 add route 2000::/3 \"" + env("TUNDEV") + + "\" fe80::8 store=active"); + } + echo("IPv6 route configuration done."); + } + + if (env("CISCO_BANNER")) { + echo("--------------------------------------------------"); + echo(env("CISCO_BANNER")); + echo("--------------------------------------------------"); + } + break; case "disconnect": - // Delete direct route for the VPN gateway to avoid - run("route delete " + env("VPNGATEWAY") + " mask 255.255.255.255"); + // Delete direct route for the VPN gateway to avoid + run("route delete " + env("VPNGATEWAY") + " mask 255.255.255.255"); } -