Clear incoming packet mark rules on netd startup.

Currently, we put the incoming packet mark rules directly into
the INPUT chain of the mangle table, which is not cleared on netd
start. Move these rules to their own chain. This makes them
consistent with all the other iptables rules and makes it easy to
clear them on startup using the existing mechanisms.

Bug: 28362720
Test: bullhead builds, boots
Test: netd_{unit,integration}_test pass
Test: watch -n1 "adb shell iptables -v -n -t mangle -L INPUT" while switching networks
Test: rules are cleared on netd restart
Change-Id: I9130f997a96dcfdfdfdd950520a76f8473b5f603
diff --git a/server/Controllers.cpp b/server/Controllers.cpp
index 1dccec8..84f719b 100644
--- a/server/Controllers.cpp
+++ b/server/Controllers.cpp
@@ -72,6 +72,11 @@
         NULL,
 };
 
+static const char* MANGLE_INPUT[] = {
+        RouteController::LOCAL_MANGLE_INPUT,
+        NULL,
+};
+
 static const char* MANGLE_FORWARD[] = {
         NatController::LOCAL_MANGLE_FORWARD,
         NULL,
@@ -141,6 +146,7 @@
     createChildChains(V4V6, "raw", "PREROUTING", RAW_PREROUTING, true);
     createChildChains(V4V6, "mangle", "POSTROUTING", MANGLE_POSTROUTING, false);
     createChildChains(V4V6, "mangle", "FORWARD", MANGLE_FORWARD, true);
+    createChildChains(V4V6, "mangle", "INPUT", MANGLE_INPUT, true);
     createChildChains(V4, "nat", "PREROUTING", NAT_PREROUTING, true);
     createChildChains(V4, "nat", "POSTROUTING", NAT_POSTROUTING, true);
     ALOGI("Creating child chains: %.1fms", s.getTimeAndReset());