]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Reduce code duplication
authorEvan Hunt <each@isc.org>
Thu, 15 Jul 2021 01:54:01 +0000 (18:54 -0700)
committerMark Andrews <marka@isc.org>
Thu, 19 Sep 2024 21:44:06 +0000 (21:44 +0000)
combined named_server_togglequerylog() and
named_server_toggleresponselog() into named_server_setortoggle().

bin/named/control.c
bin/named/include/named/server.h
bin/named/server.c

index d430d903b02e09fff4ac3a184de1036be2e898ec..a1a66a4eb30b10f68886b40d067113e2e3dedf0f 100644 (file)
@@ -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);
index 9bf79da7187b5c994be120b95f16c2da52116aa3..90375260b8e3776433db7abf19d6d8c27a84fd0d 100644 (file)
@@ -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.
  */
 
 /*%
index 1fd36d01e8eaad51afb5460d3ccdc74d33189ff9..35b3ac92533a5be301c71841c29027d31c1ecd4c 100644 (file)
@@ -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);
 }