summaryrefslogtreecommitdiff
path: root/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java22
1 files changed, 19 insertions, 3 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
index 00f45ed4..f104d3b0 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
@@ -14,14 +14,18 @@ import android.text.TextUtils;
import java.net.Inet4Address;
import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Vector;
+import de.blinkt.openvpn.R;
+
public class NetworkUtils {
public static Vector<String> getLocalNetworks(Context c, boolean ipv6) {
- Vector<String> nets = new Vector<>();
ConnectivityManager conn = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
+ Vector<String> nets = new Vector<>();
Network[] networks = conn.getAllNetworks();
for (Network network : networks) {
NetworkInfo ni = conn.getNetworkInfo(network);
@@ -29,6 +33,10 @@ public class NetworkUtils {
NetworkCapabilities nc = conn.getNetworkCapabilities(network);
+ // Ignore network if it has no capabilities
+ if (nc == null)
+ continue;
+
// Skip VPN networks like ourselves
if (nc.hasTransport(NetworkCapabilities.TRANSPORT_VPN))
continue;
@@ -40,8 +48,16 @@ public class NetworkUtils {
for (LinkAddress la : li.getLinkAddresses()) {
if ((la.getAddress() instanceof Inet4Address && !ipv6) ||
- (la.getAddress() instanceof Inet6Address && ipv6))
- nets.add(la.toString());
+ (la.getAddress() instanceof Inet6Address && ipv6)) {
+ //nets.add(la.toString());
+ NetworkSpace.IpAddress ipaddress;
+ if (la.getAddress() instanceof Inet6Address)
+ ipaddress = new NetworkSpace.IpAddress((Inet6Address) la.getAddress(), la.getPrefixLength(), true);
+ else
+ ipaddress = new NetworkSpace.IpAddress(new CIDRIP(la.getAddress().getHostAddress(), la.getPrefixLength()), true);
+
+ nets.add(ipaddress.toString());
+ }
}
}