Pass rule modification errors back to CommandListener.
Change-Id: If01334dccad8b6230648713a57fd58be180ac66b
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index de433b7..af95c1e 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -197,71 +197,70 @@
return true;
}
-bool NetworkController::addInterfaceToNetwork(unsigned netId, const char* interface) {
+int NetworkController::addInterfaceToNetwork(unsigned netId, const char* interface) {
if (!isValidNetwork(netId) || !interface) {
ALOGE("invalid netId %u or interface null", netId);
- errno = EINVAL;
- return false;
+ return -EINVAL;
}
unsigned existingNetId = getNetworkId(interface);
if (existingNetId != NETID_UNSET) {
ALOGE("interface %s already assigned to netId %u", interface, existingNetId);
- errno = EBUSY;
- return false;
+ return -EBUSY;
}
+ int ret;
Permission permission = mPermissionsController->getPermissionForNetwork(netId);
- if (!mRouteController->addInterfaceToNetwork(netId, interface, permission)) {
+ if ((ret = mRouteController->addInterfaceToNetwork(netId, interface, permission)) != 0) {
ALOGE("failed to add interface %s to netId %u", interface, netId);
- return false;
+ return ret;
}
mNetIdToInterfaces.insert(std::pair<unsigned, std::string>(netId, interface));
if (netId == getDefaultNetwork() &&
- !mRouteController->addToDefaultNetwork(interface, permission)) {
+ (ret = mRouteController->addToDefaultNetwork(interface, permission)) != 0) {
ALOGE("failed to add interface %s to default netId %u", interface, netId);
- return false;
+ return ret;
}
- return true;
+ return 0;
}
-bool NetworkController::removeInterfaceFromNetwork(unsigned netId, const char* interface) {
+int NetworkController::removeInterfaceFromNetwork(unsigned netId, const char* interface) {
if (!isValidNetwork(netId) || !interface) {
ALOGE("invalid netId %u or interface null", netId);
- errno = EINVAL;
- return false;
+ return -EINVAL;
}
- bool status = false;
+ int ret = -ENOENT;
InterfaceRange range = mNetIdToInterfaces.equal_range(netId);
for (InterfaceIterator iter = range.first; iter != range.second; ++iter) {
if (iter->second == interface) {
mNetIdToInterfaces.erase(iter);
- status = true;
+ ret = 0;
break;
}
}
- if (!status) {
+
+ if (ret) {
ALOGE("interface %s not assigned to netId %u", interface, netId);
- errno = ENOENT;
+ return ret;
}
Permission permission = mPermissionsController->getPermissionForNetwork(netId);
if (netId == getDefaultNetwork() &&
- !mRouteController->removeFromDefaultNetwork(interface, permission)) {
+ (ret = mRouteController->removeFromDefaultNetwork(interface, permission)) != 0) {
ALOGE("failed to remove interface %s from default netId %u", interface, netId);
- status = false;
+ return ret;
}
- if (!mRouteController->removeInterfaceFromNetwork(netId, interface, permission)) {
+ if ((ret = mRouteController->removeInterfaceFromNetwork(netId, interface, permission)) != 0) {
ALOGE("failed to remove interface %s from netId %u", interface, netId);
- status = false;
+ return ret;
}
- return status;
+ return 0;
}
bool NetworkController::destroyNetwork(unsigned netId) {
@@ -301,24 +300,19 @@
return status;
}
-bool NetworkController::setPermissionForUser(Permission permission,
+void NetworkController::setPermissionForUser(Permission permission,
const std::vector<unsigned>& uid) {
for (size_t i = 0; i < uid.size(); ++i) {
mPermissionsController->setPermissionForUser(permission, uid[i]);
}
- return true;
}
-bool NetworkController::setPermissionForNetwork(Permission newPermission,
- const std::vector<unsigned>& netId) {
- bool status = true;
-
+int NetworkController::setPermissionForNetwork(Permission newPermission,
+ const std::vector<unsigned>& netId) {
for (size_t i = 0; i < netId.size(); ++i) {
if (!isValidNetwork(netId[i])) {
ALOGE("invalid netId %u", netId[i]);
- errno = EINVAL;
- status = false;
- continue;
+ return -EINVAL;
}
Permission oldPermission = mPermissionsController->getPermissionForNetwork(netId[i]);
@@ -331,18 +325,19 @@
InterfaceRange range = mNetIdToInterfaces.equal_range(netId[i]);
for (InterfaceIteratorConst iter = range.first; iter != range.second; ++iter) {
- if (!mRouteController->modifyNetworkPermission(netId[i], iter->second.c_str(),
- oldPermission, newPermission)) {
+ int ret = mRouteController->modifyNetworkPermission(netId[i], iter->second.c_str(),
+ oldPermission, newPermission);
+ if (ret) {
ALOGE("failed to change permission on interface %s of netId %u from %x to %x",
iter->second.c_str(), netId[i], oldPermission, newPermission);
- status = false;
+ return ret;
}
}
mPermissionsController->setPermissionForNetwork(newPermission, netId[i]);
}
- return status;
+ return 0;
}
int NetworkController::addRoute(unsigned netId, const char* interface, const char* destination,