mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 12:40:00 -04:00
[master] clearer "not found" message for rndc commands
3683. [cleanup] Add a more detailed "not found" message to rndc commands which specify a zone name. [RT #35059]
This commit is contained in:
parent
14fb521a45
commit
bee9a28af0
4 changed files with 60 additions and 22 deletions
7
CHANGES
7
CHANGES
|
|
@ -1,6 +1,9 @@
|
|||
3683. [cleanup] Add a more detailed "not found" message to rndc
|
||||
commands which specify a zone name. [RT #35059]
|
||||
|
||||
3682. [bug] Correct the behavior of rndc retransfer to allow
|
||||
inline-signing slave zones to retain NSEC3 parameters instead of
|
||||
reverting to NSEC [RT #34745]
|
||||
inline-signing slave zones to retain NSEC3 parameters
|
||||
instead of reverting to NSEC. [RT #34745]
|
||||
|
||||
3681. [port] Update the Windows build system to support feature
|
||||
selection and WIN64 builds. This is a work in
|
||||
|
|
|
|||
|
|
@ -105,7 +105,8 @@ ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) {
|
|||
} else if (command_compare(command, NS_COMMAND_REFRESH)) {
|
||||
result = ns_server_refreshcommand(ns_g_server, command, text);
|
||||
} else if (command_compare(command, NS_COMMAND_RETRANSFER)) {
|
||||
result = ns_server_retransfercommand(ns_g_server, command);
|
||||
result = ns_server_retransfercommand(ns_g_server,
|
||||
command, text);
|
||||
} else if (command_compare(command, NS_COMMAND_HALT)) {
|
||||
#ifdef HAVE_LIBSCF
|
||||
/*
|
||||
|
|
@ -200,7 +201,7 @@ ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) {
|
|||
result = ns_server_validation(ns_g_server, command, text);
|
||||
} else if (command_compare(command, NS_COMMAND_SIGN) ||
|
||||
command_compare(command, NS_COMMAND_LOADKEYS)) {
|
||||
result = ns_server_rekey(ns_g_server, command);
|
||||
result = ns_server_rekey(ns_g_server, command, text);
|
||||
} else if (command_compare(command, NS_COMMAND_ADDZONE)) {
|
||||
result = ns_server_add_zone(ns_g_server, command);
|
||||
} else if (command_compare(command, NS_COMMAND_DELZONE)) {
|
||||
|
|
|
|||
|
|
@ -231,7 +231,8 @@ ns_server_refreshcommand(ns_server_t *server, char *args, isc_buffer_t *text);
|
|||
*/
|
||||
|
||||
isc_result_t
|
||||
ns_server_retransfercommand(ns_server_t *server, char *args);
|
||||
ns_server_retransfercommand(ns_server_t *server, char *args,
|
||||
isc_buffer_t *text);
|
||||
/*%<
|
||||
* Act on a "retransfer" command from the command channel.
|
||||
*/
|
||||
|
|
@ -320,7 +321,7 @@ ns_server_sync(ns_server_t *server, char *args, isc_buffer_t *text);
|
|||
* take place incrementally.
|
||||
*/
|
||||
isc_result_t
|
||||
ns_server_rekey(ns_server_t *server, char *args);
|
||||
ns_server_rekey(ns_server_t *server, char *args, isc_buffer_t *text);
|
||||
|
||||
/*%
|
||||
* Dump the current recursive queries.
|
||||
|
|
|
|||
|
|
@ -391,6 +391,9 @@ end_reserved_dispatches(ns_server_t *server, isc_boolean_t all);
|
|||
static void
|
||||
newzone_cfgctx_destroy(void **cfgp);
|
||||
|
||||
static isc_result_t
|
||||
putstr(isc_buffer_t *b, const char *str);
|
||||
|
||||
isc_result_t
|
||||
add_comment(FILE *fp, const char *viewname);
|
||||
|
||||
|
|
@ -6877,7 +6880,8 @@ next_token(char **stringp, const char *delim) {
|
|||
*/
|
||||
static isc_result_t
|
||||
zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
|
||||
dns_zone_t **zonep, const char **zonename, isc_boolean_t skip)
|
||||
dns_zone_t **zonep, const char **zonename,
|
||||
isc_buffer_t *text, isc_boolean_t skip)
|
||||
{
|
||||
char *input, *ptr;
|
||||
char *classtxt;
|
||||
|
|
@ -6887,6 +6891,7 @@ zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
|
|||
isc_buffer_t buf;
|
||||
dns_view_t *view = NULL;
|
||||
dns_rdataclass_t rdclass;
|
||||
char problem[1024] = "";
|
||||
|
||||
REQUIRE(zonep != NULL && *zonep == NULL);
|
||||
REQUIRE(zonename == NULL || *zonename == NULL);
|
||||
|
|
@ -6938,15 +6943,24 @@ zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
|
|||
dns_fixedname_name(&name),
|
||||
ISC_TF(classtxt == NULL),
|
||||
rdclass, zonep);
|
||||
if (result == ISC_R_NOTFOUND)
|
||||
sprintf(problem, "no matching zone '%s' in any view",
|
||||
zonetxt);
|
||||
} else {
|
||||
result = dns_viewlist_find(&server->viewlist, viewtxt,
|
||||
rdclass, &view);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
sprintf(problem, "no matching view '%s'", viewtxt);
|
||||
goto fail1;
|
||||
}
|
||||
|
||||
result = dns_zt_find(view->zonetable, dns_fixedname_name(&name),
|
||||
0, NULL, zonep);
|
||||
dns_view_detach(&view);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
sprintf(problem, "no matching zone '%s' in view '%s'",
|
||||
zonetxt, viewtxt);
|
||||
goto fail1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Partial match? */
|
||||
|
|
@ -6955,6 +6969,14 @@ zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
|
|||
if (result == DNS_R_PARTIALMATCH)
|
||||
result = ISC_R_NOTFOUND;
|
||||
fail1:
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
putstr(text, problem);
|
||||
isc_buffer_putuint8(text, 0);
|
||||
}
|
||||
|
||||
if (view != NULL)
|
||||
dns_view_detach(&view);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
|
@ -6962,13 +6984,16 @@ zone_from_args(ns_server_t *server, char *args, const char *zonetxt,
|
|||
* Act on a "retransfer" command from the command channel.
|
||||
*/
|
||||
isc_result_t
|
||||
ns_server_retransfercommand(ns_server_t *server, char *args) {
|
||||
ns_server_retransfercommand(ns_server_t *server, char *args,
|
||||
isc_buffer_t *text)
|
||||
{
|
||||
isc_result_t result;
|
||||
dns_zone_t *zone = NULL;
|
||||
dns_zone_t *raw = NULL;
|
||||
dns_zonetype_t type;
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL)
|
||||
|
|
@ -6998,7 +7023,8 @@ ns_server_reloadcommand(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
dns_zonetype_t type;
|
||||
const char *msg = NULL;
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL) {
|
||||
|
|
@ -7058,7 +7084,8 @@ ns_server_notifycommand(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
dns_zone_t *zone = NULL;
|
||||
const unsigned char msg[] = "zone notify queued";
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL)
|
||||
|
|
@ -7083,7 +7110,8 @@ ns_server_refreshcommand(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
const unsigned char msg2[] = "not a slave or stub zone";
|
||||
dns_zonetype_t type;
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL)
|
||||
|
|
@ -8259,7 +8287,7 @@ ns_server_tsiglist(ns_server_t *server, isc_buffer_t *text) {
|
|||
* Act on a "sign" or "loadkeys" command from the command channel.
|
||||
*/
|
||||
isc_result_t
|
||||
ns_server_rekey(ns_server_t *server, char *args) {
|
||||
ns_server_rekey(ns_server_t *server, char *args, isc_buffer_t *text) {
|
||||
isc_result_t result;
|
||||
dns_zone_t *zone = NULL;
|
||||
dns_zonetype_t type;
|
||||
|
|
@ -8269,7 +8297,8 @@ ns_server_rekey(ns_server_t *server, char *args) {
|
|||
if (strncasecmp(args, NS_COMMAND_SIGN, strlen(NS_COMMAND_SIGN)) == 0)
|
||||
fullsign = ISC_TRUE;
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL)
|
||||
|
|
@ -8342,7 +8371,8 @@ ns_server_sync(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
arg = next_token(&args, " \t");
|
||||
}
|
||||
|
||||
result = zone_from_args(server, args, arg, &zone, NULL, ISC_FALSE);
|
||||
result = zone_from_args(server, args, arg, &zone, NULL,
|
||||
text, ISC_FALSE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
|
||||
|
|
@ -8418,7 +8448,8 @@ ns_server_freeze(ns_server_t *server, isc_boolean_t freeze, char *args,
|
|||
isc_boolean_t frozen;
|
||||
const char *msg = NULL;
|
||||
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL, ISC_TRUE);
|
||||
result = zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_TRUE);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (zone == NULL) {
|
||||
|
|
@ -8810,8 +8841,8 @@ ns_server_del_zone(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
arg = next_token(&args, " \t");
|
||||
}
|
||||
|
||||
CHECK(zone_from_args(server, args, arg, &zone, &zonename, ISC_FALSE));
|
||||
|
||||
CHECK(zone_from_args(server, args, arg, &zone, &zonename,
|
||||
text, ISC_FALSE));
|
||||
if (zone == NULL) {
|
||||
result = ISC_R_UNEXPECTEDEND;
|
||||
goto cleanup;
|
||||
|
|
@ -9131,7 +9162,8 @@ ns_server_signing(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
} else
|
||||
CHECK(DNS_R_SYNTAX);
|
||||
|
||||
CHECK(zone_from_args(server, args, NULL, &zone, NULL, ISC_FALSE));
|
||||
CHECK(zone_from_args(server, args, NULL, &zone, NULL,
|
||||
text, ISC_FALSE));
|
||||
if (zone == NULL)
|
||||
CHECK(ISC_R_UNEXPECTEDEND);
|
||||
|
||||
|
|
@ -9248,7 +9280,8 @@ ns_server_zonestatus(ns_server_t *server, char *args, isc_buffer_t *text) {
|
|||
isc_time_settoepoch(&refreshkeytime);
|
||||
isc_time_settoepoch(&resigntime);
|
||||
|
||||
CHECK(zone_from_args(server, args, NULL, &zone, &zonename, ISC_TRUE));
|
||||
CHECK(zone_from_args(server, args, NULL, &zone, &zonename,
|
||||
text, ISC_TRUE));
|
||||
if (zone == NULL) {
|
||||
result = ISC_R_UNEXPECTEDEND;
|
||||
goto cleanup;
|
||||
|
|
|
|||
Loading…
Reference in a new issue