From 340ef046a6b7e10b112e387f453bc78348c04745 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 28 Jun 2004 01:30:07 +0000 Subject: Update. 2004-06-27 Ulrich Drepper * resolv/resolv.h (RES_NOIP6DOTINT): Define. * resolv/res_init.c (res_setoptions): Handle no-ip6-dotint option. * resolv/gethnamaddr.c (gethostbyaddr): Don't lookup with .ip6.int if RES_NOIP6DOTINT flag is set. * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise. --- resolv/gethnamaddr.c | 2 +- resolv/nss_dns/dns-host.c | 2 +- resolv/res_init.c | 3 +++ resolv/resolv.h | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) (limited to 'resolv') diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c index 2172375867..c93ca51c88 100644 --- a/resolv/gethnamaddr.c +++ b/resolv/gethnamaddr.c @@ -720,7 +720,7 @@ gethostbyaddr(addr, len, af) n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, 1024, &buf.ptr); - if (n < 0 && af == AF_INET6) { + if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) { strcpy(qp, "ip6.int"); n = __libc_res_nquery(&_res, qbuf, C_IN, T_PTR, buf.buf->buf, buf.buf != orig_buf ? MAXPACKET : 1024, diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index ab6cc792b8..0424cb9e2a 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -337,7 +337,7 @@ _nss_dns_gethostbyaddr_r (const void *addr, socklen_t len, int af, n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, 1024, &host_buffer.ptr); - if (n < 0 && af == AF_INET6) + if (n < 0 && af == AF_INET6 && (_res.options & RES_NOIP6DOTINT) == 0) { strcpy (qp, "ip6.int"); n = __libc_res_nquery (&_res, qbuf, C_IN, T_PTR, host_buffer.buf->buf, diff --git a/resolv/res_init.c b/resolv/res_init.c index cbab7cada5..d0559c3821 100644 --- a/resolv/res_init.c +++ b/resolv/res_init.c @@ -492,6 +492,9 @@ res_setoptions(res_state statp, const char *options, const char *source) { } else if (!strncmp(cp, "ip6-bytestring", sizeof("ip6-bytestring") - 1)) { statp->options |= RES_USEBSTRING; + } else if (!strncmp(cp, "no-ip6-dotint", + sizeof("no-ip6-dotint") - 1)) { + statp->options |= RES_NOIP6DOTINT; } else if (!strncmp(cp, "rotate", sizeof("rotate") - 1)) { statp->options |= RES_ROTATE; } else if (!strncmp(cp, "no-check-names", diff --git a/resolv/resolv.h b/resolv/resolv.h index 8d37d420e0..010d7dd897 100644 --- a/resolv/resolv.h +++ b/resolv/resolv.h @@ -201,6 +201,8 @@ struct res_sym { #define RES_BLAST 0x00020000 /* blast all recursive servers */ #define RES_USEBSTRING 0x00040000 /* IPv6 reverse lookup with byte strings */ +#define RES_NOIP6DOTINT 0x00080000 /* Do not use .ip6.int in IPv6 + reverse lookup */ #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH) -- cgit v1.2.3