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

Commit 03005f9e authored by lucaslin's avatar lucaslin Committed by Lucas Lin
Browse files

Use getAllInterfaceNames to get all interface names

The current design is using hidden API - getStackedLinks() to
get LinkProperties then call getInterfaceName() to get the
interface name. In fact, this behavior could be replaced by
system API - getAllInterfaceNames().

Bug: 182963397
Test: atest FrameworksNetTests
Test: atest CtsNetTestCases
Change-Id: Id2b19dc5099355af69d23a6d99d2b7e6c0e1e88a
Merged-In: Id2b19dc5099355af69d23a6d99d2b7e6c0e1e88a
  (cherry-picked from ag/13927660)
parent 4eca6d0c
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -179,7 +179,6 @@ import android.net.INetworkManagementEventObserver;
import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
@@ -1922,16 +1921,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
     * Collect all ifaces from a {@link NetworkStateSnapshot} into the given set.
     */
    private static void collectIfaces(ArraySet<String> ifaces, NetworkStateSnapshot snapshot) {
        final String baseIface = snapshot.linkProperties.getInterfaceName();
        if (baseIface != null) {
            ifaces.add(baseIface);
        }
        for (LinkProperties stackedLink : snapshot.linkProperties.getStackedLinks()) {
            final String stackedIface = stackedLink.getInterfaceName();
            if (stackedIface != null) {
                ifaces.add(stackedIface);
            }
        }
        ifaces.addAll(snapshot.linkProperties.getAllInterfaceNames());
    }

    /**
+10 −9
Original line number Diff line number Diff line
@@ -92,7 +92,6 @@ import android.net.DataUsageRequest;
import android.net.INetworkManagementEventObserver;
import android.net.INetworkStatsService;
import android.net.INetworkStatsSession;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
@@ -131,6 +130,7 @@ import android.service.NetworkInterfaceProto;
import android.service.NetworkStatsServiceDumpProto;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionPlan;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -1358,17 +1358,18 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
            // (or non eBPF offloaded) TX they would appear on both, however egress interface
            // accounting is explicitly bypassed for traffic from the clat uid.
            //
            final List<LinkProperties> stackedLinks = snapshot.linkProperties.getStackedLinks();
            for (LinkProperties stackedLink : stackedLinks) {
                final String stackedIface = stackedLink.getInterfaceName();
                if (stackedIface != null) {
                    findOrCreateNetworkIdentitySet(mActiveIfaces, stackedIface).add(ident);
                    findOrCreateNetworkIdentitySet(mActiveUidIfaces, stackedIface).add(ident);
            // TODO: This code might be combined to above code.
            for (String iface : snapshot.linkProperties.getAllInterfaceNames()) {
                // baseIface has been handled, so ignore it.
                if (TextUtils.equals(baseIface, iface)) continue;
                if (iface != null) {
                    findOrCreateNetworkIdentitySet(mActiveIfaces, iface).add(ident);
                    findOrCreateNetworkIdentitySet(mActiveUidIfaces, iface).add(ident);
                    if (isMobile) {
                        mobileIfaces.add(stackedIface);
                        mobileIfaces.add(iface);
                    }

                    mStatsFactory.noteStackedIface(stackedIface, baseIface);
                    mStatsFactory.noteStackedIface(iface, baseIface);
                }
            }
        }