Allow tethering to use IpNeighborMonitor.

Test: m
Change-Id: I4ca0c47d62ea90c30f88278b3ebf766be2c5a2e9
diff --git a/common/moduleutils/Android.bp b/common/moduleutils/Android.bp
index 4b2a4b8..d0dd584 100644
--- a/common/moduleutils/Android.bp
+++ b/common/moduleutils/Android.bp
@@ -51,10 +51,14 @@
     name: "tethering-module-utils-srcs",
     srcs: [
         "src/android/net/ip/InterfaceController.java",
+        "src/android/net/ip/IpNeighborMonitor.java",
         "src/android/net/netlink/*.java",
         "src/android/net/shared/NetdUtils.java",
         "src/android/net/shared/RouteUtils.java",
+        "src/android/net/util/FdEventsReader.java",
         "src/android/net/util/InterfaceParams.java",
+        "src/android/net/util/PacketReader.java",
         "src/android/net/util/SharedLog.java"
     ],
+    visibility: ["//frameworks/base/packages/Tethering"],
 }
diff --git a/src/android/net/ip/IpNeighborMonitor.java b/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java
similarity index 95%
rename from src/android/net/ip/IpNeighborMonitor.java
rename to common/moduleutils/src/android/net/ip/IpNeighborMonitor.java
index 803f2e6..d6706d4 100644
--- a/src/android/net/ip/IpNeighborMonitor.java
+++ b/common/moduleutils/src/android/net/ip/IpNeighborMonitor.java
@@ -31,9 +31,9 @@
 import android.net.netlink.NetlinkSocket;
 import android.net.netlink.RtNetlinkNeighborMessage;
 import android.net.netlink.StructNdMsg;
-import android.net.util.NetworkStackUtils;
 import android.net.util.PacketReader;
 import android.net.util.SharedLog;
+import android.net.util.SocketUtils;
 import android.os.Handler;
 import android.os.SystemClock;
 import android.system.ErrnoException;
@@ -42,6 +42,7 @@
 import android.util.Log;
 
 import java.io.FileDescriptor;
+import java.io.IOException;
 import java.net.InetAddress;
 import java.net.SocketAddress;
 import java.net.SocketException;
@@ -128,6 +129,14 @@
         }
     }
 
+    // TODO: move NetworkStackUtils.closeSocketQuietly to somewhere accessible to this file.
+    private void closeSocketQuietly(FileDescriptor fd) {
+        try {
+            SocketUtils.closeSocket(fd);
+        } catch (IOException ignored) {
+        }
+    }
+
     public interface NeighborEventConsumer {
         // Every neighbor event received on the netlink socket is passed in
         // here. Subclasses should filter for events of interest.
@@ -158,7 +167,7 @@
             }
         } catch (ErrnoException|SocketException e) {
             logError("Failed to create rtnetlink socket", e);
-            NetworkStackUtils.closeSocketQuietly(fd);
+            closeSocketQuietly(fd);
             return null;
         }
 
diff --git a/src/android/net/util/FdEventsReader.java b/common/moduleutils/src/android/net/util/FdEventsReader.java
similarity index 100%
rename from src/android/net/util/FdEventsReader.java
rename to common/moduleutils/src/android/net/util/FdEventsReader.java
diff --git a/src/android/net/util/PacketReader.java b/common/moduleutils/src/android/net/util/PacketReader.java
similarity index 100%
rename from src/android/net/util/PacketReader.java
rename to common/moduleutils/src/android/net/util/PacketReader.java