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

Commit 5fafd29d authored by Bryse Flowers's avatar Bryse Flowers Committed by Steve Kondik
Browse files

server: Whitelist non-INTERNET/non-CELLULAR Network for metering

Avoid setting a quota or counting statistics for non-internet
and non-cellular Networks.  Fixes an issue with metering feature
where mobile data usage is incorrectly applied to IMS or other
non-internet PDN.

Change-Id: Ib68f5e560ea1dd230747e4f367081501b70cfc60
CRs-Fixed: 984189
parent cca9cb7a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ import android.net.INetworkPolicyListener;
import android.net.INetworkPolicyManager;
import android.net.INetworkStatsService;
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
import android.net.NetworkInfo;
import android.net.NetworkPolicy;
@@ -1209,7 +1210,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        final ArrayList<Pair<String, NetworkIdentity>> connIdents = new ArrayList<>(states.length);
        final ArraySet<String> connIfaces = new ArraySet<String>(states.length);
        for (NetworkState state : states) {
            if (state.networkInfo.isConnected()) {
            if (state.networkInfo.isConnected() && (state.networkCapabilities == null
                        || !state.networkCapabilities.hasTransport(
                                    NetworkCapabilities.TRANSPORT_CELLULAR)
                        || state.networkCapabilities.hasCapability(
                                    NetworkCapabilities.NET_CAPABILITY_INTERNET))) {
                final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);

                final String baseIface = state.linkProperties.getInterfaceName();
+6 −1
Original line number Diff line number Diff line
@@ -81,6 +81,7 @@ import android.net.INetworkManagementEventObserver;
import android.net.INetworkStatsService;
import android.net.INetworkStatsSession;
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.net.NetworkIdentity;
import android.net.NetworkInfo;
import android.net.NetworkState;
@@ -941,7 +942,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub {

        final ArraySet<String> mobileIfaces = new ArraySet<>();
        for (NetworkState state : states) {
            if (state.networkInfo.isConnected()) {
            if (state.networkInfo.isConnected() && (state.networkCapabilities == null
                        || !state.networkCapabilities.hasTransport(
                                    NetworkCapabilities.TRANSPORT_CELLULAR)
                        || state.networkCapabilities.hasCapability(
                                    NetworkCapabilities.NET_CAPABILITY_INTERNET))) {
                final boolean isMobile = isNetworkTypeMobile(state.networkInfo.getType());
                final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);