Merge changes Ib80f814f,Ic605e489
* changes: Use new API - getIpSecNetIdRange() in IpSecService Add a new API to get the network ID range of IPSec tunnel interface
This commit is contained in:
@@ -7,6 +7,7 @@ package android.net {
|
|||||||
|
|
||||||
public class ConnectivityManager {
|
public class ConnectivityManager {
|
||||||
method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot();
|
method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot();
|
||||||
|
method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.os.Handler, @NonNull android.net.ConnectivityManager.NetworkCallback);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
||||||
|
|||||||
@@ -5053,4 +5053,21 @@ public class ConnectivityManager {
|
|||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The first network ID of IPSec tunnel interface.
|
||||||
|
private static final int TUN_INTF_NETID_START = 0xFC00;
|
||||||
|
// The network ID range of IPSec tunnel interface.
|
||||||
|
private static final int TUN_INTF_NETID_RANGE = 0x0400;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the network ID range reserved for IPSec tunnel interfaces.
|
||||||
|
*
|
||||||
|
* @return A Range which indicates the network ID range of IPSec tunnel interface.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
@NonNull
|
||||||
|
public static Range<Integer> getIpSecNetIdRange() {
|
||||||
|
return new Range(TUN_INTF_NETID_START, TUN_INTF_NETID_START + TUN_INTF_NETID_RANGE - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.server;
|
package com.android.server;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
import android.util.SparseBooleanArray;
|
import android.util.SparseBooleanArray;
|
||||||
|
|
||||||
import com.android.internal.annotations.GuardedBy;
|
import com.android.internal.annotations.GuardedBy;
|
||||||
@@ -31,7 +32,7 @@ public class NetIdManager {
|
|||||||
// Sequence number for Networks; keep in sync with system/netd/NetworkController.cpp
|
// Sequence number for Networks; keep in sync with system/netd/NetworkController.cpp
|
||||||
public static final int MIN_NET_ID = 100; // some reserved marks
|
public static final int MIN_NET_ID = 100; // some reserved marks
|
||||||
// Top IDs reserved by IpSecService
|
// Top IDs reserved by IpSecService
|
||||||
public static final int MAX_NET_ID = 65535 - IpSecService.TUN_INTF_NETID_RANGE;
|
public static final int MAX_NET_ID = ConnectivityManager.getIpSecNetIdRange().getLower() - 1;
|
||||||
|
|
||||||
@GuardedBy("mNetIdInUse")
|
@GuardedBy("mNetIdInUse")
|
||||||
private final SparseBooleanArray mNetIdInUse = new SparseBooleanArray();
|
private final SparseBooleanArray mNetIdInUse = new SparseBooleanArray();
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
import android.net.INetd;
|
import android.net.INetd;
|
||||||
import android.net.IpSecAlgorithm;
|
import android.net.IpSecAlgorithm;
|
||||||
import android.net.IpSecConfig;
|
import android.net.IpSecConfig;
|
||||||
@@ -47,6 +48,7 @@ import android.os.Process;
|
|||||||
import android.system.ErrnoException;
|
import android.system.ErrnoException;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.system.StructStat;
|
import android.system.StructStat;
|
||||||
|
import android.util.Range;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
@@ -647,9 +649,9 @@ public class IpSecServiceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReserveNetId() {
|
public void testReserveNetId() {
|
||||||
int start = mIpSecService.TUN_INTF_NETID_START;
|
final Range<Integer> netIdRange = ConnectivityManager.getIpSecNetIdRange();
|
||||||
for (int i = 0; i < mIpSecService.TUN_INTF_NETID_RANGE; i++) {
|
for (int netId = netIdRange.getLower(); netId <= netIdRange.getUpper(); netId++) {
|
||||||
assertEquals(start + i, mIpSecService.reserveNetId());
|
assertEquals(netId, mIpSecService.reserveNetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that resource exhaustion triggers an exception
|
// Check that resource exhaustion triggers an exception
|
||||||
@@ -661,7 +663,7 @@ public class IpSecServiceTest {
|
|||||||
|
|
||||||
// Now release one and try again
|
// Now release one and try again
|
||||||
int releasedNetId =
|
int releasedNetId =
|
||||||
mIpSecService.TUN_INTF_NETID_START + mIpSecService.TUN_INTF_NETID_RANGE / 2;
|
netIdRange.getLower() + (netIdRange.getUpper() - netIdRange.getLower()) / 2;
|
||||||
mIpSecService.releaseNetId(releasedNetId);
|
mIpSecService.releaseNetId(releasedNetId);
|
||||||
assertEquals(releasedNetId, mIpSecService.reserveNetId());
|
assertEquals(releasedNetId, mIpSecService.reserveNetId());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user