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

Commit cbc40998 authored by Benedict Wong's avatar Benedict Wong Committed by Gerrit Code Review
Browse files

Merge changes Ie66ba631,Ic42c09a3

* changes:
  Implement TestNetworkService
  Add shell TestNetworkManager and Service
parents b31032b3 6c24213d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ java_defaults {
        "core/java/android/net/INetworkScoreService.aidl",
        "core/java/android/net/INetworkStatsService.aidl",
        "core/java/android/net/INetworkStatsSession.aidl",
        "core/java/android/net/ITestNetworkManager.aidl",
        "core/java/android/net/ITetheringStatsProvider.aidl",
        "core/java/android/net/nsd/INsdManager.aidl",
        "core/java/android/nfc/IAppCallback.aidl",
+15 −0
Original line number Diff line number Diff line
@@ -703,6 +703,21 @@ package android.net {
    field public static final android.os.Parcelable.Creator<android.net.StaticIpConfiguration> CREATOR;
  }

  public final class TestNetworkInterface implements android.os.Parcelable {
    ctor public TestNetworkInterface(android.os.ParcelFileDescriptor, String);
    method public int describeContents();
    method public android.os.ParcelFileDescriptor getFileDescriptor();
    method public String getInterfaceName();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.net.TestNetworkInterface> CREATOR;
  }

  public class TestNetworkManager {
    method public android.net.TestNetworkInterface createTunInterface(@NonNull android.net.LinkAddress[]);
    method public void setupTestNetwork(@NonNull String, @NonNull android.os.IBinder);
    method public void teardownTestNetwork(@NonNull android.net.Network);
  }

  public class TrafficStats {
    method public static long getLoopbackRxBytes();
    method public static long getLoopbackRxPackets();
+36 −0
Original line number Diff line number Diff line
/**
 * Copyright (c) 2018, The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net;

import android.net.LinkAddress;
import android.net.TestNetworkInterface;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;

/**
 * Interface that allows for creation and management of test-only networks.
 *
 * @hide
 */
interface ITestNetworkManager
{
    TestNetworkInterface createTunInterface(in LinkAddress[] linkAddrs);

    void setupTestNetwork(in String iface, in IBinder binder);

    void teardownTestNetwork(int netId);
}
+20 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net;

/** @hide */
parcelable TestNetworkInterface;
+74 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.net;

import android.annotation.TestApi;
import android.os.Parcel;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;

/**
 * This class is used to return the interface name and fd of the test interface
 *
 * @hide
 */
@TestApi
public final class TestNetworkInterface implements Parcelable {
    private static final String TAG = "TestNetworkInterface";

    private final ParcelFileDescriptor mFileDescriptor;
    private final String mInterfaceName;

    @Override
    public int describeContents() {
        return (mFileDescriptor != null) ? Parcelable.CONTENTS_FILE_DESCRIPTOR : 0;
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeParcelable(mFileDescriptor, PARCELABLE_WRITE_RETURN_VALUE);
        out.writeString(mInterfaceName);
    }

    public TestNetworkInterface(ParcelFileDescriptor pfd, String intf) {
        mFileDescriptor = pfd;
        mInterfaceName = intf;
    }

    private TestNetworkInterface(Parcel in) {
        mFileDescriptor = in.readParcelable(ParcelFileDescriptor.class.getClassLoader());
        mInterfaceName = in.readString();
    }

    public ParcelFileDescriptor getFileDescriptor() {
        return mFileDescriptor;
    }

    public String getInterfaceName() {
        return mInterfaceName;
    }

    public static final Parcelable.Creator<TestNetworkInterface> CREATOR =
            new Parcelable.Creator<TestNetworkInterface>() {
                public TestNetworkInterface createFromParcel(Parcel in) {
                    return new TestNetworkInterface(in);
                }

                public TestNetworkInterface[] newArray(int size) {
                    return new TestNetworkInterface[size];
                }
            };
}
Loading