Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81f7940d authored by Aaron Huang's avatar Aaron Huang Committed by Gerrit Code Review
Browse files

Merge "Track interfaces and roaming changed event history"

parents b0c1ec7c a58a05a4
Loading
Loading
Loading
Loading
+55 −0
Original line number Diff line number Diff line
@@ -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);
            }
+11 −1
Original line number Diff line number Diff line
@@ -1382,8 +1382,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();
                }
            }
@@ -1396,6 +1405,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                final boolean ifacesChanged = updateNetworkToIfacesNL(network.getNetId(),
                        newIfaces);
                if (ifacesChanged) {
                    mLogger.interfacesChanged(network.getNetId(), newIfaces);
                    updateNetworkRulesNL();
                }
            }