Include blocked reasons in the netpolicy dump. am: 6a0976aa75
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1902410 Change-Id: Icbe093e03734b0e560497112b72e11c238ad8824
This commit is contained in:
@@ -3826,6 +3826,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
final SparseBooleanArray knownUids = new SparseBooleanArray();
|
final SparseBooleanArray knownUids = new SparseBooleanArray();
|
||||||
collectKeys(mUidState, knownUids);
|
collectKeys(mUidState, knownUids);
|
||||||
collectKeys(mUidRules, knownUids);
|
collectKeys(mUidRules, knownUids);
|
||||||
|
collectKeys(mUidBlockedState, knownUids);
|
||||||
|
|
||||||
fout.println("Status for all known UIDs:");
|
fout.println("Status for all known UIDs:");
|
||||||
fout.increaseIndent();
|
fout.increaseIndent();
|
||||||
@@ -3846,6 +3847,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
final int uidRules = mUidRules.get(uid, RULE_NONE);
|
final int uidRules = mUidRules.get(uid, RULE_NONE);
|
||||||
fout.print(" rules=");
|
fout.print(" rules=");
|
||||||
fout.print(uidRulesToString(uidRules));
|
fout.print(uidRulesToString(uidRules));
|
||||||
|
|
||||||
|
final UidBlockedState uidBlockedState = mUidBlockedState.get(uid);
|
||||||
|
if (uidBlockedState == null) {
|
||||||
|
fout.print(" blocked_state={null}");
|
||||||
|
} else {
|
||||||
|
fout.print(" blocked_state=");
|
||||||
|
fout.print(uidBlockedState.toString());
|
||||||
|
}
|
||||||
fout.println();
|
fout.println();
|
||||||
}
|
}
|
||||||
fout.decreaseIndent();
|
fout.decreaseIndent();
|
||||||
@@ -4555,6 +4564,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
private void onUidDeletedUL(int uid) {
|
private void onUidDeletedUL(int uid) {
|
||||||
// First cleanup in-memory state synchronously...
|
// First cleanup in-memory state synchronously...
|
||||||
mUidRules.delete(uid);
|
mUidRules.delete(uid);
|
||||||
|
mUidBlockedState.delete(uid);
|
||||||
mUidPolicy.delete(uid);
|
mUidPolicy.delete(uid);
|
||||||
mUidFirewallStandbyRules.delete(uid);
|
mUidFirewallStandbyRules.delete(uid);
|
||||||
mUidFirewallDozableRules.delete(uid);
|
mUidFirewallDozableRules.delete(uid);
|
||||||
@@ -5605,7 +5615,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void collectKeys(SparseArray<UidState> source, SparseBooleanArray target) {
|
private static <T> void collectKeys(SparseArray<T> source, SparseBooleanArray target) {
|
||||||
final int size = source.size();
|
final int size = source.size();
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
target.put(source.keyAt(i), true);
|
target.put(source.keyAt(i), true);
|
||||||
@@ -6008,6 +6018,128 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
}
|
}
|
||||||
return effectiveBlockedReasons;
|
return effectiveBlockedReasons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("{");
|
||||||
|
sb.append("blocked=").append(blockedReasonsToString(blockedReasons)).append(",");
|
||||||
|
sb.append("allowed=").append(allowedReasonsToString(allowedReasons)).append(",");
|
||||||
|
sb.append("effective=").append(blockedReasonsToString(effectiveBlockedReasons));
|
||||||
|
sb.append("}");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final int[] BLOCKED_REASONS = {
|
||||||
|
BLOCKED_REASON_BATTERY_SAVER,
|
||||||
|
BLOCKED_REASON_DOZE,
|
||||||
|
BLOCKED_REASON_APP_STANDBY,
|
||||||
|
BLOCKED_REASON_RESTRICTED_MODE,
|
||||||
|
BLOCKED_METERED_REASON_DATA_SAVER,
|
||||||
|
BLOCKED_METERED_REASON_USER_RESTRICTED,
|
||||||
|
BLOCKED_METERED_REASON_ADMIN_DISABLED,
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final int[] ALLOWED_REASONS = {
|
||||||
|
ALLOWED_REASON_SYSTEM,
|
||||||
|
ALLOWED_REASON_FOREGROUND,
|
||||||
|
ALLOWED_REASON_POWER_SAVE_ALLOWLIST,
|
||||||
|
ALLOWED_REASON_POWER_SAVE_EXCEPT_IDLE_ALLOWLIST,
|
||||||
|
ALLOWED_REASON_RESTRICTED_MODE_PERMISSIONS,
|
||||||
|
ALLOWED_METERED_REASON_USER_EXEMPTED,
|
||||||
|
ALLOWED_METERED_REASON_SYSTEM,
|
||||||
|
ALLOWED_METERED_REASON_FOREGROUND,
|
||||||
|
};
|
||||||
|
|
||||||
|
private static String blockedReasonToString(int blockedReason) {
|
||||||
|
switch (blockedReason) {
|
||||||
|
case BLOCKED_REASON_NONE:
|
||||||
|
return "NONE";
|
||||||
|
case BLOCKED_REASON_BATTERY_SAVER:
|
||||||
|
return "BATTERY_SAVER";
|
||||||
|
case BLOCKED_REASON_DOZE:
|
||||||
|
return "DOZE";
|
||||||
|
case BLOCKED_REASON_APP_STANDBY:
|
||||||
|
return "APP_STANDBY";
|
||||||
|
case BLOCKED_REASON_RESTRICTED_MODE:
|
||||||
|
return "RESTRICTED_MODE";
|
||||||
|
case BLOCKED_METERED_REASON_DATA_SAVER:
|
||||||
|
return "DATA_SAVER";
|
||||||
|
case BLOCKED_METERED_REASON_USER_RESTRICTED:
|
||||||
|
return "METERED_USER_RESTRICTED";
|
||||||
|
case BLOCKED_METERED_REASON_ADMIN_DISABLED:
|
||||||
|
return "METERED_ADMIN_DISABLED";
|
||||||
|
default:
|
||||||
|
Slog.wtfStack(TAG, "Unknown blockedReason: " + blockedReason);
|
||||||
|
return String.valueOf(blockedReason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String allowedReasonToString(int allowedReason) {
|
||||||
|
switch (allowedReason) {
|
||||||
|
case ALLOWED_REASON_NONE:
|
||||||
|
return "NONE";
|
||||||
|
case ALLOWED_REASON_SYSTEM:
|
||||||
|
return "SYSTEM";
|
||||||
|
case ALLOWED_REASON_FOREGROUND:
|
||||||
|
return "FOREGROUND";
|
||||||
|
case ALLOWED_REASON_POWER_SAVE_ALLOWLIST:
|
||||||
|
return "POWER_SAVE_ALLOWLIST";
|
||||||
|
case ALLOWED_REASON_POWER_SAVE_EXCEPT_IDLE_ALLOWLIST:
|
||||||
|
return "POWER_SAVE_EXCEPT_IDLE_ALLOWLIST";
|
||||||
|
case ALLOWED_REASON_RESTRICTED_MODE_PERMISSIONS:
|
||||||
|
return "RESTRICTED_MODE_PERMISSIONS";
|
||||||
|
case ALLOWED_METERED_REASON_USER_EXEMPTED:
|
||||||
|
return "METERED_USER_EXEMPTED";
|
||||||
|
case ALLOWED_METERED_REASON_SYSTEM:
|
||||||
|
return "METERED_SYSTEM";
|
||||||
|
case ALLOWED_METERED_REASON_FOREGROUND:
|
||||||
|
return "METERED_FOREGROUND";
|
||||||
|
default:
|
||||||
|
Slog.wtfStack(TAG, "Unknown allowedReason: " + allowedReason);
|
||||||
|
return String.valueOf(allowedReason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String blockedReasonsToString(int blockedReasons) {
|
||||||
|
if (blockedReasons == BLOCKED_REASON_NONE) {
|
||||||
|
return blockedReasonToString(BLOCKED_REASON_NONE);
|
||||||
|
}
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
for (int reason : BLOCKED_REASONS) {
|
||||||
|
if ((blockedReasons & reason) != 0) {
|
||||||
|
sb.append(sb.length() == 0 ? "" : "|");
|
||||||
|
sb.append(blockedReasonToString(reason));
|
||||||
|
blockedReasons &= ~reason;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (blockedReasons != 0) {
|
||||||
|
sb.append(sb.length() == 0 ? "" : "|");
|
||||||
|
sb.append(String.valueOf(blockedReasons));
|
||||||
|
Slog.wtfStack(TAG, "Unknown blockedReasons: " + blockedReasons);
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String allowedReasonsToString(int allowedReasons) {
|
||||||
|
if (allowedReasons == ALLOWED_REASON_NONE) {
|
||||||
|
return allowedReasonToString(ALLOWED_REASON_NONE);
|
||||||
|
}
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
for (int reason : ALLOWED_REASONS) {
|
||||||
|
if ((allowedReasons & reason) != 0) {
|
||||||
|
sb.append(sb.length() == 0 ? "" : "|");
|
||||||
|
sb.append(allowedReasonToString(reason));
|
||||||
|
allowedReasons &= ~reason;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allowedReasons != 0) {
|
||||||
|
sb.append(sb.length() == 0 ? "" : "|");
|
||||||
|
sb.append(String.valueOf(allowedReasons));
|
||||||
|
Slog.wtfStack(TAG, "Unknown allowedReasons: " + allowedReasons);
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class NotificationId {
|
private class NotificationId {
|
||||||
|
|||||||
Reference in New Issue
Block a user