Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9a4e4aa authored by Yan Yan's avatar Yan Yan Committed by Automerger Merge Worker
Browse files

Merge changes Ib61dfbf9,I18a6c5b3,I461c4167,I3d0dd625 into main am: 4d9d4587 am: cfe88b15

parents 8b1e40a1 cfe88b15
Loading
Loading
Loading
Loading
+0 −34
Original line number Diff line number Diff line
@@ -22,37 +22,3 @@ flag{
    description: "Feature flag for enabling network metric monitor"
    bug: "282996138"
}
 No newline at end of file

flag{
    name: "validate_network_on_ipsec_loss"
    namespace: "vcn"
    description: "Trigger network validation when IPsec packet loss exceeds the threshold"
    bug: "329139898"
}

flag{
    name: "evaluate_ipsec_loss_on_lp_nc_change"
    namespace: "vcn"
    description: "Re-evaluate IPsec packet loss on LinkProperties or NetworkCapabilities change"
    bug: "323238888"
}

flag{
    name: "enforce_main_user"
    namespace: "vcn"
    description: "Enforce main user to make VCN HSUM compatible"
    bug: "310310661"
    metadata {
      purpose: PURPOSE_BUGFIX
    }
}

flag{
    name: "handle_seq_num_leap"
    namespace: "vcn"
    description: "Do not report bad network when there is a suspected sequence number leap"
    bug: "332598276"
    metadata {
      purpose: PURPOSE_BUGFIX
    }
}
 No newline at end of file
+9 −16
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.vcn.Flags;
import android.net.vcn.IVcnManagementService;
import android.net.vcn.IVcnStatusCallback;
import android.net.vcn.IVcnUnderlyingNetworkPolicyListener;
@@ -447,8 +446,6 @@ public class VcnManagementService extends IVcnManagementService.Stub {
        }

        final UserHandle userHandle = UserHandle.getUserHandleForUid(uid);

        if (Flags.enforceMainUser()) {
        final UserManager userManager = mContext.getSystemService(UserManager.class);

        Binder.withCleanCallingIdentity(
@@ -459,10 +456,6 @@ public class VcnManagementService extends IVcnManagementService.Stub {
                                        + " the main user");
                    }
                });
        } else if (!userHandle.isSystem()) {
            throw new SecurityException(
                    "VcnManagementService can only be used by callers running as the primary user");
        }
    }

    private void enforceCallingUserAndCarrierPrivilege(
+9 −16
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.IpSecTransformState;
import android.net.Network;
import android.net.vcn.Flags;
import android.net.vcn.VcnManager;
import android.os.Handler;
import android.os.HandlerExecutor;
@@ -233,7 +232,7 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor {
    @VisibleForTesting(visibility = Visibility.PRIVATE)
    static int getMaxSeqNumIncreasePerSecond(@Nullable PersistableBundleWrapper carrierConfig) {
        int maxSeqNumIncrease = MAX_SEQ_NUM_INCREASE_DEFAULT_DISABLED;
        if (Flags.handleSeqNumLeap() && carrierConfig != null) {
        if (carrierConfig != null) {
            maxSeqNumIncrease =
                    carrierConfig.getInt(
                            VcnManager.VCN_NETWORK_SELECTION_MAX_SEQ_NUM_INCREASE_PER_SECOND_KEY,
@@ -287,10 +286,8 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor {
        // with the new interval
        mPollIpSecStateIntervalMs = getPollIpSecStateIntervalMs(carrierConfig);

        if (Flags.handleSeqNumLeap()) {
        mPacketLossRatePercentThreshold = getPacketLossRatePercentThreshold(carrierConfig);
        mMaxSeqNumIncreasePerSecond = getMaxSeqNumIncreasePerSecond(carrierConfig);
        }

        if (canStart() != isStarted()) {
            if (canStart()) {
@@ -438,15 +435,12 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor {
                onValidationResultReceivedInternal(true /* isFailed */);
            }

            // In both "valid" or "unusual_seq_num_leap" cases, trigger network validation
            if (Flags.validateNetworkOnIpsecLoss()) {
                // Trigger re-validation of the underlying network; if it fails, the VCN will
                // attempt to migrate away.
            // In both "invalid" and "unusual_seq_num_leap" cases, trigger network validation. If
            // validation fails, the VCN will attempt to migrate away.
            mConnectivityManager.reportNetworkConnectivity(
                    getNetwork(), false /* hasConnectivity */);
        }
    }
    }

    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public static class PacketLossCalculator {
@@ -474,8 +468,7 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor {
            boolean isUnusualSeqNumLeap = false;

            // Handle sequence number leap
            if (Flags.handleSeqNumLeap()
                    && maxSeqNumIncreasePerSecond != MAX_SEQ_NUM_INCREASE_DEFAULT_DISABLED) {
            if (maxSeqNumIncreasePerSecond != MAX_SEQ_NUM_INCREASE_DEFAULT_DISABLED) {
                final long timeDiffMillis =
                        newState.getTimestampMillis() - oldState.getTimestampMillis();
                final long maxSeqNumIncrease = timeDiffMillis * maxSeqNumIncreasePerSecond / 1000;
@@ -506,7 +499,7 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor {
                            + " actualPktCntDiff: "
                            + actualPktCntDiff);

            if (Flags.handleSeqNumLeap() && expectedPktCntDiff < MIN_VALID_EXPECTED_RX_PACKET_NUM) {
            if (expectedPktCntDiff < MIN_VALID_EXPECTED_RX_PACKET_NUM) {
                // The sample size is too small to ensure a reliable detection result
                return PacketLossCalculationResult.invalid();
            }
+4 −9
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.net.IpSecTransform;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.vcn.Flags;
import android.net.vcn.VcnManager;
import android.net.vcn.VcnUnderlyingNetworkTemplate;
import android.os.Handler;
@@ -297,12 +296,10 @@ public class UnderlyingNetworkEvaluator {
        updatePriorityClass(
                underlyingNetworkTemplates, subscriptionGroup, lastSnapshot, carrierConfig);

        if (Flags.evaluateIpsecLossOnLpNcChange()) {
        for (NetworkMetricMonitor monitor : mMetricMonitors) {
            monitor.onLinkPropertiesOrCapabilitiesChanged();
        }
    }
    }

    /** Set the LinkProperties */
    public void setLinkProperties(
@@ -316,12 +313,10 @@ public class UnderlyingNetworkEvaluator {
        updatePriorityClass(
                underlyingNetworkTemplates, subscriptionGroup, lastSnapshot, carrierConfig);

        if (Flags.evaluateIpsecLossOnLpNcChange()) {
        for (NetworkMetricMonitor monitor : mMetricMonitors) {
            monitor.onLinkPropertiesOrCapabilitiesChanged();
        }
    }
    }

    /** Set whether the network is blocked */
    public void setIsBlocked(
+0 −7
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.net.Uri;
import android.net.vcn.Flags;
import android.net.vcn.IVcnStatusCallback;
import android.net.vcn.IVcnUnderlyingNetworkPolicyListener;
import android.net.vcn.VcnConfig;
@@ -85,7 +84,6 @@ import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.test.TestLooper;
import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -104,7 +102,6 @@ import com.android.server.vcn.util.PersistableBundleUtils;
import com.android.server.vcn.util.PersistableBundleUtils.PersistableBundleWrapper;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
@@ -122,8 +119,6 @@ import java.util.UUID;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class VcnManagementServiceTest {
    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final String CONTEXT_ATTRIBUTION_TAG = "VCN";
    private static final String TEST_PACKAGE_NAME =
            VcnManagementServiceTest.class.getPackage().getName();
@@ -285,8 +280,6 @@ public class VcnManagementServiceTest {

    @Before
    public void setUp() {
        mSetFlagsRule.enableFlags(Flags.FLAG_ENFORCE_MAIN_USER);

        doNothing()
                .when(mMockContext)
                .enforceCallingOrSelfPermission(
Loading