Add resolv_res_nsend
Add public function resolv_res_nsend which would call res_nsend directly.
This function will be used by DNS-Async API.
Test: built, flashed, booted
Change-Id: I81cead2ea00e7e6f738fc0b3eef12a036a10fc7c
diff --git a/resolv/include/netd_resolv/resolv.h b/resolv/include/netd_resolv/resolv.h
index 981340a..134725a 100644
--- a/resolv/include/netd_resolv/resolv.h
+++ b/resolv/include/netd_resolv/resolv.h
@@ -110,6 +110,11 @@
const addrinfo*,
const android_net_context*, addrinfo**);
+// Query dns with raw msg
+// TODO: Add a way to control query parameter, like flags, or maybe res_options or even res_state.
+LIBNETD_RESOLV_PUBLIC int resolv_res_nsend(const android_net_context* netContext, const u_char* msg,
+ int msgLen, u_char* ans, int ansLen, int* rcode);
+
// Set name servers for a network
LIBNETD_RESOLV_PUBLIC int resolv_set_nameservers_for_net(unsigned netid, const char** servers,
unsigned numservers, const char* domains,
diff --git a/resolv/libnetd_resolv.map.txt b/resolv/libnetd_resolv.map.txt
index e139ab7..aa28e10 100644
--- a/resolv/libnetd_resolv.map.txt
+++ b/resolv/libnetd_resolv.map.txt
@@ -27,11 +27,12 @@
android_net_res_stats_get_info_for_net;
android_net_res_stats_get_usable_servers;
resolv_delete_cache_for_net;
- resolv_set_nameservers_for_net;
- resolv_set_private_dns_for_net;
resolv_delete_private_dns_for_net;
resolv_get_private_dns_status_for_net;
resolv_register_private_dns_callback;
+ resolv_res_nsend;
+ resolv_set_nameservers_for_net;
+ resolv_set_private_dns_for_net;
local:
*;
};
diff --git a/resolv/res_send.cpp b/resolv/res_send.cpp
index ed0b85f..c9ed708 100644
--- a/resolv/res_send.cpp
+++ b/resolv/res_send.cpp
@@ -1293,3 +1293,12 @@
}
}
}
+
+int resolv_res_nsend(const android_net_context* netContext, const u_char* msg, int msgLen,
+ u_char* ans, int ansLen, int* rcode) {
+ res_state res = res_get_state();
+ res_setnetcontext(res, netContext);
+ _resolv_populate_res_for_net(res);
+ *rcode = NOERROR;
+ return res_nsend(res, msg, msgLen, ans, ansLen, rcode);
+}