summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Mattis <jmattis@google.com>2022-03-03 01:58:29 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-03 01:58:29 +0000
commit0e8662156f4b4b0f96f0c27e82bb83a8e2499b84 (patch)
tree3f17fb5d4e64301cf2ed699008e9cfcabee8c431
parent1310a12001b30f68221f98682c9cd44a1c43267f (diff)
parentcc20c1851ca0707a7b2992d6a6a06d2fef36f346 (diff)
downloadethernet-0e8662156f4b4b0f96f0c27e82bb83a8e2499b84.tar.gz
Ethernet validate if iface is tracked on handler am: b7c9537a27 am: cc20c1851c
Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/net/ethernet/+/2002656 Change-Id: Ide96619b259e964fee6668c0bd81c7afbe9271b9
-rw-r--r--java/com/android/server/ethernet/EthernetNetworkFactory.java26
-rw-r--r--java/com/android/server/ethernet/EthernetServiceImpl.java13
-rw-r--r--tests/java/com/android/server/ethernet/EthernetNetworkFactoryTest.java14
-rw-r--r--tests/java/com/android/server/ethernet/EthernetServiceImplTest.java24
4 files changed, 31 insertions, 46 deletions
diff --git a/java/com/android/server/ethernet/EthernetNetworkFactory.java b/java/com/android/server/ethernet/EthernetNetworkFactory.java
index f266386..8ce27a6 100644
--- a/java/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/java/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -220,20 +220,17 @@ public class EthernetNetworkFactory extends NetworkFactory {
@NonNull final IpConfiguration ipConfig,
@Nullable final NetworkCapabilities capabilities,
@Nullable final IEthernetNetworkManagementListener listener) {
- enforceInterfaceIsTracked(ifaceName);
+ if (!hasInterface(ifaceName)) {
+ maybeSendNetworkManagementCallbackForUntracked(ifaceName, listener);
+ return;
+ }
+
final NetworkInterfaceState iface = mTrackingInterfaces.get(ifaceName);
iface.updateInterface(ipConfig, capabilities, listener);
mTrackingInterfaces.put(ifaceName, iface);
updateCapabilityFilter();
}
- private void enforceInterfaceIsTracked(@NonNull final String ifaceName) {
- if (!hasInterface(ifaceName)) {
- throw new UnsupportedOperationException(
- "Interface with name " + ifaceName + " is not being tracked.");
- }
- }
-
private static NetworkCapabilities mixInCapabilities(NetworkCapabilities nc,
NetworkCapabilities addedNc) {
final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder(nc);
@@ -272,10 +269,8 @@ public class EthernetNetworkFactory extends NetworkFactory {
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
protected boolean updateInterfaceLinkState(@NonNull final String ifaceName, final boolean up,
@Nullable final IEthernetNetworkManagementListener listener) {
- if (!mTrackingInterfaces.containsKey(ifaceName)) {
- maybeSendNetworkManagementCallback(listener, null,
- new EthernetNetworkManagementException(
- ifaceName + " can't be updated as it is not available."));
+ if (!hasInterface(ifaceName)) {
+ maybeSendNetworkManagementCallbackForUntracked(ifaceName, listener);
return false;
}
@@ -287,6 +282,13 @@ public class EthernetNetworkFactory extends NetworkFactory {
return iface.updateLinkState(up, listener);
}
+ private void maybeSendNetworkManagementCallbackForUntracked(
+ String ifaceName, IEthernetNetworkManagementListener listener) {
+ maybeSendNetworkManagementCallback(listener, null,
+ new EthernetNetworkManagementException(
+ ifaceName + " can't be updated as it is not available."));
+ }
+
@VisibleForTesting
protected boolean hasInterface(String ifaceName) {
return mTrackingInterfaces.containsKey(ifaceName);
diff --git a/java/com/android/server/ethernet/EthernetServiceImpl.java b/java/com/android/server/ethernet/EthernetServiceImpl.java
index fed500f..f80f6a0 100644
--- a/java/com/android/server/ethernet/EthernetServiceImpl.java
+++ b/java/com/android/server/ethernet/EthernetServiceImpl.java
@@ -66,12 +66,6 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
methodName + " is only available on automotive devices.");
}
- private void enforceInterfaceIsTracked(final @NonNull String iface) {
- if(!mTracker.isTrackingInterface(iface)) {
- throw new UnsupportedOperationException("The given iface is not currently tracked.");
- }
- }
-
private boolean checkUseRestrictedNetworksPermission() {
return PermissionUtils.checkAnyPermissionOf(mContext,
android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS);
@@ -220,13 +214,12 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
*/
private void validateNetworkManagementState(@NonNull final String iface,
final @NonNull String methodName) {
+ Objects.requireNonNull(iface, "Pass a non-null iface.");
+ Objects.requireNonNull(methodName, "Pass a non-null methodName.");
+
enforceAutomotiveDevice(methodName);
enforceNetworkManagementPermission();
logIfEthernetNotStarted();
-
- Objects.requireNonNull(iface, "Pass a non-null iface.");
- Objects.requireNonNull(methodName, "Pass a non-null methodName.");
- enforceInterfaceIsTracked(iface);
}
@Override
diff --git a/tests/java/com/android/server/ethernet/EthernetNetworkFactoryTest.java b/tests/java/com/android/server/ethernet/EthernetNetworkFactoryTest.java
index 33831a5..61425bf 100644
--- a/tests/java/com/android/server/ethernet/EthernetNetworkFactoryTest.java
+++ b/tests/java/com/android/server/ethernet/EthernetNetworkFactoryTest.java
@@ -763,4 +763,18 @@ public class EthernetNetworkFactoryTest {
eq(capabilities), any(), any(), any(), any());
verifyRestart(ipConfiguration);
}
+
+ @Test
+ public void testUpdateInterfaceForNonExistingInterface() throws Exception {
+ initEthernetNetworkFactory();
+ // No interface exists due to not calling createAndVerifyProvisionedInterface(...).
+ final NetworkCapabilities capabilities = createDefaultFilterCaps();
+ final IpConfiguration ipConfiguration = createStaticIpConfig();
+ final TestNetworkManagementListener listener = new TestNetworkManagementListener();
+
+ mNetFactory.updateInterface(TEST_IFACE, ipConfiguration, capabilities, listener);
+
+ verifyNoStopOrStart();
+ assertFailedListener(listener, "can't be updated as it is not available");
+ }
}
diff --git a/tests/java/com/android/server/ethernet/EthernetServiceImplTest.java b/tests/java/com/android/server/ethernet/EthernetServiceImplTest.java
index 2829753..e74a5a3 100644
--- a/tests/java/com/android/server/ethernet/EthernetServiceImplTest.java
+++ b/tests/java/com/android/server/ethernet/EthernetServiceImplTest.java
@@ -156,30 +156,6 @@ public class EthernetServiceImplTest {
});
}
- @Test
- public void testUpdateConfigurationRejectsWithUntrackedIface() {
- shouldTrackIface(TEST_IFACE, false);
- assertThrows(UnsupportedOperationException.class, () -> {
- mEthernetServiceImpl.updateConfiguration(TEST_IFACE, UPDATE_REQUEST, NULL_LISTENER);
- });
- }
-
- @Test
- public void testConnectNetworkRejectsWithUntrackedIface() {
- shouldTrackIface(TEST_IFACE, false);
- assertThrows(UnsupportedOperationException.class, () -> {
- mEthernetServiceImpl.connectNetwork(TEST_IFACE, NULL_LISTENER);
- });
- }
-
- @Test
- public void testDisconnectNetworkRejectsWithUntrackedIface() {
- shouldTrackIface(TEST_IFACE, false);
- assertThrows(UnsupportedOperationException.class, () -> {
- mEthernetServiceImpl.disconnectNetwork(TEST_IFACE, NULL_LISTENER);
- });
- }
-
private void denyManageEthPermission() {
doThrow(new SecurityException("")).when(mContext)
.enforceCallingOrSelfPermission(