Merge "Add updateFirewallRule API"
This commit is contained in:
@@ -25,6 +25,7 @@ package android.net {
|
|||||||
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void startCaptivePortalApp(@NonNull android.net.Network);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void startCaptivePortalApp(@NonNull android.net.Network);
|
||||||
method public void systemReady();
|
method public void systemReady();
|
||||||
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateFirewallRule(int, int, boolean);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateMeteredNetworkAllowList(int, boolean);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateMeteredNetworkAllowList(int, boolean);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateMeteredNetworkDenyList(int, boolean);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void updateMeteredNetworkDenyList(int, boolean);
|
||||||
field public static final String ACTION_CLEAR_DNS_CACHE = "android.net.action.CLEAR_DNS_CACHE";
|
field public static final String ACTION_CLEAR_DNS_CACHE = "android.net.action.CLEAR_DNS_CACHE";
|
||||||
@@ -41,6 +42,10 @@ package android.net {
|
|||||||
field public static final int BLOCKED_REASON_LOCKDOWN_VPN = 16; // 0x10
|
field public static final int BLOCKED_REASON_LOCKDOWN_VPN = 16; // 0x10
|
||||||
field public static final int BLOCKED_REASON_NONE = 0; // 0x0
|
field public static final int BLOCKED_REASON_NONE = 0; // 0x0
|
||||||
field public static final int BLOCKED_REASON_RESTRICTED_MODE = 8; // 0x8
|
field public static final int BLOCKED_REASON_RESTRICTED_MODE = 8; // 0x8
|
||||||
|
field public static final int FIREWALL_CHAIN_DOZABLE = 1; // 0x1
|
||||||
|
field public static final int FIREWALL_CHAIN_POWERSAVE = 3; // 0x3
|
||||||
|
field public static final int FIREWALL_CHAIN_RESTRICTED = 4; // 0x4
|
||||||
|
field public static final int FIREWALL_CHAIN_STANDBY = 2; // 0x2
|
||||||
field public static final int PROFILE_NETWORK_PREFERENCE_DEFAULT = 0; // 0x0
|
field public static final int PROFILE_NETWORK_PREFERENCE_DEFAULT = 0; // 0x0
|
||||||
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE = 1; // 0x1
|
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE = 1; // 0x1
|
||||||
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE_NO_FALLBACK = 2; // 0x2
|
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE_NO_FALLBACK = 2; // 0x2
|
||||||
|
|||||||
@@ -930,6 +930,48 @@ public class ConnectivityManager {
|
|||||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
|
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562)
|
||||||
private final IConnectivityManager mService;
|
private final IConnectivityManager mService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firewall chain for device idle (doze mode).
|
||||||
|
* Allowlist of apps that have network access in device idle.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
public static final int FIREWALL_CHAIN_DOZABLE = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firewall chain used for app standby.
|
||||||
|
* Denylist of apps that do not have network access.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
public static final int FIREWALL_CHAIN_STANDBY = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firewall chain used for battery saver.
|
||||||
|
* Allowlist of apps that have network access when battery saver is on.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
public static final int FIREWALL_CHAIN_POWERSAVE = 3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Firewall chain used for restricted networking mode.
|
||||||
|
* Allowlist of apps that have access in restricted networking mode.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
public static final int FIREWALL_CHAIN_RESTRICTED = 4;
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
@IntDef(flag = false, prefix = "FIREWALL_CHAIN_", value = {
|
||||||
|
FIREWALL_CHAIN_DOZABLE,
|
||||||
|
FIREWALL_CHAIN_STANDBY,
|
||||||
|
FIREWALL_CHAIN_POWERSAVE,
|
||||||
|
FIREWALL_CHAIN_RESTRICTED
|
||||||
|
})
|
||||||
|
public @interface FirewallChain {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A kludge to facilitate static access where a Context pointer isn't available, like in the
|
* A kludge to facilitate static access where a Context pointer isn't available, like in the
|
||||||
* case of the static set/getProcessDefaultNetwork methods and from the Network class.
|
* case of the static set/getProcessDefaultNetwork methods and from the Network class.
|
||||||
@@ -5566,9 +5608,11 @@ public class ConnectivityManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow target application using metered network.
|
* Sets whether the specified UID is allowed to use data on metered networks even when
|
||||||
|
* background data is restricted.
|
||||||
*
|
*
|
||||||
* @param uid uid of target app
|
* @param uid uid of target app
|
||||||
|
* @throws IllegalStateException if update allow list failed.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
@@ -5582,15 +5626,15 @@ public class ConnectivityManager {
|
|||||||
mService.updateMeteredNetworkAllowList(uid, add);
|
mService.updateMeteredNetworkAllowList(uid, add);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
} catch (IllegalStateException ie) {
|
|
||||||
throw ie;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disallow target application using metered network.
|
* Sets whether the specified UID is prevented from using background data on metered networks.
|
||||||
|
* Takes precedence over {@link #updateMeteredNetworkAllowList}.
|
||||||
*
|
*
|
||||||
* @param uid uid of target app
|
* @param uid uid of target app
|
||||||
|
* @throws IllegalStateException if update deny list failed.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
@@ -5604,8 +5648,30 @@ public class ConnectivityManager {
|
|||||||
mService.updateMeteredNetworkDenyList(uid, add);
|
mService.updateMeteredNetworkDenyList(uid, add);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
throw e.rethrowFromSystemServer();
|
throw e.rethrowFromSystemServer();
|
||||||
} catch (IllegalStateException ie) {
|
}
|
||||||
throw ie;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a firewall rule for the specified UID on the specified chain.
|
||||||
|
*
|
||||||
|
* @param chain target chain.
|
||||||
|
* @param uid uid to allow/deny.
|
||||||
|
* @param allow either add or remove rule.
|
||||||
|
* @throws IllegalStateException if update firewall rule failed.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@SystemApi(client = MODULE_LIBRARIES)
|
||||||
|
@RequiresPermission(anyOf = {
|
||||||
|
android.Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
android.Manifest.permission.NETWORK_STACK,
|
||||||
|
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK
|
||||||
|
})
|
||||||
|
public void updateFirewallRule(@FirewallChain final int chain, final int uid,
|
||||||
|
final boolean allow) {
|
||||||
|
try {
|
||||||
|
mService.updateFirewallRule(chain, uid, allow);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,4 +234,6 @@ interface IConnectivityManager
|
|||||||
void updateMeteredNetworkAllowList(int uid, boolean add);
|
void updateMeteredNetworkAllowList(int uid, boolean add);
|
||||||
|
|
||||||
void updateMeteredNetworkDenyList(int uid, boolean add);
|
void updateMeteredNetworkDenyList(int uid, boolean add);
|
||||||
|
|
||||||
|
void updateFirewallRule(int chain, int uid, boolean allow);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10614,4 +10614,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateFirewallRule(final int chain, final int uid, final boolean allow) {
|
||||||
|
enforceNetworkStackOrSettingsPermission();
|
||||||
|
|
||||||
|
try {
|
||||||
|
mNetd.firewallSetUidRule(chain, uid,
|
||||||
|
allow ? INetd.FIREWALL_RULE_ALLOW : INetd.FIREWALL_RULE_DENY);
|
||||||
|
} catch (RemoteException | ServiceSpecificException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user