Move all init code to iptables-restore.

This gets rid of one of the last few uses of iptables, and also
reduces startup time from ~750ms to ~150ms.

Bug: 28362720
Test: bullhead builds,boots
Test: netd_{unit,integration}_test pass
Test: rules after "killall netd" look identical
Change-Id: Idf4d8dbc1292cb0017d4546976ad645a4ac7fa08
diff --git a/server/Controllers.h b/server/Controllers.h
index 0754932..53854cf 100644
--- a/server/Controllers.h
+++ b/server/Controllers.h
@@ -63,10 +63,13 @@
     friend class ControllersTest;
     void initIptablesRules();
     static void initChildChains();
+    static std::set<std::string> findExistingChildChains(const IptablesTarget target,
+                                                         const char* table,
+                                                         const char* parentChain);
     static void createChildChains(IptablesTarget target, const char* table, const char* parentChain,
-                                  const char** childChains, bool exclusive);
-    static int (*execIptablesSilently)(IptablesTarget target, ...);
+                                  const std::vector<const char*>& childChains, bool exclusive);
     static int (*execIptablesRestore)(IptablesTarget, const std::string&);
+    static int (*execIptablesRestoreWithOutput)(IptablesTarget, const std::string&, std::string *);
 };
 
 extern Controllers* gCtls;