Merge "Track interfaces and roaming changed event history"
This commit is contained in:
@@ -38,6 +38,7 @@ import android.app.ActivityManager;
|
|||||||
import android.app.ActivityManager.ProcessCapability;
|
import android.app.ActivityManager.ProcessCapability;
|
||||||
import android.net.NetworkPolicyManager;
|
import android.net.NetworkPolicyManager;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
|
import android.util.ArraySet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Slog;
|
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_APP_IDLE_WL_CHANGED = 14;
|
||||||
private static final int EVENT_METERED_ALLOWLIST_CHANGED = 15;
|
private static final int EVENT_METERED_ALLOWLIST_CHANGED = 15;
|
||||||
private static final int EVENT_METERED_DENYLIST_CHANGED = 16;
|
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 mNetworkBlockedBuffer = new LogBuffer(MAX_NETWORK_BLOCKED_LOG_SIZE);
|
||||||
private final LogBuffer mUidStateChangeBuffer = new LogBuffer(MAX_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) {
|
void setDebugUid(int uid) {
|
||||||
mDebugUid = uid;
|
mDebugUid = uid;
|
||||||
}
|
}
|
||||||
@@ -348,6 +369,14 @@ public class NetworkPolicyLogger {
|
|||||||
return "metered-denylist for " + uid + " changed to " + added;
|
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) {
|
private static String getFirewallChainName(int chain) {
|
||||||
switch (chain) {
|
switch (chain) {
|
||||||
case FIREWALL_CHAIN_DOZABLE:
|
case FIREWALL_CHAIN_DOZABLE:
|
||||||
@@ -570,6 +599,28 @@ public class NetworkPolicyLogger {
|
|||||||
data.timeStamp = System.currentTimeMillis();
|
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) {
|
public void reverseDump(IndentingPrintWriter pw) {
|
||||||
final Data[] allData = toArray();
|
final Data[] allData = toArray();
|
||||||
for (int i = allData.length - 1; i >= 0; --i) {
|
for (int i = allData.length - 1; i >= 0; --i) {
|
||||||
@@ -621,6 +672,10 @@ public class NetworkPolicyLogger {
|
|||||||
return getMeteredAllowlistChangedLog(data.ifield1, data.bfield1);
|
return getMeteredAllowlistChangedLog(data.ifield1, data.bfield1);
|
||||||
case EVENT_METERED_DENYLIST_CHANGED:
|
case EVENT_METERED_DENYLIST_CHANGED:
|
||||||
return getMeteredDenylistChangedLog(data.ifield1, data.bfield1);
|
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:
|
default:
|
||||||
return String.valueOf(data.type);
|
return String.valueOf(data.type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1382,8 +1382,17 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
final boolean roamingChanged = updateCapabilityChange(
|
final boolean roamingChanged = updateCapabilityChange(
|
||||||
mNetworkRoaming, newRoaming, network);
|
mNetworkRoaming, newRoaming, network);
|
||||||
|
|
||||||
if (meteredChanged || roamingChanged) {
|
final boolean shouldUpdateNetworkRules = meteredChanged || roamingChanged;
|
||||||
|
|
||||||
|
if (meteredChanged) {
|
||||||
mLogger.meterednessChanged(network.getNetId(), newMetered);
|
mLogger.meterednessChanged(network.getNetId(), newMetered);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (roamingChanged) {
|
||||||
|
mLogger.roamingChanged(network.getNetId(), newRoaming);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shouldUpdateNetworkRules) {
|
||||||
updateNetworkRulesNL();
|
updateNetworkRulesNL();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1396,6 +1405,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
|||||||
final boolean ifacesChanged = updateNetworkToIfacesNL(network.getNetId(),
|
final boolean ifacesChanged = updateNetworkToIfacesNL(network.getNetId(),
|
||||||
newIfaces);
|
newIfaces);
|
||||||
if (ifacesChanged) {
|
if (ifacesChanged) {
|
||||||
|
mLogger.interfacesChanged(network.getNetId(), newIfaces);
|
||||||
updateNetworkRulesNL();
|
updateNetworkRulesNL();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user