summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/connectivity/Vpn.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java
index 2fc972fc2152..63d39588bb5d 100644
--- a/services/java/com/android/server/connectivity/Vpn.java
+++ b/services/java/com/android/server/connectivity/Vpn.java
@@ -467,15 +467,15 @@ public class Vpn extends BaseNetworkStateTracker {
private native int jniCheck(String interfaze);
private native void jniProtect(int socket, String interfaze);
- private static String findLegacyVpnGateway(LinkProperties prop) {
- for (RouteInfo route : prop.getRoutes()) {
+ private static RouteInfo findIPv4DefaultRoute(LinkProperties prop) {
+ for (RouteInfo route : prop.getAllRoutes()) {
// Currently legacy VPN only works on IPv4.
if (route.isDefaultRoute() && route.getGateway() instanceof Inet4Address) {
- return route.getGateway().getHostAddress();
+ return route;
}
}
- throw new IllegalStateException("Unable to find suitable gateway");
+ throw new IllegalStateException("Unable to find IPv4 default gateway");
}
/**
@@ -488,8 +488,9 @@ public class Vpn extends BaseNetworkStateTracker {
throw new IllegalStateException("KeyStore isn't unlocked");
}
- final String iface = egress.getInterfaceName();
- final String gateway = findLegacyVpnGateway(egress);
+ final RouteInfo ipv4DefaultRoute = findIPv4DefaultRoute(egress);
+ final String gateway = ipv4DefaultRoute.getGateway().getHostAddress();
+ final String iface = ipv4DefaultRoute.getInterface();
// Load certificates.
String privateKey = "";