diff options
author | Luke Huang <huangluke@google.com> | 2018-11-20 11:38:23 +0800 |
---|---|---|
committer | Luke Huang <huangluke@google.com> | 2018-12-12 04:17:41 +0800 |
commit | c17821cc111a86574a0edacf9a78f38b5078c0b7 (patch) | |
tree | 4c58ee9bfb502a2d290c9a362bd9ae7a81c058b5 /native/android/net.c | |
parent | aff267369c2acd92ff0640637e17c2deef9142c4 (diff) |
Add asynchronous DNS query API
Adds support for asynchronous "raw" DNS API for clients.
API allows apps to use multinetworking capability correctly
and also allows other query types than A/AAAA.
Test: built, flashed, booted
cts test: NativeDnsAsyncTest
Change-Id: I4701b76bd8f0094ef1bdd7c5371b54387914a91b
Diffstat (limited to 'native/android/net.c')
-rw-r--r-- | native/android/net.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/native/android/net.c b/native/android/net.c index 60296a7bd00c..e32b7875b4e7 100644 --- a/native/android/net.c +++ b/native/android/net.c @@ -83,3 +83,31 @@ int android_getaddrinfofornetwork(net_handle_t network, return android_getaddrinfofornet(node, service, hints, netid, 0, res); } + +int android_res_nquery(net_handle_t network, + const char *dname, int ns_class, int ns_type) { + unsigned netid; + if (!getnetidfromhandle(network, &netid)) { + return -ENONET; + } + + return resNetworkQuery(netid, dname, ns_class, ns_type); +} + +int android_res_nresult(int fd, int *rcode, unsigned char *answer, int anslen) { + return resNetworkResult(fd, rcode, answer, anslen); +} + +int android_res_nsend(net_handle_t network, + const unsigned char *msg, int msglen) { + unsigned netid; + if (!getnetidfromhandle(network, &netid)) { + return -ENONET; + } + + return resNetworkSend(netid, msg, msglen); +} + +void android_res_cancel(int nsend_fd) { + resNetworkCancel(nsend_fd); +} |