From 22941b38f7708b368cdbdeef40e33112080a8ab6 Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Wed, 13 Dec 2023 01:40:20 +0000 Subject: [PATCH] Don't add LOCAL_NETWORK as forbidden capability This causes the module to crash on rollback because the current production code does not consider LOCAL_NETWORK to be a valid capability. Change-Id: Idf57d72c384b41b483098c4c302738072ebf7f90 Test: TH Fix: 313030307 --- framework/src/android/net/NetworkRequest.java | 5 ++++- .../server/connectivityservice/CSLocalAgentTests.kt | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/framework/src/android/net/NetworkRequest.java b/framework/src/android/net/NetworkRequest.java index 9824faa1b5..653e41dc3b 100644 --- a/framework/src/android/net/NetworkRequest.java +++ b/framework/src/android/net/NetworkRequest.java @@ -290,7 +290,10 @@ public class NetworkRequest implements Parcelable { * Therefore these capabilities are only in NetworkRequest. */ private static final int[] DEFAULT_FORBIDDEN_CAPABILITIES = new int[] { - NET_CAPABILITY_LOCAL_NETWORK + // TODO(b/313030307): this should contain NET_CAPABILITY_LOCAL_NETWORK. + // We cannot currently add it because doing so would crash if the module rolls back, + // because JobScheduler persists NetworkRequests to disk, and existing production code + // does not consider LOCAL_NETWORK to be a valid capability. }; private final NetworkCapabilities mNetworkCapabilities; diff --git a/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt b/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt index ad21bf5149..dd0706b6ae 100644 --- a/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt +++ b/tests/unit/java/com/android/server/connectivityservice/CSLocalAgentTests.kt @@ -154,6 +154,7 @@ class CSLocalAgentTests : CSTest() { val newLnc = LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() .addTransportType(TRANSPORT_WIFI) + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .build()) .build() localAgent.sendLocalNetworkConfig(newLnc) @@ -196,6 +197,7 @@ class CSLocalAgentTests : CSTest() { lp = lp("local0"), lnc = FromS(LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .addTransportType(TRANSPORT_WIFI) .build()) .build()), @@ -250,6 +252,7 @@ class CSLocalAgentTests : CSTest() { lnc = FromS(LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() .addTransportType(TRANSPORT_WIFI) + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .build()) .build()), score = FromS(NetworkScore.Builder() @@ -296,6 +299,7 @@ class CSLocalAgentTests : CSTest() { val lnc = FromS(LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() .addTransportType(TRANSPORT_WIFI) + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .build()) .build()) val localScore = FromS(NetworkScore.Builder().build()) @@ -348,6 +352,7 @@ class CSLocalAgentTests : CSTest() { lp = lp("local0"), lnc = FromS(LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .addTransportType(TRANSPORT_WIFI) .build()) .build()), @@ -377,6 +382,7 @@ class CSLocalAgentTests : CSTest() { val lnc = FromS(LocalNetworkConfig.Builder() .setUpstreamSelector(NetworkRequest.Builder() .addCapability(NET_CAPABILITY_DUN) + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .build()) .build()) val localAgent = Agent(nc = nc(TRANSPORT_WIFI, NET_CAPABILITY_LOCAL_NETWORK), @@ -504,6 +510,7 @@ class CSLocalAgentTests : CSTest() { val lnc = FromS(LocalNetworkConfig.Builder().apply { if (haveUpstream) { setUpstreamSelector(NetworkRequest.Builder() + .addForbiddenCapability(NET_CAPABILITY_LOCAL_NETWORK) .addTransportType(TRANSPORT_WIFI) .build()) }