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) {