Add initial dump() method to NetdNativeService

This is called by "dumpsys netd".

Bug: 27239233
Change-Id: I27fb308f8067243ff241a6f8fd6a83f406087d2a
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index 7890fd2..8ae0324 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -32,18 +32,20 @@
 
 #include "NetworkController.h"
 
+#define LOG_TAG "Netd"
+#include "log/log.h"
+
+#include "cutils/misc.h"
+#include "resolv_netid.h"
+
 #include "DummyNetwork.h"
+#include "DumpWriter.h"
 #include "Fwmark.h"
 #include "LocalNetwork.h"
 #include "PhysicalNetwork.h"
 #include "RouteController.h"
 #include "VirtualNetwork.h"
 
-#include "cutils/misc.h"
-#define LOG_TAG "Netd"
-#include "log/log.h"
-#include "resolv_netid.h"
-
 namespace {
 
 // Keep these in sync with ConnectivityService.java.
@@ -508,6 +510,28 @@
     }
 }
 
+void NetworkController::dump(DumpWriter& dw) {
+    android::RWLock::AutoRLock lock(mRWLock);
+
+    dw.incIndent();
+    dw.println("NetworkController");
+
+    dw.incIndent();
+    dw.println("Default network: %u", mDefaultNetId);
+
+    dw.blankline();
+    dw.println("Networks:");
+    dw.incIndent();
+    for (const auto& i : mNetworks) {
+        dw.println(i.second->toString().c_str());
+    }
+    dw.decIndent();
+
+    dw.decIndent();
+
+    dw.decIndent();
+}
+
 bool NetworkController::isValidNetwork(unsigned netId) const {
     android::RWLock::AutoRLock lock(mRWLock);
     return getNetworkLocked(netId);