diff options
| author | 2019-02-20 04:26:25 -0800 | |
|---|---|---|
| committer | 2019-02-20 04:26:25 -0800 | |
| commit | 12d2de64172e369afcbe9e8e832c69ed7a87c7aa (patch) | |
| tree | 74cd77d9efeccf1e57b8f232a902649c679f23bc | |
| parent | 94dbe8d0e3807ac6fe2fdce79f8398352aa604b7 (diff) | |
| parent | e000de90f47dc3f65d835b4ffd4bc78569a8988c (diff) | |
Merge "Skip unreachable route when estimating VPN destinations" am: 21078b1edd
am: e000de90f4
Change-Id: Ia9301b3bf52b42a742f1f6b3a02499a1404ed3f1
| -rw-r--r-- | services/core/java/com/android/server/connectivity/Vpn.java | 1 | ||||
| -rw-r--r-- | tests/net/java/com/android/server/connectivity/VpnTest.java | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index a7d16d8cd6ec..205fc7786e95 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -917,6 +917,7 @@ public class Vpn { TreeSet<IpPrefix> ipv4Prefixes = new TreeSet<>(prefixLengthComparator); TreeSet<IpPrefix> ipv6Prefixes = new TreeSet<>(prefixLengthComparator); for (final RouteInfo route : routes) { + if (route.getType() == RouteInfo.RTN_UNREACHABLE) continue; IpPrefix destination = route.getDestination(); if (destination.isIPv4()) { ipv4Prefixes.add(destination); diff --git a/tests/net/java/com/android/server/connectivity/VpnTest.java b/tests/net/java/com/android/server/connectivity/VpnTest.java index f169d6b5bee3..b5d1ff9a0298 100644 --- a/tests/net/java/com/android/server/connectivity/VpnTest.java +++ b/tests/net/java/com/android/server/connectivity/VpnTest.java @@ -28,6 +28,7 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_VPN; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; +import static android.net.RouteInfo.RTN_UNREACHABLE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -89,6 +90,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.net.Inet4Address; +import java.net.Inet6Address; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; @@ -775,6 +777,16 @@ public class VpnTest { // V4 does not, but V6 has sufficient coverage again lp.addRoute(new RouteInfo(new IpPrefix("::/1"))); assertTrue(Vpn.providesRoutesToMostDestinations(lp)); + + lp.clear(); + // V4-unreachable route should not be treated as sufficient coverage + lp.addRoute(new RouteInfo(new IpPrefix(Inet4Address.ANY, 0), RTN_UNREACHABLE)); + assertFalse(Vpn.providesRoutesToMostDestinations(lp)); + + lp.clear(); + // V6-unreachable route should not be treated as sufficient coverage + lp.addRoute(new RouteInfo(new IpPrefix(Inet6Address.ANY, 0), RTN_UNREACHABLE)); + assertFalse(Vpn.providesRoutesToMostDestinations(lp)); } @Test |