Merge \\"[net mgmt svc] add method to retrieve INetd reference\\" into nyc-mr1-dev am: 58ef88927d
am: e62b36bb33

Change-Id: Icf35de6a5a0dcc356cce4cf5d183aed647f35cc6
diff --git a/Android.mk b/Android.mk
index 6c23f89..be32a74 100644
--- a/Android.mk
+++ b/Android.mk
@@ -468,6 +468,9 @@
 	../../system/update_engine/binder_bindings/android/os/IUpdateEngine.aidl \
 	../../system/update_engine/binder_bindings/android/os/IUpdateEngineCallback.aidl \
 
+LOCAL_SRC_FILES +=  \
+	../../system/netd/server/binder/android/net/INetd.aidl \
+
 LOCAL_AIDL_INCLUDES += system/update_engine/binder_bindings
 
 # FRAMEWORKS_BASE_JAVA_SRC_DIRS comes from build/core/pathmap.mk
diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl
index 27fb7bd..013e77f 100644
--- a/core/java/android/os/INetworkManagementService.aidl
+++ b/core/java/android/os/INetworkManagementService.aidl
@@ -18,6 +18,7 @@
 package android.os;
 
 import android.net.InterfaceConfiguration;
+import android.net.INetd;
 import android.net.INetworkManagementEventObserver;
 import android.net.Network;
 import android.net.NetworkStats;
@@ -36,7 +37,7 @@
      **/
 
     /**
-     * Register an observer to receive events
+     * Register an observer to receive events.
      */
     void registerObserver(INetworkManagementEventObserver obs);
 
@@ -46,6 +47,11 @@
     void unregisterObserver(INetworkManagementEventObserver obs);
 
     /**
+     * Retrieve an INetd to talk to netd.
+     */
+    INetd getNetdService();
+
+    /**
      * Returns a list of currently known network interfaces
      */
     String[] listInterfaces();
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index ba44cde..114aa9c 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -971,6 +971,17 @@
     //
     // INetworkManagementService members
     //
+    @Override
+    public INetd getNetdService() throws RemoteException {
+        final CountDownLatch connectedSignal = mConnectedSignal;
+        if (connectedSignal != null) {
+            try {
+                connectedSignal.await();
+            } catch (InterruptedException ignored) {}
+        }
+
+        return mNetdService;
+    }
 
     @Override
     public String[] listInterfaces() {