diff options
| author | Nucca Chen <nuccachen@google.com> | 2020-06-01 23:33:24 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-06-01 23:33:24 +0000 |
| commit | 88c3ea4cb43a9d3d374383d82d4a6885c5b34e21 (patch) | |
| tree | f5fcf0804fc0919e464e4e99118cd832d54b51ef /server/TetherController.cpp | |
| parent | 3e9cc187a373ed6275c3cc6d489fa59ab5b1ea88 (diff) | |
| parent | 47b21a691603d28bb022573e27c03e5f9677e415 (diff) | |
| download | platform_system_netd-88c3ea4cb43a9d3d374383d82d4a6885c5b34e21.tar.gz platform_system_netd-88c3ea4cb43a9d3d374383d82d4a6885c5b34e21.tar.bz2 platform_system_netd-88c3ea4cb43a9d3d374383d82d4a6885c5b34e21.zip | |
Merge changes from topic "tether_offload_data_limit"
* changes:
Add com.android.tethering to be netd_aidl_interface's apex user
Add binder call tetherOffloadGetStats
Diffstat (limited to 'server/TetherController.cpp')
| -rw-r--r-- | server/TetherController.cpp | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/server/TetherController.cpp b/server/TetherController.cpp index 6dfb041ac..851cfecde 100644 --- a/server/TetherController.cpp +++ b/server/TetherController.cpp @@ -81,10 +81,6 @@ const char IPV6_FORWARDING_PROC_FILE[] = "/proc/sys/net/ipv6/conf/all/forwarding const char SEPARATOR[] = "|"; constexpr const char kTcpBeLiberal[] = "/proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal"; -// Dummy interface name, the name needs to be longer than 16 characters so it can never conflict -// with a real interface name. See also IFNAMSIZ. -constexpr const char kBpfOffloadInterface[] = "BPFOffloadInterface"; - // Chosen to match AID_DNS_TETHER, as made "friendly" by fs_config_generator.py. constexpr const char kDnsmasqUsername[] = "dns_tether"; @@ -205,11 +201,6 @@ bool TetherController::disableForwarding(const char* requester) { void TetherController::maybeInitMaps() { if (!bpf::isBpfSupported()) return; - // Used for parsing tether stats from BPF maps. If open the map failed, skip to open - // tether BPF offload maps. - mIfaceIndexNameMap.init(IFACE_INDEX_NAME_MAP_PATH); - if (!mIfaceIndexNameMap.isValid()) return; - // Open BPF maps, ignoring errors because the device might not support BPF offload. int fd = getTetherIngressMapFd(); if (fd >= 0) { @@ -1030,32 +1021,25 @@ StatusOr<TetherController::TetherStatsList> TetherController::getTetherStats() { } } - if (!mBpfStatsMap.isValid()) { - return statsList; - } + return statsList; +} - const auto processTetherStats = [this, &statsList](const uint32_t& key, - const TetherStatsValue& value, - const BpfMap<uint32_t, TetherStatsValue>&) { - auto ifname = mIfaceIndexNameMap.readValue(key); - if (!ifname.ok()) { - // Keep on going regardless to parse as much as possible. - return Result<void>(); - } - // Because the same interface name can have different interface IDs over time, there might - // already be a TetherStats in the list with this interface name. This is fine because - // addStats will increment an existing TetherStats if there is one in the list already, - // and add a new TetherStats to the list if there isn't. - addStats(statsList, - {kBpfOffloadInterface, ifname.value().name, static_cast<int64_t>(value.rxBytes), - static_cast<int64_t>(value.rxPackets), static_cast<int64_t>(value.txBytes), - static_cast<int64_t>(value.txPackets)}); +StatusOr<TetherController::TetherOffloadStatsList> TetherController::getTetherOffloadStats() { + TetherOffloadStatsList statsList; + + const auto processTetherStats = [&statsList](const uint32_t& key, const TetherStatsValue& value, + const BpfMap<uint32_t, TetherStatsValue>&) { + statsList.push_back({.ifIndex = static_cast<int>(key), + .rxBytes = static_cast<int64_t>(value.rxBytes), + .rxPackets = static_cast<int64_t>(value.rxPackets), + .txBytes = static_cast<int64_t>(value.txBytes), + .txPackets = static_cast<int64_t>(value.txPackets)}); return Result<void>(); }; auto ret = mBpfStatsMap.iterateWithValue(processTetherStats); if (!ret.ok()) { - // Ignore error to return the non-BPF tether stats result. + // Ignore error to return the remaining tether stats result. ALOGE("Error processing tether stats from BPF maps: %s", ret.error().message().c_str()); } |
