From d3d144f54d3d4c7b92f7b9f2db1655c3e0fa4145 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Fri, 26 Jan 2024 15:15:44 -0800 Subject: [PATCH] BpfNetworkStats: fallback to if_indextoname() on index->name map lookup failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (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 Change-Id: I3069f3a2f809948cd2e7755745586b78ff3362c9 --- service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp index e9784ffbb2..d3e331ec81 100644 --- a/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp +++ b/service-t/native/libs/libnetworkstats/BpfNetworkStats.cpp @@ -51,7 +51,12 @@ const BpfMapRO& getIfaceStatsMap() { } Result ifindex2name(const uint32_t ifindex) { - return getIfaceIndexNameMap().readValue(ifindex); + Result 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) {