mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Reduce code duplication
combined named_server_togglequerylog() and named_server_toggleresponselog() into named_server_setortoggle().
This commit is contained in:
parent
5fad79c92f
commit
c4b7dce376
@ -247,7 +247,9 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
|
||||
} else if (command_compare(command, NAMED_COMMAND_NULL)) {
|
||||
result = ISC_R_SUCCESS;
|
||||
} else if (command_compare(command, NAMED_COMMAND_QUERYLOG)) {
|
||||
result = named_server_togglequerylog(named_g_server, lex);
|
||||
result = named_server_setortoggle(named_g_server,
|
||||
"query logging",
|
||||
NS_SERVER_LOGQUERIES, lex);
|
||||
} else if (command_compare(command, NAMED_COMMAND_RECONFIG)) {
|
||||
result = named_server_reconfigcommand(named_g_server);
|
||||
} else if (command_compare(command, NAMED_COMMAND_RECURSING)) {
|
||||
@ -257,7 +259,9 @@ named_control_docommand(isccc_sexpr_t *message, bool readonly,
|
||||
} else if (command_compare(command, NAMED_COMMAND_RELOAD)) {
|
||||
result = named_server_reloadcommand(named_g_server, lex, text);
|
||||
} else if (command_compare(command, NAMED_COMMAND_RESPONSELOG)) {
|
||||
result = named_server_toggleresponselog(named_g_server, lex);
|
||||
result = named_server_setortoggle(named_g_server,
|
||||
"response logging",
|
||||
NS_SERVER_LOGRESPONSES, lex);
|
||||
} else if (command_compare(command, NAMED_COMMAND_RETRANSFER)) {
|
||||
result = named_server_retransfercommand(named_g_server, lex,
|
||||
text);
|
||||
|
@ -181,17 +181,20 @@ named_server_retransfercommand(named_server_t *server, isc_lex_t *lex,
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
named_server_togglequerylog(named_server_t *server, isc_lex_t *lex);
|
||||
named_server_setortoggle(named_server_t *server, const char *optname,
|
||||
unsigned int option, isc_lex_t *lex);
|
||||
/*%<
|
||||
* Enable/disable logging of queries. (Takes "yes" or "no" argument,
|
||||
* but can also be used as a toggle for backward comptibility.)
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
named_server_toggleresponselog(named_server_t *server, isc_lex_t *lex);
|
||||
/*%<
|
||||
* Enable/disable logging of responses. (Takes "yes" or "no" argument,
|
||||
* but can also be used as a toggle for backward comptibility.)
|
||||
* Enable/disable, or toggle, a server option via the command channel.
|
||||
* 'option' is the option value to be changed (for example,
|
||||
* NS_SERVER_LOGQUERIES or NS_SERVER_LOGRESPOSNES) and 'optname' is the
|
||||
* option's human-readable name for logging purposes ("query logging"
|
||||
* or "response logging").
|
||||
*
|
||||
* If an explicit argument to enable the option was provided
|
||||
* (i.e., "on", "enable", "true", or "yes") or an explicit argument
|
||||
* to disable it ("off", "disable", "false", or "no"), it will be used.
|
||||
*
|
||||
* If no argument is provided, the option's current state will be reversed.
|
||||
*/
|
||||
|
||||
/*%
|
||||
|
@ -10673,7 +10673,8 @@ named_server_refreshcommand(named_server_t *server, isc_lex_t *lex,
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
named_server_togglequerylog(named_server_t *server, isc_lex_t *lex) {
|
||||
named_server_setortoggle(named_server_t *server, const char *optname,
|
||||
unsigned int option, isc_lex_t *lex) {
|
||||
bool prev, value;
|
||||
char *ptr = NULL;
|
||||
|
||||
@ -10683,7 +10684,7 @@ named_server_togglequerylog(named_server_t *server, isc_lex_t *lex) {
|
||||
return (ISC_R_UNEXPECTEDEND);
|
||||
}
|
||||
|
||||
prev = ns_server_getoption(server->sctx, NS_SERVER_LOGQUERIES);
|
||||
prev = ns_server_getoption(server->sctx, option);
|
||||
|
||||
ptr = next_token(lex, NULL);
|
||||
if (ptr == NULL) {
|
||||
@ -10704,50 +10705,10 @@ named_server_togglequerylog(named_server_t *server, isc_lex_t *lex) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
ns_server_setoption(server->sctx, NS_SERVER_LOGQUERIES, value);
|
||||
ns_server_setoption(server->sctx, option, value);
|
||||
|
||||
isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER,
|
||||
ISC_LOG_INFO, "query logging is now %s",
|
||||
value ? "on" : "off");
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
named_server_toggleresponselog(named_server_t *server, isc_lex_t *lex) {
|
||||
bool prev, value;
|
||||
char *ptr = NULL;
|
||||
|
||||
/* Skip the command name. */
|
||||
ptr = next_token(lex, NULL);
|
||||
if (ptr == NULL) {
|
||||
return (ISC_R_UNEXPECTEDEND);
|
||||
}
|
||||
|
||||
prev = ns_server_getoption(server->sctx, NS_SERVER_LOGRESPONSES);
|
||||
|
||||
ptr = next_token(lex, NULL);
|
||||
if (ptr == NULL) {
|
||||
value = !prev;
|
||||
} else if (!strcasecmp(ptr, "on") || !strcasecmp(ptr, "yes") ||
|
||||
!strcasecmp(ptr, "enable") || !strcasecmp(ptr, "true"))
|
||||
{
|
||||
value = true;
|
||||
} else if (!strcasecmp(ptr, "off") || !strcasecmp(ptr, "no") ||
|
||||
!strcasecmp(ptr, "disable") || !strcasecmp(ptr, "false"))
|
||||
{
|
||||
value = false;
|
||||
} else {
|
||||
return (DNS_R_SYNTAX);
|
||||
}
|
||||
|
||||
if (value == prev) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
ns_server_setoption(server->sctx, NS_SERVER_LOGRESPONSES, value);
|
||||
|
||||
isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER,
|
||||
ISC_LOG_INFO, "response logging is now %s",
|
||||
ISC_LOG_INFO, "%s is now %s", optname,
|
||||
value ? "on" : "off");
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user