diff options
author | Arne Schwabe <arne@rfc2549.org> | 2014-12-01 19:00:31 +0100 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2014-12-01 19:00:31 +0100 |
commit | 97f7e247c61994ca22f7bc70980ec0b063d59e1c (patch) | |
tree | e572df3297ff81d6d4c67e0ef9d1c610c152dff9 | |
parent | edf90cc5d3ff50d2f27de67d259aeb0759d5fdff (diff) |
Fix block local LAN on non KK,LP devices
--HG--
extra : rebase_source : cdd438f410d402bffbee241e3afa12c0fc319bbe
-rw-r--r-- | main/src/main/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java | 9 | ||||
-rw-r--r-- | main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml index 8f478bcc..e226bdfc 100644 --- a/main/src/main/AndroidManifest.xml +++ b/main/src/main/AndroidManifest.xml @@ -42,7 +42,6 @@ <activity android:name=".activities.FileSelect" /> <activity android:name=".activities.MainActivity" - android:uiOptions="splitActionBarWhenNarrow" tools:ignore="ExportedActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java index fd3dee92..701909d1 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java +++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java @@ -21,6 +21,8 @@ import de.blinkt.openvpn.BuildConfig; public class NetworkSpace { + + static class ipAddress implements Comparable<ipAddress> { private BigInteger netAddress; public int networkMask; @@ -198,6 +200,13 @@ public class NetworkSpace { mIpAddresses.add(new ipAddress(cidrIp, include)); } + public void addIPSplit(CIDRIP cidrIp, boolean include) { + ipAddress newIP = new ipAddress(cidrIp, include); + ipAddress[] splitIps = newIP.split(); + for (ipAddress split: splitIps) + mIpAddresses.add(split); + } + void addIPv6(Inet6Address address, int mask, boolean included) { mIpAddresses.add(new ipAddress(address, mask, included)); } 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 29009e5c..3f16248d 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java @@ -16,7 +16,6 @@ import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.net.ConnectivityManager; -import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.VpnService; import android.os.Binder; @@ -651,7 +650,8 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac continue; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT && !mProfile.mAllowLocalLAN) { - mRoutes.addIP(new CIDRIP(ipAddr,netMask), true); + mRoutes.addIPSplit(new CIDRIP(ipAddr,netMask), true); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && mProfile.mAllowLocalLAN) mRoutes.addIP(new CIDRIP(ipAddr,netMask), false); } |