Merge changes Ib80f814f,Ic605e489 am: 2eda97f001
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1626209 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I94fd187e5f2cc0428807668f82b3a29ad8b66c47
This commit is contained in:
@@ -56,6 +56,7 @@ import android.system.Os;
|
|||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.util.Range;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import android.util.SparseBooleanArray;
|
import android.util.SparseBooleanArray;
|
||||||
@@ -756,13 +757,9 @@ public class IpSecService extends IIpSecService.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// These values have been reserved in NetIdManager
|
|
||||||
@VisibleForTesting static final int TUN_INTF_NETID_START = 0xFC00;
|
|
||||||
|
|
||||||
public static final int TUN_INTF_NETID_RANGE = 0x0400;
|
|
||||||
|
|
||||||
private final SparseBooleanArray mTunnelNetIds = new SparseBooleanArray();
|
private final SparseBooleanArray mTunnelNetIds = new SparseBooleanArray();
|
||||||
private int mNextTunnelNetIdIndex = 0;
|
final Range<Integer> mNetIdRange = ConnectivityManager.getIpSecNetIdRange();
|
||||||
|
private int mNextTunnelNetId = mNetIdRange.getLower();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reserves a netId within the range of netIds allocated for IPsec tunnel interfaces
|
* Reserves a netId within the range of netIds allocated for IPsec tunnel interfaces
|
||||||
@@ -775,11 +772,13 @@ public class IpSecService extends IIpSecService.Stub {
|
|||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
int reserveNetId() {
|
int reserveNetId() {
|
||||||
|
final int range = mNetIdRange.getUpper() - mNetIdRange.getLower() + 1;
|
||||||
synchronized (mTunnelNetIds) {
|
synchronized (mTunnelNetIds) {
|
||||||
for (int i = 0; i < TUN_INTF_NETID_RANGE; i++) {
|
for (int i = 0; i < range; i++) {
|
||||||
int index = mNextTunnelNetIdIndex;
|
final int netId = mNextTunnelNetId;
|
||||||
int netId = index + TUN_INTF_NETID_START;
|
if (++mNextTunnelNetId > mNetIdRange.getUpper()) {
|
||||||
if (++mNextTunnelNetIdIndex >= TUN_INTF_NETID_RANGE) mNextTunnelNetIdIndex = 0;
|
mNextTunnelNetId = mNetIdRange.getLower();
|
||||||
|
}
|
||||||
if (!mTunnelNetIds.get(netId)) {
|
if (!mTunnelNetIds.get(netId)) {
|
||||||
mTunnelNetIds.put(netId, true);
|
mTunnelNetIds.put(netId, true);
|
||||||
return netId;
|
return netId;
|
||||||
|
|||||||
Reference in New Issue
Block a user