diff --git a/api/system-current.txt b/api/system-current.txt index e17459bf4852c..294bae195f576 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3196,6 +3196,10 @@ package android.net { field public static final String EXTRA_PACKAGE_NAME = "packageName"; } + public class NetworkStack { + field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK"; + } + public final class RouteInfo implements android.os.Parcelable { ctor public RouteInfo(android.net.IpPrefix, java.net.InetAddress, String, int); method public int getType(); diff --git a/api/test-current.txt b/api/test-current.txt index 1384f0b7b41ea..e4f999bb1f710 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -669,6 +669,10 @@ package android.net { method public boolean satisfiedByNetworkCapabilities(android.net.NetworkCapabilities); } + public class NetworkStack { + field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK"; + } + public final class RouteInfo implements android.os.Parcelable { ctor public RouteInfo(android.net.IpPrefix, java.net.InetAddress, String, int); method public int getType(); diff --git a/core/java/android/net/NetworkStack.java b/core/java/android/net/NetworkStack.java index d21e674719df6..b6cd6359384af 100644 --- a/core/java/android/net/NetworkStack.java +++ b/core/java/android/net/NetworkStack.java @@ -20,7 +20,9 @@ import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.TestApi; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -46,9 +48,22 @@ import java.util.ArrayList; * @hide */ @SystemService(Context.NETWORK_STACK_SERVICE) +@SystemApi +@TestApi public class NetworkStack { private static final String TAG = NetworkStack.class.getSimpleName(); + /** + * Permission granted only to the NetworkStack APK, defined in NetworkStackStub with signature + * protection level. + * @hide + */ + @SystemApi + @TestApi + public static final String PERMISSION_MAINLINE_NETWORK_STACK = + "android.permission.MAINLINE_NETWORK_STACK"; + + /** @hide */ public static final String NETWORKSTACK_PACKAGE_NAME = "com.android.mainline.networkstack"; private static final int NETWORKSTACK_TIMEOUT_MS = 10_000; @@ -66,12 +81,14 @@ public class NetworkStack { void onNetworkStackConnected(INetworkStackConnector connector); } + /** @hide */ public NetworkStack() { } /** * Create a DHCP server according to the specified parameters. * *
The server will be returned asynchronously through the provided callbacks. + * @hide */ public void makeDhcpServer(final String ifName, final DhcpServingParamsParcel params, final IDhcpServerCallbacks cb) { @@ -88,6 +105,7 @@ public class NetworkStack { * Create an IpClient on the specified interface. * *
The IpClient will be returned asynchronously through the provided callbacks. + * @hide */ public void makeIpClient(String ifName, IIpClientCallbacks cb) { requestConnector(connector -> { @@ -103,6 +121,7 @@ public class NetworkStack { * Create a NetworkMonitor. * *
The INetworkMonitor will be returned asynchronously through the provided callbacks.
+ * @hide
*/
public void makeNetworkMonitor(
NetworkParcelable network, String name, INetworkMonitorCallbacks cb) {
@@ -153,6 +172,7 @@ public class NetworkStack {
* the system server on devices that do not support the network stack module. The network stack
* connector will then be delivered asynchronously to clients that requested it before it was
* started.
+ * @hide
*/
public void start(Context context) {
mNetworkStackStartRequested = true;
diff --git a/packages/NetworkStack/Android.bp b/packages/NetworkStack/Android.bp
index b0522f2a99a08..d6565936c8605 100644
--- a/packages/NetworkStack/Android.bp
+++ b/packages/NetworkStack/Android.bp
@@ -41,4 +41,5 @@ android_app {
"NetworkStackLib"
],
manifest: "AndroidManifest.xml",
+ required: ["NetworkStackPermissionStub"],
}
\ No newline at end of file
diff --git a/packages/NetworkStack/AndroidManifest.xml b/packages/NetworkStack/AndroidManifest.xml
index 5ab833bda66dc..ac55bfa1aed72 100644
--- a/packages/NetworkStack/AndroidManifest.xml
+++ b/packages/NetworkStack/AndroidManifest.xml
@@ -25,6 +25,8 @@