Skip to content

Commit 5fafd29

Browse files
Bryse Flowershyperb1iss
authored andcommitted
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
1 parent cca9cb7 commit 5fafd29

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

services/core/java/com/android/server/net/NetworkPolicyManagerService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
import android.net.INetworkPolicyManager;
109109
import android.net.INetworkStatsService;
110110
import android.net.LinkProperties;
111+
import android.net.NetworkCapabilities;
111112
import android.net.NetworkIdentity;
112113
import android.net.NetworkInfo;
113114
import android.net.NetworkPolicy;
@@ -1209,7 +1210,11 @@ void updateNetworkRulesLocked() {
12091210
final ArrayList<Pair<String, NetworkIdentity>> connIdents = new ArrayList<>(states.length);
12101211
final ArraySet<String> connIfaces = new ArraySet<String>(states.length);
12111212
for (NetworkState state : states) {
1212-
if (state.networkInfo.isConnected()) {
1213+
if (state.networkInfo.isConnected() && (state.networkCapabilities == null
1214+
|| !state.networkCapabilities.hasTransport(
1215+
NetworkCapabilities.TRANSPORT_CELLULAR)
1216+
|| state.networkCapabilities.hasCapability(
1217+
NetworkCapabilities.NET_CAPABILITY_INTERNET))) {
12131218
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);
12141219

12151220
final String baseIface = state.linkProperties.getInterfaceName();

services/core/java/com/android/server/net/NetworkStatsService.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
import android.net.INetworkStatsService;
8282
import android.net.INetworkStatsSession;
8383
import android.net.LinkProperties;
84+
import android.net.NetworkCapabilities;
8485
import android.net.NetworkIdentity;
8586
import android.net.NetworkInfo;
8687
import android.net.NetworkState;
@@ -941,7 +942,11 @@ private void updateIfacesLocked() {
941942

942943
final ArraySet<String> mobileIfaces = new ArraySet<>();
943944
for (NetworkState state : states) {
944-
if (state.networkInfo.isConnected()) {
945+
if (state.networkInfo.isConnected() && (state.networkCapabilities == null
946+
|| !state.networkCapabilities.hasTransport(
947+
NetworkCapabilities.TRANSPORT_CELLULAR)
948+
|| state.networkCapabilities.hasCapability(
949+
NetworkCapabilities.NET_CAPABILITY_INTERNET))) {
945950
final boolean isMobile = isNetworkTypeMobile(state.networkInfo.getType());
946951
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state);
947952

0 commit comments

Comments
 (0)