ClatCoordinator: replace BpfMap with IBpfMap

Test: atest ClatCoordinatorTest
Change-Id: I3d046d4f195be6bbedc15df08114fafb2b77c2d3
diff --git a/service/src/com/android/server/connectivity/ClatCoordinator.java b/service/src/com/android/server/connectivity/ClatCoordinator.java
index 33494d4..3b0b3fd 100644
--- a/service/src/com/android/server/connectivity/ClatCoordinator.java
+++ b/service/src/com/android/server/connectivity/ClatCoordinator.java
@@ -39,6 +39,7 @@
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.modules.utils.build.SdkLevel;
 import com.android.net.module.util.BpfMap;
+import com.android.net.module.util.IBpfMap;
 import com.android.net.module.util.InterfaceParams;
 import com.android.net.module.util.TcUtils;
 import com.android.net.module.util.bpf.ClatEgress4Key;
@@ -115,12 +116,12 @@
     private final INetd mNetd;
     @NonNull
     private final Dependencies mDeps;
-    // BpfMap objects {mIngressMap, mEgressMap} are initialized in #maybeStartBpf and closed in
+    // IBpfMap objects {mIngressMap, mEgressMap} are initialized in #maybeStartBpf and closed in
     // #maybeStopBpf.
     @Nullable
-    private BpfMap<ClatIngress6Key, ClatIngress6Value> mIngressMap = null;
+    private IBpfMap<ClatIngress6Key, ClatIngress6Value> mIngressMap = null;
     @Nullable
-    private BpfMap<ClatEgress4Key, ClatEgress4Value> mEgressMap = null;
+    private IBpfMap<ClatEgress4Key, ClatEgress4Value> mEgressMap = null;
     @Nullable
     private ClatdTracker mClatdTracker = null;
 
@@ -248,7 +249,7 @@
 
         /** Get ingress6 BPF map. */
         @Nullable
-        public BpfMap<ClatIngress6Key, ClatIngress6Value> getBpfIngress6Map() {
+        public IBpfMap<ClatIngress6Key, ClatIngress6Value> getBpfIngress6Map() {
             // Pre-T devices don't use ClatCoordinator to access clat map. Since Nat464Xlat
             // initializes a ClatCoordinator object to avoid redundant null pointer check
             // while using, ignore the BPF map initialization on pre-T devices.
@@ -265,7 +266,7 @@
 
         /** Get egress4 BPF map. */
         @Nullable
-        public BpfMap<ClatEgress4Key, ClatEgress4Value> getBpfEgress4Map() {
+        public IBpfMap<ClatEgress4Key, ClatEgress4Value> getBpfEgress4Map() {
             // Pre-T devices don't use ClatCoordinator to access clat map. Since Nat464Xlat
             // initializes a ClatCoordinator object to avoid redundant null pointer check
             // while using, ignore the BPF map initialization on pre-T devices.
@@ -379,7 +380,7 @@
     private void closeEgressMap() {
         try {
             mEgressMap.close();
-        } catch (ErrnoException e) {
+        } catch (Exception e) {
             Log.e(TAG, "Cannot close egress4 map: " + e);
         }
         mEgressMap = null;
@@ -388,7 +389,7 @@
     private void closeIngressMap() {
         try {
             mIngressMap.close();
-        } catch (ErrnoException e) {
+        } catch (Exception e) {
             Log.e(TAG, "Cannot close ingress6 map: " + e);
         }
         mIngressMap = null;
diff --git a/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java b/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java
index de5698f..a1eeaf4 100644
--- a/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java
+++ b/tests/unit/java/com/android/server/connectivity/ClatCoordinatorTest.java
@@ -46,7 +46,7 @@
 
 import androidx.test.filters.SmallTest;
 
-import com.android.net.module.util.BpfMap;
+import com.android.net.module.util.IBpfMap;
 import com.android.net.module.util.bpf.ClatEgress4Key;
 import com.android.net.module.util.bpf.ClatEgress4Value;
 import com.android.net.module.util.bpf.ClatIngress6Key;
@@ -123,8 +123,8 @@
 
     @Mock private INetd mNetd;
     @Spy private TestDependencies mDeps = new TestDependencies();
-    @Mock private BpfMap<ClatIngress6Key, ClatIngress6Value> mIngressMap;
-    @Mock private BpfMap<ClatEgress4Key, ClatEgress4Value> mEgressMap;
+    @Mock private IBpfMap<ClatIngress6Key, ClatIngress6Value> mIngressMap;
+    @Mock private IBpfMap<ClatEgress4Key, ClatEgress4Value> mEgressMap;
 
     /**
       * The dependency injection class is used to mock the JNI functions and system functions
@@ -326,13 +326,13 @@
 
         /** Get ingress6 BPF map. */
         @Override
-        public BpfMap<ClatIngress6Key, ClatIngress6Value> getBpfIngress6Map() {
+        public IBpfMap<ClatIngress6Key, ClatIngress6Value> getBpfIngress6Map() {
             return mIngressMap;
         }
 
         /** Get egress4 BPF map. */
         @Override
-        public BpfMap<ClatEgress4Key, ClatEgress4Value> getBpfEgress4Map() {
+        public IBpfMap<ClatEgress4Key, ClatEgress4Value> getBpfEgress4Map() {
             return mEgressMap;
         }