Loading core/java/android/net/ITestNetworkManager.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.net; import android.net.LinkAddress; import android.net.LinkProperties; import android.net.TestNetworkInterface; import android.os.IBinder; import android.os.ParcelFileDescriptor; Loading @@ -31,7 +32,8 @@ interface ITestNetworkManager TestNetworkInterface createTunInterface(in LinkAddress[] linkAddrs); TestNetworkInterface createTapInterface(); void setupTestNetwork(in String iface, in IBinder binder); void setupTestNetwork(in String iface, in LinkProperties lp, in boolean isMetered, in IBinder binder); void teardownTestNetwork(int netId); } core/java/android/net/TestNetworkManager.java +21 −1 Original line number Diff line number Diff line Loading @@ -53,6 +53,26 @@ public class TestNetworkManager { } } /** * Sets up a capability-limited, testing-only network for a given interface * * @param lp The LinkProperties for the TestNetworkService to use for this test network. Note * that the interface name and link addresses will be overwritten, and the passed-in values * discarded. * @param isMetered Whether or not the network should be considered metered. * @param binder A binder object guarding the lifecycle of this test network. * @hide */ public void setupTestNetwork( @NonNull LinkProperties lp, boolean isMetered, @NonNull IBinder binder) { Preconditions.checkNotNull(lp, "Invalid LinkProperties"); try { mService.setupTestNetwork(lp.getInterfaceName(), lp, isMetered, binder); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Sets up a capability-limited, testing-only network for a given interface * Loading @@ -63,7 +83,7 @@ public class TestNetworkManager { @TestApi public void setupTestNetwork(@NonNull String iface, @NonNull IBinder binder) { try { mService.setupTestNetwork(iface, binder); mService.setupTestNetwork(iface, null, true, binder); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading services/core/java/com/android/server/TestNetworkService.java +22 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.net.ConnectivityManager; import android.net.INetd; Loading Loading @@ -53,6 +54,7 @@ import java.net.Inet6Address; import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; /** @hide */ Loading Loading @@ -226,6 +228,8 @@ class TestNetworkService extends ITestNetworkManager.Stub { @NonNull Looper looper, @NonNull Context context, @NonNull String iface, @Nullable LinkProperties lp, boolean isMetered, int callingUid, @NonNull IBinder binder) throws RemoteException, SocketException { Loading @@ -245,9 +249,19 @@ class TestNetworkService extends ITestNetworkManager.Stub { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); nc.setNetworkSpecifier(new StringNetworkSpecifier(iface)); if (!isMetered) { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } // Build LinkProperties LinkProperties lp = new LinkProperties(); if (lp == null) { lp = new LinkProperties(); } else { lp = new LinkProperties(lp); // Use LinkAddress(es) from the interface itself to minimize how much the caller // is trusted. lp.setLinkAddresses(new ArrayList<>()); } lp.setInterfaceName(iface); // Find the currently assigned addresses, and add them to LinkProperties Loading Loading @@ -284,7 +298,11 @@ class TestNetworkService extends ITestNetworkManager.Stub { * <p>This method provides a Network that is useful only for testing. */ @Override public void setupTestNetwork(@NonNull String iface, @NonNull IBinder binder) { public void setupTestNetwork( @NonNull String iface, @Nullable LinkProperties lp, boolean isMetered, @NonNull IBinder binder) { enforceTestNetworkPermissions(mContext); checkNotNull(iface, "missing Iface"); Loading Loading @@ -315,6 +333,8 @@ class TestNetworkService extends ITestNetworkManager.Stub { mHandler.getLooper(), mContext, iface, lp, isMetered, callingUid, binder); Loading Loading
core/java/android/net/ITestNetworkManager.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.net; import android.net.LinkAddress; import android.net.LinkProperties; import android.net.TestNetworkInterface; import android.os.IBinder; import android.os.ParcelFileDescriptor; Loading @@ -31,7 +32,8 @@ interface ITestNetworkManager TestNetworkInterface createTunInterface(in LinkAddress[] linkAddrs); TestNetworkInterface createTapInterface(); void setupTestNetwork(in String iface, in IBinder binder); void setupTestNetwork(in String iface, in LinkProperties lp, in boolean isMetered, in IBinder binder); void teardownTestNetwork(int netId); }
core/java/android/net/TestNetworkManager.java +21 −1 Original line number Diff line number Diff line Loading @@ -53,6 +53,26 @@ public class TestNetworkManager { } } /** * Sets up a capability-limited, testing-only network for a given interface * * @param lp The LinkProperties for the TestNetworkService to use for this test network. Note * that the interface name and link addresses will be overwritten, and the passed-in values * discarded. * @param isMetered Whether or not the network should be considered metered. * @param binder A binder object guarding the lifecycle of this test network. * @hide */ public void setupTestNetwork( @NonNull LinkProperties lp, boolean isMetered, @NonNull IBinder binder) { Preconditions.checkNotNull(lp, "Invalid LinkProperties"); try { mService.setupTestNetwork(lp.getInterfaceName(), lp, isMetered, binder); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Sets up a capability-limited, testing-only network for a given interface * Loading @@ -63,7 +83,7 @@ public class TestNetworkManager { @TestApi public void setupTestNetwork(@NonNull String iface, @NonNull IBinder binder) { try { mService.setupTestNetwork(iface, binder); mService.setupTestNetwork(iface, null, true, binder); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
services/core/java/com/android/server/TestNetworkService.java +22 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server; import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.net.ConnectivityManager; import android.net.INetd; Loading Loading @@ -53,6 +54,7 @@ import java.net.Inet6Address; import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicInteger; /** @hide */ Loading Loading @@ -226,6 +228,8 @@ class TestNetworkService extends ITestNetworkManager.Stub { @NonNull Looper looper, @NonNull Context context, @NonNull String iface, @Nullable LinkProperties lp, boolean isMetered, int callingUid, @NonNull IBinder binder) throws RemoteException, SocketException { Loading @@ -245,9 +249,19 @@ class TestNetworkService extends ITestNetworkManager.Stub { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED); nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); nc.setNetworkSpecifier(new StringNetworkSpecifier(iface)); if (!isMetered) { nc.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } // Build LinkProperties LinkProperties lp = new LinkProperties(); if (lp == null) { lp = new LinkProperties(); } else { lp = new LinkProperties(lp); // Use LinkAddress(es) from the interface itself to minimize how much the caller // is trusted. lp.setLinkAddresses(new ArrayList<>()); } lp.setInterfaceName(iface); // Find the currently assigned addresses, and add them to LinkProperties Loading Loading @@ -284,7 +298,11 @@ class TestNetworkService extends ITestNetworkManager.Stub { * <p>This method provides a Network that is useful only for testing. */ @Override public void setupTestNetwork(@NonNull String iface, @NonNull IBinder binder) { public void setupTestNetwork( @NonNull String iface, @Nullable LinkProperties lp, boolean isMetered, @NonNull IBinder binder) { enforceTestNetworkPermissions(mContext); checkNotNull(iface, "missing Iface"); Loading Loading @@ -315,6 +333,8 @@ class TestNetworkService extends ITestNetworkManager.Stub { mHandler.getLooper(), mContext, iface, lp, isMetered, callingUid, binder); Loading