diff options
Diffstat (limited to 'main/src')
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java | 17 | ||||
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java | 18 |
2 files changed, 20 insertions, 15 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java index 5fa70cc8..0da067ab 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java @@ -22,10 +22,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Locale;
-import java.util.Vector;
+import java.util.*;
public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
@@ -380,11 +377,19 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement { } else if (needed.equals("ROUTE")) {
String[] routeparts = extra.split(" ");
- if(routeparts.length>3) {
+ /*
+ buf_printf (&out, "%s %s %s dev %s", network, netmask, gateway, rgi->iface);
+ else
+ buf_printf (&out, "%s %s %s", network, netmask, gateway);
+ */
+
+ if(routeparts.length==5) {
assert(routeparts[3].equals("dev"));
mOpenVPNService.addRoute(routeparts[0], routeparts[1], routeparts[2], routeparts[4]);
- } else {
+ } else if (routeparts.length == 3) {
mOpenVPNService.addRoute(routeparts[0], routeparts[1], routeparts[2], null);
+ } else {
+ VpnStatus.logError("Unrecognized ROUTE cmd:" + Arrays.toString(routeparts) + " | " + argument);
}
} else if (needed.equals("ROUTE6")) {
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java index 49f315a3..bc3fe552 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java @@ -591,25 +591,25 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac public void setLocalIP(String local, String netmask, int mtu, String mode) { mLocalIP = new CIDRIP(local, netmask); mMtu = mtu; + mRemoteGW=null; + if (mLocalIP.len == 32 && !netmask.equals("255.255.255.255")) { // get the netmask as IP - long netint = CIDRIP.getInt(netmask); - if (Math.abs(netint - mLocalIP.getInt()) == 1) { + long netMaskAsInt = CIDRIP.getInt(netmask); + + // Netmask is Ip address +/-1, assume net30/p2p with small net + if (Math.abs(netMaskAsInt - mLocalIP.getInt()) == 1) { if ("net30".equals(mode)) mLocalIP.len = 30; else mLocalIP.len = 31; } else { - VpnStatus.logWarning(R.string.ip_not_cidr, local, netmask, mode); + if (!"p2p".equals(mode)) + VpnStatus.logWarning(R.string.ip_not_cidr, local, netmask, mode); + mRemoteGW=netmask; } } - - if ("p2p".equals(mode)) - mRemoteGW=netmask; - else - mRemoteGW=null; - } public void setLocalIPv6(String ipv6addr) { |