netd: Replace iface with opaque netid in resolver.
Also ensure that UID mapping (for VPN) cannot be overridden by
android_getaddrinfofornet or per-PID preference.
Change-Id: I9ccfda2902cc0943e87c9bc346ad9a2578accdab
diff --git a/ResolverController.cpp b/ResolverController.cpp
index e61fae7..db00da6 100644
--- a/ResolverController.cpp
+++ b/ResolverController.cpp
@@ -21,105 +21,30 @@
#include <net/if.h>
-// NOTE: <resolv_iface.h> is a private C library header that provides
-// declarations for _resolv_set_default_iface() and others.
-#include <resolv_iface.h>
+// NOTE: <resolv_netid.h> is a private C library header that provides
+// declarations for _resolv_set_nameservers_for_net and
+// _resolv_flush_cache_for_net
+#include <resolv_netid.h>
#include "ResolverController.h"
-int ResolverController::setDefaultInterface(const char* iface) {
- if (DBG) {
- ALOGD("setDefaultInterface iface = %s\n", iface);
- }
-
- _resolv_set_default_iface(iface);
-
- return 0;
-}
-
-int ResolverController::setInterfaceDnsServers(const char* iface, const char* domains,
+int ResolverController::setDnsServers(unsigned netId, const char* domains,
const char** servers, int numservers) {
if (DBG) {
- ALOGD("setInterfaceDnsServers iface = %s\n", iface);
+ ALOGD("setDnsServers netId = %u\n", netId);
}
- _resolv_set_nameservers_for_iface(iface, servers, numservers, domains);
+ _resolv_set_nameservers_for_net(netId, servers, numservers, domains);
return 0;
}
-int ResolverController::setInterfaceAddress(const char* iface, struct in_addr* addr) {
+int ResolverController::flushDnsCache(unsigned netId) {
if (DBG) {
- ALOGD("setInterfaceAddress iface = %s\n", iface);
+ ALOGD("flushDnsCache netId = %u\n", netId);
}
- _resolv_set_addr_of_iface(iface, addr);
+ _resolv_flush_cache_for_net(netId);
return 0;
}
-int ResolverController::flushDefaultDnsCache() {
- if (DBG) {
- ALOGD("flushDefaultDnsCache\n");
- }
-
- _resolv_flush_cache_for_default_iface();
-
- return 0;
-}
-
-int ResolverController::flushInterfaceDnsCache(const char* iface) {
- if (DBG) {
- ALOGD("flushInterfaceDnsCache iface = %s\n", iface);
- }
-
- _resolv_flush_cache_for_iface(iface);
-
- return 0;
-}
-
-int ResolverController::setDnsInterfaceForPid(const char* iface, int pid) {
- if (DBG) {
- ALOGD("setDnsIfaceForPid iface = %s, pid = %d\n", iface, pid);
- }
-
- _resolv_set_iface_for_pid(iface, pid);
-
- return 0;
-}
-
-int ResolverController::clearDnsInterfaceForPid(int pid) {
- if (DBG) {
- ALOGD("clearDnsIfaceForPid pid = %d\n", pid);
- }
-
- _resolv_clear_iface_for_pid(pid);
-
- return 0;
-}
-
-int ResolverController::setDnsInterfaceForUidRange(const char* iface, int uid_start, int uid_end) {
- if (DBG) {
- ALOGD("setDnsIfaceForUidRange iface = %s, range = [%d,%d]\n", iface, uid_start, uid_end);
- }
-
- return _resolv_set_iface_for_uid_range(iface, uid_start, uid_end);
-}
-
-int ResolverController::clearDnsInterfaceForUidRange(int uid_start, int uid_end) {
- if (DBG) {
- ALOGD("clearDnsIfaceForUidRange range = [%d,%d]\n", uid_start, uid_end);
- }
-
- return _resolv_clear_iface_for_uid_range(uid_start, uid_end);
-}
-
-int ResolverController::clearDnsInterfaceMappings()
-{
- if (DBG) {
- ALOGD("clearInterfaceMappings\n");
- }
- _resolv_clear_iface_uid_range_mapping();
- _resolv_clear_iface_pid_mapping();
-
- return 0;
-}