Support adding/removing IPv4 and IPv6 addresses on interfaces

Bug: 30298058

(cherry picked from commit c296f098b63a986265ded8adf13118ba512a0fa7)

Change-Id: I4e40f4c0fe82696dc580d30e50e8c5b9fe17be88
diff --git a/server/InterfaceController.cpp b/server/InterfaceController.cpp
index cbc3611..4129c0f 100644
--- a/server/InterfaceController.cpp
+++ b/server/InterfaceController.cpp
@@ -23,6 +23,7 @@
 #include <android-base/stringprintf.h>
 #include <cutils/log.h>
 #include <logwrap/logwrap.h>
+#include <netutils/ifc.h>
 
 #include "InterfaceController.h"
 #include "RouteController.h"
@@ -192,6 +193,17 @@
     return writeValueToPath(sys_net_path, interface, "mtu", mtu);
 }
 
+
+int InterfaceController::addAddress(const char *interface,
+        const char *addrString, int prefixLength) {
+    return ifc_add_address(interface, addrString, prefixLength);
+}
+
+int InterfaceController::delAddress(const char *interface,
+        const char *addrString, int prefixLength) {
+    return ifc_del_address(interface, addrString, prefixLength);
+}
+
 void InterfaceController::setBaseReachableTimeMs(unsigned int millis) {
     std::string value(StringPrintf("%u", millis));
     setOnAllInterfaces(ipv4_neigh_conf_dir, "base_reachable_time_ms", value.c_str());