diff --git a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp index 769ddb3267..1bc8ca5b58 100644 --- a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp +++ b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp @@ -109,12 +109,12 @@ stats_line populateStatsEntry(const StatsKey& statsKey, const StatsValue& statsE return newLine; } -int parseBpfNetworkStatsDetailInternal(std::vector* lines, +int parseBpfNetworkStatsDetailInternal(std::vector& lines, const BpfMap& statsMap, const BpfMap& ifaceMap) { int64_t unknownIfaceBytesTotal = 0; const auto processDetailUidStats = - [lines, &unknownIfaceBytesTotal, &ifaceMap]( + [&lines, &unknownIfaceBytesTotal, &ifaceMap]( const StatsKey& key, const BpfMap& statsMap) -> Result { char ifname[IFNAMSIZ]; @@ -127,11 +127,11 @@ int parseBpfNetworkStatsDetailInternal(std::vector* lines, return base::ResultError(statsEntry.error().message(), statsEntry.error().code()); } stats_line newLine = populateStatsEntry(key, statsEntry.value(), ifname); - lines->push_back(newLine); + lines.push_back(newLine); if (newLine.tag) { // account tagged traffic in the untagged stats (for historical reasons?) newLine.tag = 0; - lines->push_back(newLine); + lines.push_back(newLine); } return Result(); }; @@ -151,7 +151,7 @@ int parseBpfNetworkStatsDetailInternal(std::vector* lines, // and set, which causes NetworkStats maps wrong item to subtract. // // Thus, the stats needs to be properly sorted and grouped before reported. - groupNetworkStats(*lines); + groupNetworkStats(lines); return 0; } @@ -186,7 +186,7 @@ int parseBpfNetworkStatsDetail(std::vector* lines) { // TODO: the above comment feels like it may be obsolete / out of date, // since we no longer swap the map via netd binder rpc - though we do // still swap it. - int ret = parseBpfNetworkStatsDetailInternal(lines, *inactiveStatsMap, ifaceIndexNameMap); + int ret = parseBpfNetworkStatsDetailInternal(*lines, *inactiveStatsMap, ifaceIndexNameMap); if (ret) { ALOGE("parse detail network stats failed: %s", strerror(errno)); return ret; @@ -201,11 +201,11 @@ int parseBpfNetworkStatsDetail(std::vector* lines) { return 0; } -int parseBpfNetworkStatsDevInternal(std::vector* lines, +int parseBpfNetworkStatsDevInternal(std::vector& lines, const BpfMap& statsMap, const BpfMap& ifaceMap) { int64_t unknownIfaceBytesTotal = 0; - const auto processDetailIfaceStats = [lines, &unknownIfaceBytesTotal, &ifaceMap, &statsMap]( + const auto processDetailIfaceStats = [&lines, &unknownIfaceBytesTotal, &ifaceMap, &statsMap]( const uint32_t& key, const StatsValue& value, const BpfMap&) { char ifname[IFNAMSIZ]; @@ -217,7 +217,7 @@ int parseBpfNetworkStatsDevInternal(std::vector* lines, .tag = (uint32_t)TAG_NONE, .counterSet = (uint32_t)SET_ALL, }; - lines->push_back(populateStatsEntry(fakeKey, value, ifname)); + lines.push_back(populateStatsEntry(fakeKey, value, ifname)); return Result(); }; Result res = statsMap.iterateWithValue(processDetailIfaceStats); @@ -227,14 +227,14 @@ int parseBpfNetworkStatsDevInternal(std::vector* lines, return -res.error().code(); } - groupNetworkStats(*lines); + groupNetworkStats(lines); return 0; } int parseBpfNetworkStatsDev(std::vector* lines) { static BpfMapRO ifaceIndexNameMap(IFACE_INDEX_NAME_MAP_PATH); static BpfMapRO ifaceStatsMap(IFACE_STATS_MAP_PATH); - return parseBpfNetworkStatsDevInternal(lines, ifaceStatsMap, ifaceIndexNameMap); + return parseBpfNetworkStatsDevInternal(*lines, ifaceStatsMap, ifaceIndexNameMap); } void groupNetworkStats(std::vector& lines) { diff --git a/service-t/native/libs/libnetworkstats/BpfNetworkStatsTest.cpp b/service-t/native/libs/libnetworkstats/BpfNetworkStatsTest.cpp index f8d9ec863c..ccd3f5e9f1 100644 --- a/service-t/native/libs/libnetworkstats/BpfNetworkStatsTest.cpp +++ b/service-t/native/libs/libnetworkstats/BpfNetworkStatsTest.cpp @@ -228,7 +228,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetUidStatsTotal) { populateFakeStats(TEST_UID1, 0, IFACE_INDEX1, TEST_COUNTERSET0, value1, mFakeStatsMap); populateFakeStats(TEST_UID1, 0, IFACE_INDEX2, TEST_COUNTERSET1, value1, mFakeStatsMap); populateFakeStats(TEST_UID2, 0, IFACE_INDEX3, TEST_COUNTERSET1, value1, mFakeStatsMap); - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((unsigned long)3, lines.size()); } @@ -290,7 +290,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsDetail) { mFakeStatsMap); populateFakeStats(TEST_UID2, TEST_TAG, IFACE_INDEX1, TEST_COUNTERSET0, value1, mFakeStatsMap); std::vector lines; - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((unsigned long)7, lines.size()); } @@ -310,7 +310,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsWithSkippedIface) { populateFakeStats(TEST_UID1, 0, IFACE_INDEX1, TEST_COUNTERSET1, value1, mFakeStatsMap); populateFakeStats(TEST_UID2, 0, IFACE_INDEX1, TEST_COUNTERSET0, value1, mFakeStatsMap); std::vector lines; - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((unsigned long)4, lines.size()); } @@ -349,7 +349,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestUnknownIfaceError) { ASSERT_EQ(-1, unknownIfaceBytesTotal); std::vector lines; // TODO: find a way to test the total of unknown Iface Bytes go above limit. - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((unsigned long)1, lines.size()); expectStatsLineEqual(value1, IFACE_NAME1, TEST_UID1, TEST_COUNTERSET0, 0, lines.front()); } @@ -381,7 +381,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetIfaceStatsDetail) { EXPECT_RESULT_OK(mFakeIfaceStatsMap.writeValue(ifaceStatsKey, value2, BPF_ANY)); std::vector lines; ASSERT_EQ(0, - parseBpfNetworkStatsDevInternal(&lines, mFakeIfaceStatsMap, mFakeIfaceIndexNameMap)); + parseBpfNetworkStatsDevInternal(lines, mFakeIfaceStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((unsigned long)4, lines.size()); expectStatsLineEqual(value1, IFACE_NAME1, UID_ALL, SET_ALL, TAG_NONE, lines[0]); @@ -425,13 +425,13 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsSortedAndGrouped) { std::vector lines; // Test empty stats. - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 0, lines.size()); lines.clear(); // Test 1 line stats. populateFakeStats(TEST_UID1, TEST_TAG, IFACE_INDEX1, TEST_COUNTERSET0, value1, mFakeStatsMap); - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 2, lines.size()); // TEST_TAG != 0 -> 1 entry becomes 2 lines expectStatsLineEqual(value1, IFACE_NAME1, TEST_UID1, TEST_COUNTERSET0, 0, lines[0]); expectStatsLineEqual(value1, IFACE_NAME1, TEST_UID1, TEST_COUNTERSET0, TEST_TAG, lines[1]); @@ -443,7 +443,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsSortedAndGrouped) { populateFakeStats(TEST_UID1, TEST_TAG + 1, IFACE_INDEX1, TEST_COUNTERSET0, value2, mFakeStatsMap); populateFakeStats(TEST_UID2, TEST_TAG, IFACE_INDEX1, TEST_COUNTERSET0, value1, mFakeStatsMap); - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 9, lines.size()); lines.clear(); @@ -451,7 +451,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsSortedAndGrouped) { populateFakeStats(TEST_UID1, TEST_TAG, IFACE_INDEX3, TEST_COUNTERSET0, value1, mFakeStatsMap); populateFakeStats(TEST_UID2, TEST_TAG, IFACE_INDEX3, TEST_COUNTERSET0, value1, mFakeStatsMap); - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 9, lines.size()); // Verify Sorted & Grouped. @@ -477,7 +477,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsSortedAndGrouped) { EXPECT_RESULT_OK(mFakeIfaceStatsMap.writeValue(ifaceStatsKey, value1, BPF_ANY)); ASSERT_EQ(0, - parseBpfNetworkStatsDevInternal(&lines, mFakeIfaceStatsMap, mFakeIfaceIndexNameMap)); + parseBpfNetworkStatsDevInternal(lines, mFakeIfaceStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 2, lines.size()); expectStatsLineEqual(value3, IFACE_NAME1, UID_ALL, SET_ALL, TAG_NONE, lines[0]); @@ -518,7 +518,7 @@ TEST_F(BpfNetworkStatsHelperTest, TestGetStatsSortAndOverflow) { // TODO: Mutate counterSet and enlarge TEST_MAP_SIZE if overflow on counterSet is possible. std::vector lines; - ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(&lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); + ASSERT_EQ(0, parseBpfNetworkStatsDetailInternal(lines, mFakeStatsMap, mFakeIfaceIndexNameMap)); ASSERT_EQ((size_t) 12, lines.size()); // Uid 0 first diff --git a/service-t/native/libs/libnetworkstats/include/netdbpf/BpfNetworkStats.h b/service-t/native/libs/libnetworkstats/include/netdbpf/BpfNetworkStats.h index 5d8ffc3676..133009f053 100644 --- a/service-t/native/libs/libnetworkstats/include/netdbpf/BpfNetworkStats.h +++ b/service-t/native/libs/libnetworkstats/include/netdbpf/BpfNetworkStats.h @@ -63,7 +63,7 @@ int bpfGetIfaceStatsInternal(const char* iface, Stats* stats, const BpfMap& ifaceStatsMap, const BpfMap& ifaceNameMap); // For test only -int parseBpfNetworkStatsDetailInternal(std::vector* lines, +int parseBpfNetworkStatsDetailInternal(std::vector& lines, const BpfMap& statsMap, const BpfMap& ifaceMap); // For test only @@ -106,7 +106,7 @@ void maybeLogUnknownIface(int ifaceIndex, const BpfMap& statsMa } // For test only -int parseBpfNetworkStatsDevInternal(std::vector* lines, +int parseBpfNetworkStatsDevInternal(std::vector& lines, const BpfMap& statsMap, const BpfMap& ifaceMap);