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:
Lucas Lin
2021-03-12 03:56:18 +00:00
committed by Automerger Merge Worker

View File

@@ -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;