bionic: Replace iface with opaque netid in resolver.
Replace iface cache key with netid.
Replace _mark with netid.
Mark sockets used to test IPv4/IPv6 support as well as sockets
used to determine source address for rfc6724 sort.
Remove pid/uid mappings (functionality moved to system/netd).
Do not create resolv_cache when it does not exist, but rather only
when DNS configuration is supplied.
Clean up unused functions.
Change-Id: I9ccfda2902cc0943e87c9bc346ad9a2578accdab
diff --git a/libc/dns/resolv/res_send.c b/libc/dns/resolv/res_send.c
index 8e1f318..9b36f55 100644
--- a/libc/dns/resolv/res_send.c
+++ b/libc/dns/resolv/res_send.c
@@ -102,6 +102,7 @@
#include <fcntl.h>
#include <netdb.h>
#ifdef ANDROID_CHANGES
+#include "resolv_netid.h"
#include "resolv_private.h"
#else
#include <resolv.h>
@@ -388,8 +389,8 @@
terrno = ETIMEDOUT;
#if USE_RESOLV_CACHE
- // get the cache associated with the interface
- cache = __get_res_cache(statp->iface);
+ // get the cache associated with the network
+ cache = __get_res_cache(statp->netid);
if (cache != NULL) {
int anslen = 0;
cache_status = _resolv_cache_lookup(
@@ -399,9 +400,9 @@
if (cache_status == RESOLV_CACHE_FOUND) {
return anslen;
} else {
- // had a cache miss for a known interface, so populate the thread private
+ // had a cache miss for a known network, so populate the thread private
// data so the normal resolve path can do its thing
- _resolv_populate_res_for_iface(statp);
+ _resolv_populate_res_for_net(statp);
}
}
@@ -762,7 +763,7 @@
if (statp->_vcsock >= 0 && (statp->_flags & RES_F_VC) != 0) {
struct sockaddr_storage peer;
socklen_t size = sizeof peer;
- int old_mark;
+ unsigned old_mark;
int mark_size = sizeof(old_mark);
if (getpeername(statp->_vcsock,
(struct sockaddr *)(void *)&peer, &size) < 0 ||
@@ -798,7 +799,7 @@
return (-1);
}
}
- if (statp->_mark != 0) {
+ if (statp->_mark != MARK_UNSET) {
if (setsockopt(statp->_vcsock, SOL_SOCKET,
SO_MARK, &statp->_mark, sizeof(statp->_mark)) < 0) {
*terrno = errno;
@@ -1082,7 +1083,7 @@
}
}
- if (statp->_mark != 0) {
+ if (statp->_mark != MARK_UNSET) {
if (setsockopt(EXT(statp).nssocks[ns], SOL_SOCKET,
SO_MARK, &(statp->_mark), sizeof(statp->_mark)) < 0) {
res_nclose(statp);