2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-03 16:15:27 +00:00

Change 3813 broke dig/host -4/-6. No CHANGES as this is has not been released

This commit is contained in:
Mark Andrews
2015-08-12 12:50:15 +10:00
parent 157bc46d2e
commit b8a04d50a3
5 changed files with 52 additions and 21 deletions

View File

@@ -68,7 +68,8 @@ static isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
ip6_int = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE, ip6_int = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
multiline = ISC_FALSE, nottl = ISC_FALSE, noclass = ISC_FALSE, multiline = ISC_FALSE, nottl = ISC_FALSE, noclass = ISC_FALSE,
onesoa = ISC_FALSE, rrcomments = ISC_FALSE, use_usec = ISC_FALSE, onesoa = ISC_FALSE, rrcomments = ISC_FALSE, use_usec = ISC_FALSE,
nocrypto = ISC_FALSE, ttlunits = ISC_FALSE; nocrypto = ISC_FALSE, ttlunits = ISC_FALSE, ipv4only = ISC_FALSE,
ipv6only = ISC_FALSE;
static isc_uint32_t splitwidth = 0xffffffff; static isc_uint32_t splitwidth = 0xffffffff;
/*% opcode text */ /*% opcode text */
@@ -1715,11 +1716,22 @@ preparse_args(int argc, char **argv) {
continue; continue;
option = &rv[0][1]; option = &rv[0][1];
while (strpbrk(option, single_dash_opts) == &option[0]) { while (strpbrk(option, single_dash_opts) == &option[0]) {
if (option[0] == 'm') { switch (option[0]) {
case 'm':
memdebugging = ISC_TRUE; memdebugging = ISC_TRUE;
isc_mem_debugging = ISC_MEM_DEBUGTRACE | isc_mem_debugging = ISC_MEM_DEBUGTRACE |
ISC_MEM_DEBUGRECORD; ISC_MEM_DEBUGRECORD;
return; break;
case '4':
if (ipv6only)
fatal("only one of -4 and -6 allowed");
ipv4only = ISC_TRUE;
break;
case '6':
if (ipv4only)
fatal("only one of -4 and -6 allowed");
ipv6only = ISC_TRUE;
break;
} }
option = &option[1]; option = &option[1];
} }
@@ -2081,12 +2093,12 @@ main(int argc, char **argv) {
ISC_LIST_INIT(search_list); ISC_LIST_INIT(search_list);
debug("main()"); debug("main()");
preparse_args(argc, argv);
progname = argv[0]; progname = argv[0];
preparse_args(argc, argv);
result = isc_app_start(); result = isc_app_start();
check_result(result, "isc_app_start"); check_result(result, "isc_app_start");
setup_libs(); setup_libs();
setup_system(); setup_system(ipv4only, ipv6only);
parse_args(ISC_FALSE, ISC_FALSE, argc, argv); parse_args(ISC_FALSE, ISC_FALSE, argc, argv);
if (keyfile[0] != 0) if (keyfile[0] != 0)
setup_file_key(); setup_file_key();

View File

@@ -1339,7 +1339,7 @@ create_search_list(lwres_conf_t *confdata) {
* settings. * settings.
*/ */
void void
setup_system(void) { setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only) {
dig_searchlist_t *domain = NULL; dig_searchlist_t *domain = NULL;
lwres_result_t lwresult; lwres_result_t lwresult;
unsigned int lwresflags; unsigned int lwresflags;
@@ -1347,6 +1347,24 @@ setup_system(void) {
debug("setup_system()"); debug("setup_system()");
if (ipv4only) {
if (have_ipv4) {
isc_net_disableipv6();
have_ipv6 = ISC_FALSE;
} else {
fatal("can't find IPv4 networking");
}
}
if (ipv6only) {
if (have_ipv6) {
isc_net_disableipv4();
have_ipv4 = ISC_FALSE;
} else {
fatal("can't find IPv6 networking");
}
}
lwresflags = LWRES_CONTEXT_SERVERMODE; lwresflags = LWRES_CONTEXT_SERVERMODE;
if (have_ipv4) if (have_ipv4)
lwresflags |= LWRES_CONTEXT_USEIPV4; lwresflags |= LWRES_CONTEXT_USEIPV4;

View File

@@ -59,6 +59,7 @@ static int seen_error = -1;
static isc_boolean_t list_addresses = ISC_TRUE; static isc_boolean_t list_addresses = ISC_TRUE;
static dns_rdatatype_t list_type = dns_rdatatype_a; static dns_rdatatype_t list_type = dns_rdatatype_a;
static isc_boolean_t printed_server = ISC_FALSE; static isc_boolean_t printed_server = ISC_FALSE;
static isc_boolean_t ipv4only = ISC_FALSE, ipv6only = ISC_FALSE;
static const char *opcodetext[] = { static const char *opcodetext[] = {
"QUERY", "QUERY",
@@ -628,8 +629,16 @@ pre_parse_args(int argc, char **argv) {
isc_mem_debugging |= ISC_MEM_DEBUGUSAGE; isc_mem_debugging |= ISC_MEM_DEBUGUSAGE;
break; break;
case '4': break; case '4':
case '6': break; if (ipv6only)
fatal("only one of -4 and -6 allowed");
ipv4only = ISC_TRUE;
break;
case '6':
if (ipv4only)
fatal("only one of -4 and -6 allowed");
ipv6only = ISC_TRUE;
break;
case 'a': break; case 'a': break;
case 'c': break; case 'c': break;
case 'd': break; case 'd': break;
@@ -824,18 +833,10 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
/* Handled by pre_parse_args(). */ /* Handled by pre_parse_args(). */
break; break;
case '4': case '4':
if (have_ipv4) { /* Handled by pre_parse_args(). */
isc_net_disableipv6();
have_ipv6 = ISC_FALSE;
} else
fatal("can't find IPv4 networking");
break; break;
case '6': case '6':
if (have_ipv6) { /* Handled by pre_parse_args(). */
isc_net_disableipv4();
have_ipv4 = ISC_FALSE;
} else
fatal("can't find IPv6 networking");
break; break;
case 's': case 's':
lookup->servfail_stops = ISC_TRUE; lookup->servfail_stops = ISC_TRUE;
@@ -895,7 +896,7 @@ main(int argc, char **argv) {
result = isc_app_start(); result = isc_app_start();
check_result(result, "isc_app_start"); check_result(result, "isc_app_start");
setup_libs(); setup_libs();
setup_system(); setup_system(ipv4only, ipv6only);
parse_args(ISC_FALSE, argc, argv); parse_args(ISC_FALSE, argc, argv);
if (keyfile[0] != 0) if (keyfile[0] != 0)
setup_file_key(); setup_file_key();

View File

@@ -345,7 +345,7 @@ void
setup_libs(void); setup_libs(void);
void void
setup_system(void); setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only);
isc_result_t isc_result_t
parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max, parse_uint(isc_uint32_t *uip, const char *value, isc_uint32_t max,

View File

@@ -908,7 +908,7 @@ main(int argc, char **argv) {
setup_libs(); setup_libs();
progname = argv[0]; progname = argv[0];
setup_system(); setup_system(ISC_FALSE, ISC_FALSE);
parse_args(argc, argv); parse_args(argc, argv);
if (keyfile[0] != 0) if (keyfile[0] != 0)
setup_file_key(); setup_file_key();