diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java index 47bb8f00992037827c4f11d60728848e99846f71..eeb5c499282e5129a0f5df89ce47c0e250667385 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java @@ -19,6 +19,9 @@ package com.android.server.net; import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND; import static android.net.NetworkPolicyManager.POLICY_NONE; import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; +import static android.net.NetworkPolicyManager.POLICY_REJECT_WIFI; +import static android.net.NetworkPolicyManager.POLICY_REJECT_CELLULAR; +import static android.net.NetworkPolicyManager.POLICY_REJECT_VPN; import android.content.Context; import android.net.NetworkPolicyManager; @@ -83,6 +86,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { pw.println(" Adds a UID to the whitelist for restrict background usage."); pw.println(" add restrict-background-blacklist UID"); pw.println(" Adds a UID to the blacklist for restrict background usage."); + pw.println(" add restrict-wifi-data-blacklist UID"); + pw.println(" Adds a UID to the blacklist for restrict Wi-Fi data usage."); + pw.println(" add restrict-mobile-data-blacklist UID"); + pw.println(" Adds a UID to the blacklist for restrict Mobile data usage."); + pw.println(" add restrict-vpn-data-blacklist UID"); + pw.println(" Adds a UID to the blacklist for restrict VPN data usage."); pw.println(" add app-idle-whitelist UID"); pw.println(" Adds a UID to the temporary app idle whitelist."); pw.println(" get restrict-background"); @@ -95,10 +104,22 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { pw.println(" Lists UIDs that are whitelisted for restrict background usage."); pw.println(" list restrict-background-blacklist"); pw.println(" Lists UIDs that are blacklisted for restrict background usage."); + pw.println(" list restrict-wifi-data-blacklist"); + pw.println(" Lists UIDs that are blacklisted for restrict Wi-Fi data usage."); + pw.println(" list restrict-mobile-data-blacklist"); + pw.println(" Lists UIDs that are blacklisted for restrict Mobile data usage."); + pw.println(" list restrict-vpn-data-blacklist"); + pw.println(" Lists UIDs that are blacklisted for restrict VPN data usage."); pw.println(" remove restrict-background-whitelist UID"); pw.println(" Removes a UID from the whitelist for restrict background usage."); pw.println(" remove restrict-background-blacklist UID"); pw.println(" Removes a UID from the blacklist for restrict background usage."); + pw.println(" remove restrict-wifi-data-blacklist UID"); + pw.println(" Removes a UID from the blacklist for restrict Wi-Fi data usage."); + pw.println(" remove restrict-mobile-data-blacklist UID"); + pw.println(" Removes a UID from the blacklist for restrict Mobile data usage."); + pw.println(" remove restrict-vpn-data-blacklist UID"); + pw.println(" Removes a UID from the blacklist for restrict VPN data usage."); pw.println(" remove app-idle-whitelist UID"); pw.println(" Removes a UID from the temporary app idle whitelist."); pw.println(" set metered-network ID [undefined|true|false]"); @@ -161,6 +182,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { return listRestrictBackgroundWhitelist(); case "restrict-background-blacklist": return listRestrictBackgroundBlacklist(); + case "restrict-wifi-data-blacklist": + return listRestrictWiFiDataBlacklist(); + case "restrict-mobile-data-blacklist": + return listRestrictCellularDataBlacklist(); + case "restrict-vpn-data-blacklist": + return listRestrictVpnDataBlacklist(); } pw.println("Error: unknown list type '" + type + "'"); return -1; @@ -178,6 +205,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { return addRestrictBackgroundWhitelist(); case "restrict-background-blacklist": return addRestrictBackgroundBlacklist(); + case "restrict-wifi-data-blacklist": + return addRestrictWiFiDataBlacklist(); + case "restrict-mobile-data-blacklist": + return addRestrictCellularDataBlacklist(); + case "restrict-vpn-data-blacklist": + return addRestrictVpnDataBlacklist(); case "app-idle-whitelist": return addAppIdleWhitelist(); } @@ -197,6 +230,12 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { return removeRestrictBackgroundWhitelist(); case "restrict-background-blacklist": return removeRestrictBackgroundBlacklist(); + case "restrict-wifi-data-blacklist": + return removeRestrictWiFiDataBlacklist(); + case "restrict-mobile-data-blacklist": + return removeRestrictCellularDataBlacklist(); + case "restrict-vpn-data-blacklist": + return removeRestrictVpnDataBlacklist(); case "app-idle-whitelist": return removeAppIdleWhitelist(); } @@ -251,6 +290,21 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { POLICY_REJECT_METERED_BACKGROUND); } + private int listRestrictWiFiDataBlacklist() throws RemoteException { + return listUidPolicies("Restrict Wi-Fi data blacklisted UIDs", + POLICY_REJECT_WIFI); + } + + private int listRestrictCellularDataBlacklist() throws RemoteException { + return listUidPolicies("Restrict Mobile data blacklisted UIDs", + POLICY_REJECT_CELLULAR); + } + + private int listRestrictVpnDataBlacklist() throws RemoteException { + return listUidPolicies("Restrict VPN data blacklisted UIDs", + POLICY_REJECT_VPN); + } + private int listAppIdleWhitelist() throws RemoteException { final PrintWriter pw = getOutPrintWriter(); final int[] uids = mInterface.getAppIdleWhitelist(); @@ -323,10 +377,34 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { return setUidPolicy(POLICY_REJECT_METERED_BACKGROUND); } + private int addRestrictWiFiDataBlacklist() throws RemoteException { + return setUidPolicy(POLICY_REJECT_WIFI); + } + + private int addRestrictCellularDataBlacklist() throws RemoteException { + return setUidPolicy(POLICY_REJECT_CELLULAR); + } + + private int addRestrictVpnDataBlacklist() throws RemoteException { + return setUidPolicy(POLICY_REJECT_VPN); + } + private int removeRestrictBackgroundBlacklist() throws RemoteException { return resetUidPolicy("not blacklisted", POLICY_REJECT_METERED_BACKGROUND); } + private int removeRestrictWiFiDataBlacklist() throws RemoteException { + return resetUidPolicy("not blacklisted", POLICY_REJECT_WIFI); + } + + private int removeRestrictCellularDataBlacklist() throws RemoteException { + return resetUidPolicy("not blacklisted", POLICY_REJECT_CELLULAR); + } + + private int removeRestrictVpnDataBlacklist() throws RemoteException { + return resetUidPolicy("not blacklisted", POLICY_REJECT_VPN); + } + private int setAppIdleWhitelist(boolean isWhitelisted) { final int uid = getUidFromNextArg(); if (uid < 0) {