Add a command to clear a network's DNS servers.
Bug: 18327075
Change-Id: I0df13ff4a17ee65e640be96695a3af31b020963a
diff --git a/server/CommandListener.cpp b/server/CommandListener.cpp
index f97ac57..b8bcf1a 100644
--- a/server/CommandListener.cpp
+++ b/server/CommandListener.cpp
@@ -806,6 +806,14 @@
"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));
diff --git a/server/ResolverController.cpp b/server/ResolverController.cpp
index a5d69ae..639423d 100644
--- a/server/ResolverController.cpp
+++ b/server/ResolverController.cpp
@@ -38,6 +38,14 @@
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);
diff --git a/server/ResolverController.h b/server/ResolverController.h
index 0c245d7..39f002d 100644
--- a/server/ResolverController.h
+++ b/server/ResolverController.h
@@ -27,6 +27,7 @@
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)
};