]> www.infradead.org Git - users/dwmw2/vpnc-scripts.git/commitdiff
Merge branch 'kinolaev/vpnc-scripts-kinolaev-master-patch-75707' into 'master'
authorDaniel Lenski <dlenski@gmail.com>
Sat, 5 Sep 2020 18:10:12 +0000 (11:10 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Sat, 5 Sep 2020 18:10:12 +0000 (11:10 -0700)
Windows: Specify interface when adding routes

See merge request !10

1  2 
vpnc-script-win.js

index d7c8150b87146c898cdb2ddd1e1a0b27b6368a04,46165a3f46b25daf7b877e549aa6b1591c0c989d..99946a833dc9433d6ab9c7ed78c3f32e80700d0b
@@@ -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");
  }
 -