BpfNetworkStats: fallback to if_indextoname() on index->name map lookup failure
(this should fix the 4 ipsec tests which don't call the right
higher APIs that would eventually call into bpfRegisterIface)
Test: TreeHugger, atest libnetworkstats_test
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I3069f3a2f809948cd2e7755745586b78ff3362c9
diff --git a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp
index e9784ff..d3e331e 100644
--- a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp
+++ b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp
@@ -51,7 +51,12 @@
}
Result<IfaceValue> ifindex2name(const uint32_t ifindex) {
- return getIfaceIndexNameMap().readValue(ifindex);
+ Result<IfaceValue> v = getIfaceIndexNameMap().readValue(ifindex);
+ if (v.ok()) return v;
+ IfaceValue iv = {};
+ if (!if_indextoname(ifindex, iv.name)) return v;
+ getIfaceIndexNameMap().writeValue(ifindex, iv, BPF_ANY);
+ return iv;
}
void bpfRegisterIface(const char* iface) {