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

Commit a56daad1 authored by junyulai's avatar junyulai Committed by Junyu Lai
Browse files

Copy clat modified linkProperties into new one.

updateLinkProperties copied the linkProperties in networkAgent,
but the clat fix-up function did not copy stacked link into new one.
This caused an incorrect clat iface removal, and the IPv4 network
 to be unreachable.

Bug: 80261579
Test: 1. ping after ipv6 only data call with 2g voice call on/off
      2. runtest frameworks-net
      3. run cts -m CtsNetTestCases
Change-Id: Ide47a3b0680dddfcf3e2e759a59b19aee3605050
parent 205a5581
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -4690,7 +4690,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        // The NetworkAgentInfo does not know whether clatd is running on its network or not. Before
        // we do anything else, make sure its LinkProperties are accurate.
        if (networkAgent.clatd != null) {
            networkAgent.clatd.fixupLinkProperties(oldLp);
            networkAgent.clatd.fixupLinkProperties(oldLp, newLp);
        }

        updateInterfaces(newLp, oldLp, netId, networkAgent.networkCapabilities);
+2 −3
Original line number Diff line number Diff line
@@ -224,15 +224,14 @@ public class Nat464Xlat extends BaseNetworkObserver {
    }

    /**
     * Copies the stacked clat link in oldLp, if any, to the LinkProperties in mNetwork.
     * Copies the stacked clat link in oldLp, if any, to the passed LinkProperties.
     * This is necessary because the LinkProperties in mNetwork come from the transport layer, which
     * has no idea that 464xlat is running on top of it.
     */
    public void fixupLinkProperties(LinkProperties oldLp) {
    public void fixupLinkProperties(LinkProperties oldLp, LinkProperties lp) {
        if (!isRunning()) {
            return;
        }
        LinkProperties lp = mNetwork.linkProperties;
        if (lp == null || lp.getAllInterfaceNames().contains(mIface)) {
            return;
        }