summaryrefslogtreecommitdiffstats
path: root/dns64.c
diff options
context:
space:
mode:
authorPaul Jensen <pauljensen@google.com>2014-05-30 13:19:10 -0400
committerLorenzo Colitti <lorenzo@google.com>2014-06-13 11:47:35 +0900
commit247dd7199b4e89c6a974794056b468bfac5f0e51 (patch)
tree53efe2a41e590496c9414436f602165bf86d96a0 /dns64.c
parente64eccb68b8101d8fa2effb826e185db7f82dba9 (diff)
downloadandroid_external_android-clat-247dd7199b4e89c6a974794056b468bfac5f0e51.tar.gz
android_external_android-clat-247dd7199b4e89c6a974794056b468bfac5f0e51.tar.bz2
android_external_android-clat-247dd7199b4e89c6a974794056b468bfac5f0e51.zip
Make DNS request for plat prefix detection network specific.
When plat prefix detection is done on a non-default network it must use the network specific version of getaddrinfo() so the plat prefix corresponds to the particular network. The network is specified to clatd via a NetID command line argument. (cherry picked from commit a1c871c8efad6c0b69e27d3b85e82a27e282b8be) Change-Id: I270c5afc4b445cf20e95fd3e58eada6bc24b16ef
Diffstat (limited to 'dns64.c')
-rw-r--r--dns64.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/dns64.c b/dns64.c
index b139fe4..ce8539d 100644
--- a/dns64.c
+++ b/dns64.c
@@ -27,13 +27,15 @@
#include "dns64.h"
#include "logging.h"
+#include "resolv_netid.h"
/* function: plat_prefix
* looks up an ipv4-only hostname and looks for a nat64 /96 prefix, returns 1 on success, 0 on temporary failure, -1 on permanent failure
- * ipv4_name - name to lookup
- * prefix - the plat /96 prefix
+ * ipv4_name - name to lookup
+ * net_id - (optional) netId to use, NETID_UNSET indicates use of default network
+ * prefix - the plat /96 prefix
*/
-int plat_prefix(const char *ipv4_name, struct in6_addr *prefix) {
+int plat_prefix(const char *ipv4_name, unsigned net_id, struct in6_addr *prefix) {
struct addrinfo hints, *result, *p;
int status, plat_addr_set, ipv4_records, ipv6_records;
struct in6_addr plat_addr, this_plat_addr;
@@ -48,7 +50,7 @@ int plat_prefix(const char *ipv4_name, struct in6_addr *prefix) {
bzero(&hints, sizeof(hints));
hints.ai_family = AF_UNSPEC;
- status = getaddrinfo(ipv4_name, NULL, &hints, &result);
+ status = android_getaddrinfofornet(ipv4_name, NULL, &hints, net_id, MARK_UNSET, &result);
if(status != 0) {
logmsg(ANDROID_LOG_ERROR,"plat_prefix/dns(%s) status = %d/%s\n", ipv4_name, status, gai_strerror(status));
return 0;