BpfNetMaps: auto populate interface tracker
on demand, should get rid of:
$ adb shell logcat -s -d : | egrep -i bpfn
03-18 11:55:20.724 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /224.0.0.0(buried_eth0)
03-18 11:55:20.724 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /ff00::(buried_eth0)
03-18 11:55:20.724 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /255.255.255.255(buried_eth0)
03-18 11:55:20.724 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /192.168.0.0(buried_eth0)
03-18 11:55:26.328 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /224.0.0.0(wlan0)
03-18 11:55:26.328 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /ff00::(wlan0)
03-18 11:55:26.328 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /255.255.255.255(wlan0)
03-18 11:55:26.328 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /fe80::(wlan0)
03-18 11:55:29.333 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /fe80::(wlan0)
03-18 11:55:29.348 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /fe80::(wlan0)
03-18 11:55:29.349 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /192.168.99.1(wlan0)
03-18 11:55:29.349 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /192.168.99.1(wlan0)
03-18 11:55:29.349 826 2453 E BpfNetMaps: Failed to get if index, skip addLocalNetAccess for /192.168.0.0(wlan0)
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1a8c0fcef43674677fd267534d0cc9d1f8514792
diff --git a/service/src/com/android/server/BpfNetMaps.java b/service/src/com/android/server/BpfNetMaps.java
index 923920f..9bd407d 100644
--- a/service/src/com/android/server/BpfNetMaps.java
+++ b/service/src/com/android/server/BpfNetMaps.java
@@ -915,10 +915,13 @@
final InetAddress address, final int protocol, final int remotePort,
final boolean isAllowed) {
throwIfPre25Q2("addLocalNetAccess is not available on pre-B devices");
- final int ifIndex;
if (iface == null) {
- ifIndex = 0;
- } else {
+ Log.e(TAG, "Null iface, skip addLocalNetAccess for " + address);
+ return;
+ }
+ int ifIndex = mInterfaceTracker.getInterfaceIndex(iface);
+ if (ifIndex == 0) {
+ mInterfaceTracker.addInterface(iface);
ifIndex = mInterfaceTracker.getInterfaceIndex(iface);
}
if (ifIndex == 0) {