Update VPN isolation code for excluded routes
Bug: 230058738 Test: atest LinkPropertiesTest Result: https://paste.googleplex.com/4706859672928256 Change-Id: I970fca6b0e2cd358e9bd77152563d13367867c74
This commit is contained in:
@@ -1365,6 +1365,21 @@ public final class LinkProperties implements Parcelable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if this link has a throw route.
|
||||||
|
*
|
||||||
|
* @return {@code true} if there is an exclude route, {@code false} otherwise.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean hasExcludeRoute() {
|
||||||
|
for (RouteInfo r : mRoutes) {
|
||||||
|
if (r.getType() == RouteInfo.RTN_THROW) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares this {@code LinkProperties} interface name against the target
|
* Compares this {@code LinkProperties} interface name against the target
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -8056,7 +8056,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
&& nc.getOwnerUid() != Process.SYSTEM_UID
|
&& nc.getOwnerUid() != Process.SYSTEM_UID
|
||||||
&& lp.getInterfaceName() != null
|
&& lp.getInterfaceName() != null
|
||||||
&& (lp.hasIpv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute())
|
&& (lp.hasIpv4DefaultRoute() || lp.hasIpv4UnreachableDefaultRoute())
|
||||||
&& (lp.hasIpv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute());
|
&& (lp.hasIpv6DefaultRoute() || lp.hasIpv6UnreachableDefaultRoute())
|
||||||
|
&& !lp.hasExcludeRoute();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static UidRangeParcel[] toUidRangeStableParcels(final @NonNull Set<UidRange> ranges) {
|
private static UidRangeParcel[] toUidRangeStableParcels(final @NonNull Set<UidRange> ranges) {
|
||||||
|
|||||||
@@ -1261,6 +1261,17 @@ public class LinkPropertiesTest {
|
|||||||
assertFalse(lp.hasIpv4UnreachableDefaultRoute());
|
assertFalse(lp.hasIpv4UnreachableDefaultRoute());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test @IgnoreUpTo(Build.VERSION_CODES.S_V2)
|
||||||
|
public void testHasExcludeRoute() {
|
||||||
|
LinkProperties lp = new LinkProperties();
|
||||||
|
lp.setInterfaceName("VPN");
|
||||||
|
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV4, 2), RTN_UNICAST));
|
||||||
|
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 0), RTN_UNICAST));
|
||||||
|
assertFalse(lp.hasExcludeRoute());
|
||||||
|
lp.addRoute(new RouteInfo(new IpPrefix(ADDRV6, 2), RTN_THROW));
|
||||||
|
assertTrue(lp.hasExcludeRoute());
|
||||||
|
}
|
||||||
|
|
||||||
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
@Test @IgnoreUpTo(Build.VERSION_CODES.Q)
|
||||||
@EnableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
@EnableCompatChanges({LinkProperties.EXCLUDED_ROUTES})
|
||||||
public void testRouteAddWithSameKey() throws Exception {
|
public void testRouteAddWithSameKey() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user