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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user