summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2014-02-16 16:09:34 +0100
committerArne Schwabe <arne@rfc2549.org>2014-02-16 16:09:34 +0100
commit7b0b321f61849816bb4e3cd24c15a4d87ffdff39 (patch)
tree57809b88f6fa1471acf40cf1404e499f8e6c647c
parent4c08142e279e1fa459864900f953f40b1d1138f6 (diff)
If weird topology mismatching configurations, log route errors instead of quitting
-rw-r--r--main/build.gradle4
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java17
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java18
3 files changed, 22 insertions, 17 deletions
diff --git a/main/build.gradle b/main/build.gradle
index 8b03c862..326dad78 100644
--- a/main/build.gradle
+++ b/main/build.gradle
@@ -24,8 +24,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
- versionCode = 89
- versionName = "0.6.8"
+ versionCode = 90
+ versionName = "0.6.9"
}
sourceSets {
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) {