netd: Accept NetId instead of interface name in DNS resolver commands.

Conflicts:
	DnsProxyListener.cpp
	NetworkController.cpp
	NetworkController.h

Change-Id: Ic82b73de6f50d39d56c5e1a32f5b1f3ebb80bb7d
diff --git a/SecondaryTableController.cpp b/SecondaryTableController.cpp
index dba2880..849a7ae 100644
--- a/SecondaryTableController.cpp
+++ b/SecondaryTableController.cpp
@@ -409,19 +409,28 @@
     return runCmd(ARRAY_SIZE(rule_cmd), rule_cmd);
 }
 
-int SecondaryTableController::addUidRule(const char *iface, int uid_start, int uid_end) {
-    return setUidRule(iface, uid_start, uid_end, true);
+int SecondaryTableController::addUidRule(const char *iface, int uid_start, int uid_end,
+        bool forward_dns) {
+    return setUidRule(iface, uid_start, uid_end, true, forward_dns);
 }
 
 int SecondaryTableController::removeUidRule(const char *iface, int uid_start, int uid_end) {
-    return setUidRule(iface, uid_start, uid_end, false);
+    return setUidRule(iface, uid_start, uid_end, false, false);
 }
 
-int SecondaryTableController::setUidRule(const char *iface, int uid_start, int uid_end, bool add) {
+int SecondaryTableController::setUidRule(const char *iface, int uid_start, int uid_end, bool add,
+        bool forward_dns) {
     unsigned netId = mNetCtrl->getNetworkId(iface);
-    if (!mNetCtrl->setNetworkForUidRange(uid_start, uid_end, add ? netId : 0, false)) {
-        errno = EINVAL;
-        return -1;
+    if (add) {
+        if (!mNetCtrl->setNetworkForUidRange(uid_start, uid_end, netId, forward_dns)) {
+            errno = EINVAL;
+            return -1;
+        }
+    } else {
+        if (!mNetCtrl->clearNetworkForUidRange(uid_start, uid_end, netId)) {
+            errno = EINVAL;
+            return -1;
+        }
     }
 
     char uid_str[24] = {0};
@@ -469,8 +478,7 @@
 }
 
 void SecondaryTableController::getUidMark(SocketClient *cli, int uid) {
-    unsigned netId = mNetCtrl->getNetwork(uid, NETID_UNSET, NetworkController::PID_UNSPECIFIED,
-            false);
+    unsigned netId = mNetCtrl->getNetwork(uid, NETID_UNSET, false);
     char mark_str[11];
     snprintf(mark_str, sizeof(mark_str), "%u", netId + BASE_TABLE_NUMBER);
     cli->sendMsg(ResponseCode::GetMarkResult, mark_str, false);