Prototype of traffic controller

This is the prototype of the traffic controller service in netd module.
It start when netd controller service start and load eBPF maps and
programs to the kernel. Then it will attach the eBPF program to
corresponding cgroup to account the data usage information. During run
time, it is responsible for update socket tagging information with the
kernel, read the stats data for userspace usage, and garbage collect the
redundent map entries.

Test: bpf program attached to cgroup
Bug: 30950746
Change-Id: Ia7916a99a457fcff910725994a93a889ec6dd6be
diff --git a/server/Controllers.cpp b/server/Controllers.cpp
index e8918a9..4231a53 100644
--- a/server/Controllers.cpp
+++ b/server/Controllers.cpp
@@ -260,12 +260,16 @@
 
 void Controllers::init() {
     initIptablesRules();
-
+    int ret = trafficCtrl.start();
+    if (ret) {
+        ALOGE("failed to start trafficcontroller: (%s)", strerror(-ret));
+    }
     Stopwatch s;
     bandwidthCtrl.enableBandwidthControl(false);
     ALOGI("Disabling bandwidth control: %.1fms", s.getTimeAndReset());
 
-    if (int ret = RouteController::Init(NetworkController::LOCAL_NET_ID)) {
+    ret = RouteController::Init(NetworkController::LOCAL_NET_ID);
+    if (ret) {
         ALOGE("failed to initialize RouteController (%s)", strerror(-ret));
     }
     ALOGI("Initializing RouteController: %.1fms", s.getTimeAndReset());