OSDN Git Service

Add a command to clear a network's DNS servers.
authorLorenzo Colitti <lorenzo@google.com>
Sat, 29 Nov 2014 04:54:25 +0000 (13:54 +0900)
committerLorenzo Colitti <lorenzo@google.com>
Mon, 1 Dec 2014 02:47:11 +0000 (11:47 +0900)
Bug: 18327075
Change-Id: I0df13ff4a17ee65e640be96695a3af31b020963a

server/CommandListener.cpp
server/ResolverController.cpp
server/ResolverController.h

index f97ac57..b8bcf1a 100644 (file)
@@ -806,6 +806,14 @@ int CommandListener::ResolverCmd::runCommand(SocketClient *cli, int argc, char *
                     "Wrong number of arguments to resolver setnetdns", false);
             return 0;
         }
+    } else if (!strcmp(argv[1], "clearnetdns")) { // "resolver clearnetdns <netId>"
+        if (argc == 3) {
+            rc = sResolverCtrl->clearDnsServers(strtoul(argv[2], NULL, 0));
+        } else {
+            cli->sendMsg(ResponseCode::CommandSyntaxError,
+                    "Wrong number of arguments to resolver clearnetdns", false);
+            return 0;
+        }
     } else if (!strcmp(argv[1], "flushnet")) { // "resolver flushnet <netId>"
         if (argc == 3) {
             rc = sResolverCtrl->flushDnsCache(strtoul(argv[2], NULL, 0));
index a5d69ae..639423d 100644 (file)
@@ -38,6 +38,14 @@ int ResolverController::setDnsServers(unsigned netId, const char* domains,
     return 0;
 }
 
+int ResolverController::clearDnsServers(unsigned netId) {
+    _resolv_set_nameservers_for_net(netId, NULL, 0, "");
+    if (DBG) {
+        ALOGD("clearDnsServers netId = %u\n", netId);
+    }
+    return 0;
+}
+
 int ResolverController::flushDnsCache(unsigned netId) {
     if (DBG) {
         ALOGD("flushDnsCache netId = %u\n", netId);
index 0c245d7..39f002d 100644 (file)
@@ -27,6 +27,7 @@ public:
 
     int setDnsServers(unsigned netid, const char * domains, const char** servers,
             int numservers);
+    int clearDnsServers(unsigned netid);
     int flushDnsCache(unsigned netid);
     // TODO: Add deleteDnsCache(unsigned netId)
 };