]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
remove global named defaults parser
authorColin Vidal <colin@isc.org>
Tue, 21 Oct 2025 14:29:34 +0000 (16:29 +0200)
committerEvan Hunt <each@isc.org>
Thu, 23 Oct 2025 20:00:02 +0000 (13:00 -0700)
Remove the global named defaults parser. Instead, a parser is created
during the execution time of named_config_parsedefaults(). This
simplifies the API (no parser to pass around) and the life-cycle of the
default configuration tree (it doesn't depends on a parser instance).

bin/named/config.c
bin/named/include/named/config.h
bin/named/include/named/globals.h
bin/named/main.c
bin/named/server.c

index 9268185444d91af60fd365aab2cb4bf40cd3d72f..d08e94c959fba926b3b0e5842ed1b3c66aba423e 100644 (file)
@@ -361,15 +361,25 @@ remote-servers " DEFAULT_IANA_ROOT_ZONE_PRIMARIES " {\n\
 ";
 
 isc_result_t
-named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf) {
+named_config_parsedefaults(cfg_obj_t **conf) {
        isc_buffer_t b;
+       cfg_parser_t *parser = NULL;
+       isc_result_t result;
+
+       result = cfg_parser_create(isc_g_mctx, &parser);
+       if (result != ISC_R_SUCCESS) {
+               return result;
+       }
 
        isc_buffer_init(&b, defaultconf, sizeof(defaultconf) - 1);
        isc_buffer_add(&b, sizeof(defaultconf) - 1);
-       return cfg_parse_buffer(parser, &b, __FILE__, 0, &cfg_type_namedconf,
-                               CFG_PCTX_NODEPRECATED | CFG_PCTX_NOOBSOLETE |
-                                       CFG_PCTX_NOEXPERIMENTAL,
-                               conf);
+       result = cfg_parse_buffer(parser, &b, __FILE__, 0, &cfg_type_namedconf,
+                                 CFG_PCTX_NODEPRECATED | CFG_PCTX_NOOBSOLETE |
+                                         CFG_PCTX_NOEXPERIMENTAL,
+                                 conf);
+
+       cfg_parser_destroy(&parser);
+       return result;
 }
 
 /*
index 744f583423ae96539ecfbd5e05d285c4ab8fe1fd..6b275727d4b976fa1fffe75a7060b81bdaf0c13f 100644 (file)
@@ -25,7 +25,7 @@
 #define DEFAULT_IANA_ROOT_ZONE_PRIMARIES "_default_iana_root_zone_primaries"
 
 isc_result_t
-named_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf);
+named_config_parsedefaults(cfg_obj_t **conf);
 
 isc_result_t
 named_config_parsefile(cfg_parser_t *parser, cfg_obj_t **conf);
index fa5fd5581c5a0edcd0b55a556a20e57b706368b9..c087fe60df710c1af3be835f23213e6111af0d5d 100644 (file)
@@ -61,7 +61,6 @@ EXTERN bool named_g_run_done INIT(false);
  *         for really short timers, another for client timers, and one
  *         for zone timers.
  */
-EXTERN cfg_parser_t *named_g_parser         INIT(NULL);
 EXTERN cfg_parser_t *named_g_addparser      INIT(NULL);
 EXTERN const char *named_g_version          INIT(PACKAGE_VERSION);
 EXTERN const char *named_g_product          INIT(PACKAGE_NAME);
index 3c12ba0d1dc4c9955106887fa3a42e89e546b88e..6751b39432616166c3b862fee960e3ddda7a3352 100644 (file)
@@ -513,7 +513,6 @@ printversion(bool verbose) {
        isc_buffer_t b;
        char buf[512];
 #if defined(HAVE_GEOIP2)
-       cfg_parser_t *parser = NULL;
        cfg_obj_t *config = NULL;
        const cfg_obj_t *defaults = NULL, *obj = NULL;
 #endif /* if defined(HAVE_GEOIP2) */
@@ -611,15 +610,13 @@ printversion(bool verbose) {
 #define RTC(x) RUNTIME_CHECK((x) == ISC_R_SUCCESS)
        isc_mem_t *geoip_mctx = NULL;
        isc_mem_create("geoip", &geoip_mctx);
-       RTC(cfg_parser_create(geoip_mctx, &parser));
-       RTC(named_config_parsedefaults(parser, &config));
+       RTC(named_config_parsedefaults(&config));
        RTC(cfg_map_get(config, "options", &defaults));
        RTC(cfg_map_get(defaults, "geoip-directory", &obj));
        if (cfg_obj_isstring(obj)) {
                printf("  geoip-directory:      %s\n", cfg_obj_asstring(obj));
        }
        cfg_obj_destroy(&config);
-       cfg_parser_destroy(&parser);
        isc_mem_detach(&geoip_mctx);
 #endif /* HAVE_GEOIP2 */
 }
index d8654be66d2821a15be93f0e23fe57ffff466d68..fd77c10685911cc0ee3b8a1b13218b0fa1f05b3d 100644 (file)
@@ -9529,11 +9529,7 @@ run_server(void *arg) {
        isc_timer_create(isc_loop_main(), pps_timer_tick, server,
                         &server->pps_timer);
 
-       CHECKFATAL(cfg_parser_create(isc_g_mctx, &named_g_parser),
-                  "creating default configuration parser");
-
-       CHECKFATAL(named_config_parsedefaults(named_g_parser,
-                                             &named_g_defaultconfig),
+       CHECKFATAL(named_config_parsedefaults(&named_g_defaultconfig),
                   "unable to parse defaults config");
 
        CHECKFATAL(cfg_map_get(named_g_defaultconfig, "options",
@@ -9595,7 +9591,6 @@ shutdown_server(void *arg) {
        }
 
        cfg_obj_destroy(&named_g_defaultconfig);
-       cfg_parser_destroy(&named_g_parser);
        cfg_parser_destroy(&named_g_addparser);
 
        (void)named_server_saventa(server);