summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--native/android/libandroid.map.txt4
-rw-r--r--native/android/libandroid_net.map.txt9
-rw-r--r--native/android/net.c28
3 files changed, 39 insertions, 2 deletions
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index ac5ded60bf6b..f840d5e2f968 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -218,6 +218,10 @@ LIBANDROID {
android_getaddrinfofornetwork; # introduced=23
android_setprocnetwork; # introduced=23
android_setsocknetwork; # introduced=23
+ android_res_cancel; # introduced=29
+ android_res_nquery; # introduced=29
+ android_res_nresult; # introduced=29
+ android_res_nsend; # introduced=29
local:
*;
};
diff --git a/native/android/libandroid_net.map.txt b/native/android/libandroid_net.map.txt
index 9b5a5a1f4b52..be3531da462d 100644
--- a/native/android/libandroid_net.map.txt
+++ b/native/android/libandroid_net.map.txt
@@ -1,10 +1,15 @@
-# These functions have been part of the NDK since API 24.
# They are also all available to vendor code.
LIBANDROID_NET {
global:
+ # These functions have been part of the NDK since API 24.
+ android_getaddrinfofornetwork; # vndk
android_setsocknetwork; # vndk
android_setprocnetwork; # vndk
- android_getaddrinfofornetwork; # vndk
+ # These functions have been part of the NDK since API 29.
+ android_res_cancel; # vndk
+ android_res_nquery; # vndk
+ android_res_nresult; # vndk
+ android_res_nsend; # vndk
local:
*;
};
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);
+}