diff options
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyLogger.java | 55 | ||||
| -rw-r--r-- | services/core/java/com/android/server/net/NetworkPolicyManagerService.java | 12 |
2 files changed, 66 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/net/NetworkPolicyLogger.java b/services/core/java/com/android/server/net/NetworkPolicyLogger.java index c9631549cd76..4a0a07b9783c 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyLogger.java +++ b/services/core/java/com/android/server/net/NetworkPolicyLogger.java @@ -38,6 +38,7 @@ import android.app.ActivityManager; import android.app.ActivityManager.ProcessCapability; import android.net.NetworkPolicyManager; import android.os.UserHandle; +import android.util.ArraySet; import android.util.Log; import android.util.Slog; @@ -79,6 +80,8 @@ public class NetworkPolicyLogger { private static final int EVENT_APP_IDLE_WL_CHANGED = 14; private static final int EVENT_METERED_ALLOWLIST_CHANGED = 15; private static final int EVENT_METERED_DENYLIST_CHANGED = 16; + private static final int EVENT_ROAMING_CHANGED = 17; + private static final int EVENT_INTERFACES_CHANGED = 18; private final LogBuffer mNetworkBlockedBuffer = new LogBuffer(MAX_NETWORK_BLOCKED_LOG_SIZE); private final LogBuffer mUidStateChangeBuffer = new LogBuffer(MAX_LOG_SIZE); @@ -265,6 +268,24 @@ public class NetworkPolicyLogger { } } + void roamingChanged(int netId, boolean newRoaming) { + synchronized (mLock) { + if (LOGD || mDebugUid != INVALID_UID) { + Slog.d(TAG, getRoamingChangedLog(netId, newRoaming)); + } + mEventsBuffer.roamingChanged(netId, newRoaming); + } + } + + void interfacesChanged(int netId, ArraySet<String> newIfaces) { + synchronized (mLock) { + if (LOGD || mDebugUid != INVALID_UID) { + Slog.d(TAG, getInterfacesChangedLog(netId, newIfaces.toString())); + } + mEventsBuffer.interfacesChanged(netId, newIfaces.toString()); + } + } + void setDebugUid(int uid) { mDebugUid = uid; } @@ -348,6 +369,14 @@ public class NetworkPolicyLogger { return "metered-denylist for " + uid + " changed to " + added; } + private static String getRoamingChangedLog(int netId, boolean newRoaming) { + return "Roaming of netId=" + netId + " changed to " + newRoaming; + } + + private static String getInterfacesChangedLog(int netId, String newIfaces) { + return "Interfaces of netId=" + netId + " changed to " + newIfaces; + } + private static String getFirewallChainName(int chain) { switch (chain) { case FIREWALL_CHAIN_DOZABLE: @@ -570,6 +599,28 @@ public class NetworkPolicyLogger { data.timeStamp = System.currentTimeMillis(); } + public void roamingChanged(int netId, boolean newRoaming) { + final Data data = getNextSlot(); + if (data == null) return; + + data.reset(); + data.type = EVENT_ROAMING_CHANGED; + data.ifield1 = netId; + data.bfield1 = newRoaming; + data.timeStamp = System.currentTimeMillis(); + } + + public void interfacesChanged(int netId, String newIfaces) { + final Data data = getNextSlot(); + if (data == null) return; + + data.reset(); + data.type = EVENT_INTERFACES_CHANGED; + data.ifield1 = netId; + data.sfield1 = newIfaces; + data.timeStamp = System.currentTimeMillis(); + } + public void reverseDump(IndentingPrintWriter pw) { final Data[] allData = toArray(); for (int i = allData.length - 1; i >= 0; --i) { @@ -621,6 +672,10 @@ public class NetworkPolicyLogger { return getMeteredAllowlistChangedLog(data.ifield1, data.bfield1); case EVENT_METERED_DENYLIST_CHANGED: return getMeteredDenylistChangedLog(data.ifield1, data.bfield1); + case EVENT_ROAMING_CHANGED: + return getRoamingChangedLog(data.ifield1, data.bfield1); + case EVENT_INTERFACES_CHANGED: + return getInterfacesChangedLog(data.ifield1, data.sfield1); default: return String.valueOf(data.type); } diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index b16f67891b37..c73c5a0260a9 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -1367,8 +1367,17 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final boolean roamingChanged = updateCapabilityChange( mNetworkRoaming, newRoaming, network); - if (meteredChanged || roamingChanged) { + final boolean shouldUpdateNetworkRules = meteredChanged || roamingChanged; + + if (meteredChanged) { mLogger.meterednessChanged(network.getNetId(), newMetered); + } + + if (roamingChanged) { + mLogger.roamingChanged(network.getNetId(), newRoaming); + } + + if (shouldUpdateNetworkRules) { updateNetworkRulesNL(); } } @@ -1381,6 +1390,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final boolean ifacesChanged = updateNetworkToIfacesNL(network.getNetId(), newIfaces); if (ifacesChanged) { + mLogger.interfacesChanged(network.getNetId(), newIfaces); updateNetworkRulesNL(); } } |