Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39efd38d authored by Benedict Wong's avatar Benedict Wong Committed by android-build-merger
Browse files

Merge "Add configurability of LinkProperties, meteredness for Test Networks"...

Merge "Add configurability of LinkProperties, meteredness for Test Networks" am: 248cbf00 am: 69a93263
am: e1bf9b05

Change-Id: I67769d9e06b9658560b5785dca2d49ad4d869973
parents a0544899 e1bf9b05
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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);
}
+21 −1
Original line number Diff line number Diff line
@@ -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
     *
@@ -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();
        }
+22 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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 */
@@ -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 {
@@ -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
@@ -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");
@@ -315,6 +333,8 @@ class TestNetworkService extends ITestNetworkManager.Stub {
                                            mHandler.getLooper(),
                                            mContext,
                                            iface,
                                            lp,
                                            isMetered,
                                            callingUid,
                                            binder);