Support adding/removing IPv4 and IPv6 addresses on interfaces
Bug: 30298058
(cherry picked from commit c296f098b63a986265ded8adf13118ba512a0fa7)
Change-Id: I4e40f4c0fe82696dc580d30e50e8c5b9fe17be88
diff --git a/server/NetdNativeService.cpp b/server/NetdNativeService.cpp
index 5e5b8fd..8dc4d93 100644
--- a/server/NetdNativeService.cpp
+++ b/server/NetdNativeService.cpp
@@ -209,5 +209,31 @@
return binder::Status::ok();
}
+binder::Status NetdNativeService::interfaceAddAddress(const std::string &ifName,
+ const std::string &addrString, int prefixLength) {
+ ENFORCE_PERMISSION(CONNECTIVITY_INTERNAL);
+
+ const int err = InterfaceController::addAddress(
+ ifName.c_str(), addrString.c_str(), prefixLength);
+ if (err != 0) {
+ return binder::Status::fromServiceSpecificError(-err,
+ String8::format("InterfaceController error: %s", strerror(-err)));
+ }
+ return binder::Status::ok();
+}
+
+binder::Status NetdNativeService::interfaceDelAddress(const std::string &ifName,
+ const std::string &addrString, int prefixLength) {
+ ENFORCE_PERMISSION(CONNECTIVITY_INTERNAL);
+
+ const int err = InterfaceController::delAddress(
+ ifName.c_str(), addrString.c_str(), prefixLength);
+ if (err != 0) {
+ return binder::Status::fromServiceSpecificError(-err,
+ String8::format("InterfaceController error: %s", strerror(-err)));
+ }
+ return binder::Status::ok();
+}
+
} // namespace net
} // namespace android