mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 22:45:39 +00:00
3042. [bug] dig +trace could fail attempting to use IPv6
addresses on systems with only IPv4 connectivity. [RT #23797]
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -1,3 +1,7 @@
|
|||||||
|
3042. [bug] dig +trace could fail attempting to use IPv6
|
||||||
|
addresses on systems with only IPv4 connectivity.
|
||||||
|
[RT #23797]
|
||||||
|
|
||||||
3041. [bug] dnssec-signzone failed to generate new signatures on
|
3041. [bug] dnssec-signzone failed to generate new signatures on
|
||||||
ttl changes. [RT #23330]
|
ttl changes. [RT #23330]
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: dig.c,v 1.237 2010/05/13 00:40:46 marka Exp $ */
|
/* $Id: dig.c,v 1.238 2011/02/25 23:11:13 each Exp $ */
|
||||||
|
|
||||||
/*! \file */
|
/*! \file */
|
||||||
|
|
||||||
@@ -44,8 +44,6 @@
|
|||||||
#include <dns/result.h>
|
#include <dns/result.h>
|
||||||
#include <dns/tsig.h>
|
#include <dns/tsig.h>
|
||||||
|
|
||||||
#include <bind9/getaddresses.h>
|
|
||||||
|
|
||||||
#include <dig/dig.h>
|
#include <dig/dig.h>
|
||||||
|
|
||||||
#define ADD_STRING(b, s) { \
|
#define ADD_STRING(b, s) { \
|
||||||
@@ -1437,30 +1435,6 @@ preparse_args(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
getaddresses(dig_lookup_t *lookup, const char *host) {
|
|
||||||
isc_result_t result;
|
|
||||||
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES];
|
|
||||||
isc_netaddr_t netaddr;
|
|
||||||
int count, i;
|
|
||||||
dig_server_t *srv;
|
|
||||||
char tmp[ISC_NETADDR_FORMATSIZE];
|
|
||||||
|
|
||||||
result = bind9_getaddresses(host, 0, sockaddrs,
|
|
||||||
DIG_MAX_ADDRESSES, &count);
|
|
||||||
if (result != ISC_R_SUCCESS)
|
|
||||||
fatal("couldn't get address for '%s': %s",
|
|
||||||
host, isc_result_totext(result));
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]);
|
|
||||||
isc_netaddr_format(&netaddr, tmp, sizeof(tmp));
|
|
||||||
srv = make_server(tmp, host);
|
|
||||||
ISC_LIST_APPEND(lookup->my_server_list, srv, link);
|
|
||||||
}
|
|
||||||
addresscount = count;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
||||||
int argc, char **argv) {
|
int argc, char **argv) {
|
||||||
@@ -1555,7 +1529,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
|
|||||||
if (strncmp(rv[0], "%", 1) == 0)
|
if (strncmp(rv[0], "%", 1) == 0)
|
||||||
break;
|
break;
|
||||||
if (strncmp(rv[0], "@", 1) == 0) {
|
if (strncmp(rv[0], "@", 1) == 0) {
|
||||||
getaddresses(lookup, &rv[0][1]);
|
addresscount = getaddresses(lookup, &rv[0][1]);
|
||||||
} else if (rv[0][0] == '+') {
|
} else if (rv[0][0] == '+') {
|
||||||
plus_option(&rv[0][1], is_batchfile,
|
plus_option(&rv[0][1], is_batchfile,
|
||||||
lookup);
|
lookup);
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: dighost.c,v 1.338 2011/02/21 23:47:44 tbox Exp $ */
|
/* $Id: dighost.c,v 1.339 2011/02/25 23:11:13 each Exp $ */
|
||||||
|
|
||||||
/*! \file
|
/*! \file
|
||||||
* \note
|
* \note
|
||||||
@@ -1765,8 +1765,7 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section)
|
|||||||
dns_rdata_freestruct(&ns);
|
dns_rdata_freestruct(&ns);
|
||||||
|
|
||||||
/* Initialize lookup if we've not yet */
|
/* Initialize lookup if we've not yet */
|
||||||
debug("found NS %d %s", numLookups, namestr);
|
debug("found NS %s", namestr);
|
||||||
numLookups++;
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
success = ISC_TRUE;
|
success = ISC_TRUE;
|
||||||
lookup_counter++;
|
lookup_counter++;
|
||||||
@@ -1788,9 +1787,8 @@ followup_lookup(dns_message_t *msg, dig_query_t *query, dns_section_t section)
|
|||||||
domain = dns_fixedname_name(&lookup->fdomain);
|
domain = dns_fixedname_name(&lookup->fdomain);
|
||||||
dns_name_copy(name, domain, NULL);
|
dns_name_copy(name, domain, NULL);
|
||||||
}
|
}
|
||||||
srv = make_server(namestr, namestr);
|
debug("adding server %s", namestr);
|
||||||
debug("adding server %s", srv->servername);
|
numLookups += getaddresses(lookup, namestr);
|
||||||
ISC_LIST_APPEND(lookup->my_server_list, srv, link);
|
|
||||||
dns_rdata_reset(&rdata);
|
dns_rdata_reset(&rdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3539,6 +3537,31 @@ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) {
|
|||||||
return (ISC_R_SUCCESS);
|
return (ISC_R_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
getaddresses(dig_lookup_t *lookup, const char *host) {
|
||||||
|
isc_result_t result;
|
||||||
|
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES];
|
||||||
|
isc_netaddr_t netaddr;
|
||||||
|
int count, i;
|
||||||
|
dig_server_t *srv;
|
||||||
|
char tmp[ISC_NETADDR_FORMATSIZE];
|
||||||
|
|
||||||
|
result = bind9_getaddresses(host, 0, sockaddrs,
|
||||||
|
DIG_MAX_ADDRESSES, &count);
|
||||||
|
if (result != ISC_R_SUCCESS)
|
||||||
|
fatal("couldn't get address for '%s': %s",
|
||||||
|
host, isc_result_totext(result));
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]);
|
||||||
|
isc_netaddr_format(&netaddr, tmp, sizeof(tmp));
|
||||||
|
srv = make_server(tmp, host);
|
||||||
|
ISC_LIST_APPEND(lookup->my_server_list, srv, link);
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
/*%
|
/*%
|
||||||
* Initiate either a TCP or UDP lookup
|
* Initiate either a TCP or UDP lookup
|
||||||
*/
|
*/
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* $Id: dig.h,v 1.111 2009/09/29 15:06:06 fdupont Exp $ */
|
/* $Id: dig.h,v 1.112 2011/02/25 23:11:13 each Exp $ */
|
||||||
|
|
||||||
#ifndef DIG_H
|
#ifndef DIG_H
|
||||||
#define DIG_H
|
#define DIG_H
|
||||||
@@ -288,6 +288,9 @@ extern int idnoptions;
|
|||||||
isc_result_t
|
isc_result_t
|
||||||
get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr);
|
get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr);
|
||||||
|
|
||||||
|
int
|
||||||
|
getaddresses(dig_lookup_t *lookup, const char *host);
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
get_reverse(char *reverse, size_t len, char *value, isc_boolean_t ip6_int,
|
get_reverse(char *reverse, size_t len, char *value, isc_boolean_t ip6_int,
|
||||||
isc_boolean_t strict);
|
isc_boolean_t strict);
|
||||||
|
Reference in New Issue
Block a user