diff options
| author | Lorenzo Colitti <lorenzo@google.com> | 2020-04-02 04:10:12 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-04-02 04:10:12 +0000 |
| commit | 4fa9742c4de5b803c7fb3a63309d0845824ea4ac (patch) | |
| tree | 222cb2bc1003eb9da33c0b81d138faad00f21485 /core/java | |
| parent | 6baf734a9b28b3e5b1d7f61e3a93881c362dcec2 (diff) | |
| parent | 080f217945ad2c72369b2cd23c768055a239a9dd (diff) | |
Merge "Only apply VPN isolation if it's fully routed"
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/net/LinkProperties.java | 30 | ||||
| -rw-r--r-- | core/java/android/net/RouteInfo.java | 26 |
2 files changed, 56 insertions, 0 deletions
diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index 7ff954bdc1d2..651494d1c99c 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -1074,6 +1074,21 @@ public final class LinkProperties implements Parcelable { } /** + * Returns true if this link has an IPv4 unreachable default route. + * + * @return {@code true} if there is an IPv4 unreachable default route, {@code false} otherwise. + * @hide + */ + public boolean hasIpv4UnreachableDefaultRoute() { + for (RouteInfo r : mRoutes) { + if (r.isIPv4UnreachableDefault()) { + return true; + } + } + return false; + } + + /** * For backward compatibility. * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely * just yet. @@ -1102,6 +1117,21 @@ public final class LinkProperties implements Parcelable { } /** + * Returns true if this link has an IPv6 unreachable default route. + * + * @return {@code true} if there is an IPv6 unreachable default route, {@code false} otherwise. + * @hide + */ + public boolean hasIpv6UnreachableDefaultRoute() { + for (RouteInfo r : mRoutes) { + if (r.isIPv6UnreachableDefault()) { + return true; + } + } + return false; + } + + /** * For backward compatibility. * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely * just yet. diff --git a/core/java/android/net/RouteInfo.java b/core/java/android/net/RouteInfo.java index dbdaa4c2da67..e550f85e6b9a 100644 --- a/core/java/android/net/RouteInfo.java +++ b/core/java/android/net/RouteInfo.java @@ -426,6 +426,16 @@ public final class RouteInfo implements Parcelable { } /** + * Indicates if this route is an unreachable default route. + * + * @return {@code true} if it's an unreachable route with prefix length of 0. + * @hide + */ + private boolean isUnreachableDefaultRoute() { + return mType == RTN_UNREACHABLE && mDestination.getPrefixLength() == 0; + } + + /** * Indicates if this route is an IPv4 default route. * @hide */ @@ -434,6 +444,14 @@ public final class RouteInfo implements Parcelable { } /** + * Indicates if this route is an IPv4 unreachable default route. + * @hide + */ + public boolean isIPv4UnreachableDefault() { + return isUnreachableDefaultRoute() && mDestination.getAddress() instanceof Inet4Address; + } + + /** * Indicates if this route is an IPv6 default route. * @hide */ @@ -442,6 +460,14 @@ public final class RouteInfo implements Parcelable { } /** + * Indicates if this route is an IPv6 unreachable default route. + * @hide + */ + public boolean isIPv6UnreachableDefault() { + return isUnreachableDefaultRoute() && mDestination.getAddress() instanceof Inet6Address; + } + + /** * Indicates if this route is a host route (ie, matches only a single host address). * * @return {@code true} if the destination has a prefix length of 32 or 128 for IPv4 or IPv6, |
