Loading services/core/java/com/android/server/vcn/VcnGatewayConnection.java +14 −0 Original line number Diff line number Diff line Loading @@ -544,6 +544,7 @@ public class VcnGatewayConnection extends StateMachine { private final boolean mIsMobileDataEnabled; @NonNull private final IpSecManager mIpSecManager; @NonNull private final ConnectivityManager mConnectivityManager; @Nullable private IpSecTunnelInterface mTunnelIface = null; Loading Loading @@ -701,6 +702,7 @@ public class VcnGatewayConnection extends StateMachine { mLastSnapshot, mUnderlyingNetworkControllerCallback); mIpSecManager = mVcnContext.getContext().getSystemService(IpSecManager.class); mConnectivityManager = mVcnContext.getContext().getSystemService(ConnectivityManager.class); addState(mDisconnectedState); addState(mDisconnectingState); Loading Loading @@ -1683,6 +1685,14 @@ public class VcnGatewayConnection extends StateMachine { clearFailedAttemptCounterAndSafeModeAlarm(); break; case NetworkAgent.VALIDATION_STATUS_NOT_VALID: // Trigger re-validation of underlying networks; if it // fails, the VCN will attempt to migrate away. if (mUnderlying != null) { mConnectivityManager.reportNetworkConnectivity( mUnderlying.network, false /* hasConnectivity */); } // Will only set a new alarm if no safe mode alarm is // currently scheduled. setSafeModeAlarm(); Loading Loading @@ -1869,6 +1879,10 @@ public class VcnGatewayConnection extends StateMachine { IpSecManager.DIRECTION_OUT); updateNetworkAgent(mTunnelIface, mNetworkAgent, mChildConfig); // Trigger re-validation after migration events. mConnectivityManager.reportNetworkConnectivity( mNetworkAgent.getNetwork(), false /* hasConnectivity */); } private void handleUnderlyingNetworkChanged(@NonNull Message msg) { Loading tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,9 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection && TEST_TCP_BUFFER_SIZES_2.equals(lp.getTcpBufferSizes()))); verify(mNetworkAgent) .setUnderlyingNetworks(eq(singletonList(TEST_UNDERLYING_NETWORK_RECORD_2.network))); // Verify revalidation is triggered on VCN network verify(mConnMgr).reportNetworkConnectivity(eq(mNetworkAgent.getNetwork()), eq(false)); } private void triggerChildOpened() { Loading Loading @@ -425,6 +428,9 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection triggerValidation(NetworkAgent.VALIDATION_STATUS_NOT_VALID); mTestLooper.dispatchAll(); verify(mConnMgr) .reportNetworkConnectivity(eq(TEST_UNDERLYING_NETWORK_RECORD_1.network), eq(false)); final ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class); verify(mDeps, times(2)) .newWakeupMessage( Loading Loading
services/core/java/com/android/server/vcn/VcnGatewayConnection.java +14 −0 Original line number Diff line number Diff line Loading @@ -544,6 +544,7 @@ public class VcnGatewayConnection extends StateMachine { private final boolean mIsMobileDataEnabled; @NonNull private final IpSecManager mIpSecManager; @NonNull private final ConnectivityManager mConnectivityManager; @Nullable private IpSecTunnelInterface mTunnelIface = null; Loading Loading @@ -701,6 +702,7 @@ public class VcnGatewayConnection extends StateMachine { mLastSnapshot, mUnderlyingNetworkControllerCallback); mIpSecManager = mVcnContext.getContext().getSystemService(IpSecManager.class); mConnectivityManager = mVcnContext.getContext().getSystemService(ConnectivityManager.class); addState(mDisconnectedState); addState(mDisconnectingState); Loading Loading @@ -1683,6 +1685,14 @@ public class VcnGatewayConnection extends StateMachine { clearFailedAttemptCounterAndSafeModeAlarm(); break; case NetworkAgent.VALIDATION_STATUS_NOT_VALID: // Trigger re-validation of underlying networks; if it // fails, the VCN will attempt to migrate away. if (mUnderlying != null) { mConnectivityManager.reportNetworkConnectivity( mUnderlying.network, false /* hasConnectivity */); } // Will only set a new alarm if no safe mode alarm is // currently scheduled. setSafeModeAlarm(); Loading Loading @@ -1869,6 +1879,10 @@ public class VcnGatewayConnection extends StateMachine { IpSecManager.DIRECTION_OUT); updateNetworkAgent(mTunnelIface, mNetworkAgent, mChildConfig); // Trigger re-validation after migration events. mConnectivityManager.reportNetworkConnectivity( mNetworkAgent.getNetwork(), false /* hasConnectivity */); } private void handleUnderlyingNetworkChanged(@NonNull Message msg) { Loading
tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +6 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,9 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection && TEST_TCP_BUFFER_SIZES_2.equals(lp.getTcpBufferSizes()))); verify(mNetworkAgent) .setUnderlyingNetworks(eq(singletonList(TEST_UNDERLYING_NETWORK_RECORD_2.network))); // Verify revalidation is triggered on VCN network verify(mConnMgr).reportNetworkConnectivity(eq(mNetworkAgent.getNetwork()), eq(false)); } private void triggerChildOpened() { Loading Loading @@ -425,6 +428,9 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection triggerValidation(NetworkAgent.VALIDATION_STATUS_NOT_VALID); mTestLooper.dispatchAll(); verify(mConnMgr) .reportNetworkConnectivity(eq(TEST_UNDERLYING_NETWORK_RECORD_1.network), eq(false)); final ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class); verify(mDeps, times(2)) .newWakeupMessage( Loading