From 7d6b4907cc2db06af79b505cf806293e9beb75e4 Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Thu, 1 Apr 2021 16:58:27 -0700 Subject: [PATCH] Populate legacy type in VCN NetworkAgentConfig This change ensures that the VCN populates the legacy type field, otherwise ConnectivityService crashes on an unknown legacy type. Bug: 184304972 Test: atest FrameworksVcnTests Change-Id: I59dc46dc34d2812a6c8f73c72d208fa735791d74 --- .../java/com/android/server/vcn/VcnGatewayConnection.java | 7 ++++++- .../server/vcn/VcnGatewayConnectionConnectedStateTest.java | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 1780260d36c1e..eed2006382260 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -32,6 +32,7 @@ import static com.android.server.VcnManagementService.VDBG; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; +import android.net.ConnectivityManager; import android.net.InetAddresses; import android.net.IpPrefix; import android.net.IpSecManager; @@ -1457,6 +1458,10 @@ public class VcnGatewayConnection extends StateMachine { buildNetworkCapabilities(mConnectionConfig, mUnderlying); final LinkProperties lp = buildConnectedLinkProperties(mConnectionConfig, tunnelIface, childConfig); + final NetworkAgentConfig nac = + new NetworkAgentConfig.Builder() + .setLegacyType(ConnectivityManager.TYPE_MOBILE) + .build(); final NetworkAgent agent = mDeps.newNetworkAgent( @@ -1465,7 +1470,7 @@ public class VcnGatewayConnection extends StateMachine { caps, lp, Vcn.getNetworkScore(), - new NetworkAgentConfig.Builder().build(), + nac, mVcnContext.getVcnNetworkProvider(), () -> { Slog.d(TAG, "NetworkAgent was unwanted"); diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java index fdd7e3e6bdcfa..3b0be301edde3 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java @@ -32,6 +32,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -40,6 +41,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.NetworkAgent; import android.net.NetworkCapabilities; @@ -217,7 +219,7 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection ncCaptor.capture(), lpCaptor.capture(), anyInt(), - any(), + argThat(nac -> nac.getLegacyType() == ConnectivityManager.TYPE_MOBILE), any(), any(), any());