Use eBPF map data for per iface stats am: 2dc99dc445

am: 2e13ecc88d

Change-Id: If4944a4a5a0c49235731afb4ae3220cf72240a83
This commit is contained in:
Chenbo Feng
2018-05-01 19:49:53 -07:00
committed by android-build-merger
2 changed files with 63 additions and 37 deletions

View File

@@ -178,6 +178,14 @@ public class NetworkStatsFactory {
return stats;
}
public NetworkStats readBpfNetworkStatsDev() throws IOException {
final NetworkStats stats = new NetworkStats(SystemClock.elapsedRealtime(), 6);
if (nativeReadNetworkStatsDev(stats) != 0) {
throw new IOException("Failed to parse bpf iface stats");
}
return stats;
}
/**
* Parse and return interface-level summary {@link NetworkStats} measured
* using {@code /proc/net/dev} style hooks, which may include non IP layer
@@ -188,9 +196,9 @@ public class NetworkStatsFactory {
*/
public NetworkStats readNetworkStatsSummaryDev() throws IOException {
// Return the stats get from /proc/net/dev if switched to bpf module.
// Return xt_bpf stats if switched to bpf module.
if (mUseBpfStats)
return readNetworkStatsIfaceDev();
return readBpfNetworkStatsDev();
final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
@@ -244,9 +252,9 @@ public class NetworkStatsFactory {
*/
public NetworkStats readNetworkStatsSummaryXt() throws IOException {
// Return the stats get from /proc/net/dev if qtaguid module is replaced.
// Return xt_bpf stats if qtaguid module is replaced.
if (mUseBpfStats)
return readNetworkStatsIfaceDev();
return readBpfNetworkStatsDev();
final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskReads();
@@ -408,4 +416,7 @@ public class NetworkStatsFactory {
@VisibleForTesting
public static native int nativeReadNetworkStatsDetail(NetworkStats stats, String path,
int limitUid, String[] limitIfaces, int limitTag, boolean useBpfStats);
@VisibleForTesting
public static native int nativeReadNetworkStatsDev(NetworkStats stats);
}