Query libnetd_client for the appropriate netId for host resolution.
If libnetd_client can't be found, operate as before and use the default netId
potentially overriden by a more specific netId passed in to
android_get*fornet().
Change-Id: I42ef3293172651870fb46d2de22464c4f03e8e0b
diff --git a/libc/bionic/NetdClient.cpp b/libc/bionic/NetdClient.cpp
index 72d90b7..23f7c43 100644
--- a/libc/bionic/NetdClient.cpp
+++ b/libc/bionic/NetdClient.cpp
@@ -43,6 +43,8 @@
netdClientInitFunction(netdClientHandle, "netdClientInitAccept", &__netdClientDispatch.accept);
netdClientInitFunction(netdClientHandle, "netdClientInitConnect",
&__netdClientDispatch.connect);
+ netdClientInitFunction(netdClientHandle, "netdClientInitNetIdForResolv",
+ &__netdClientDispatch.netIdForResolv);
}
static pthread_once_t netdClientInitOnce = PTHREAD_ONCE_INIT;
diff --git a/libc/bionic/NetdClientDispatch.cpp b/libc/bionic/NetdClientDispatch.cpp
index adfe16d..62130a1 100644
--- a/libc/bionic/NetdClientDispatch.cpp
+++ b/libc/bionic/NetdClientDispatch.cpp
@@ -25,7 +25,12 @@
extern "C" __socketcall int __accept(int, sockaddr*, socklen_t*);
extern "C" __socketcall int __connect(int, const sockaddr*, socklen_t);
+static unsigned fallBackNetIdForResolv(unsigned netId) {
+ return netId;
+}
+
NetdClientDispatch __netdClientDispatch __attribute__((aligned(32))) = {
__accept,
__connect,
+ fallBackNetIdForResolv,
};