From: Mark Andrews Date: Tue, 26 Aug 2014 05:01:29 +0000 (+1000) Subject: 3931. [cleanup] Cleanup how dlz grammer is defined. [RT #36879] X-Git-Tag: v9.11.0a1~1380 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=11649973111d83027faf08ed4fb36a2b3c29c875;p=thirdparty%2Fbind9.git 3931. [cleanup] Cleanup how dlz grammer is defined. [RT #36879] --- diff --git a/CHANGES b/CHANGES index 60eb22ebab2..1ab9f8dff73 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +3931. [cleanup] Cleanup how dlz grammer is defined. [RT #36879] + 3930. [bug] "rndc nta -r" could cause a server hang if the NTA was not found. [RT #36909] diff --git a/bin/named/server.c b/bin/named/server.c index ce858854d87..72bbdd285f9 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -2562,13 +2562,10 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, element != NULL; element = cfg_list_next(element)) { - const cfg_obj_t *dlzopts; - obj = NULL; + dlz = cfg_listelt_value(element); obj = NULL; - dlz = cfg_listelt_value(element); - dlzopts = cfg_tuple_get(dlz, "options"); - (void)cfg_map_get(dlzopts, "database", &obj); + (void)cfg_map_get(dlz, "database", &obj); if (obj != NULL) { dns_dlzdb_t *dlzdb = NULL; const cfg_obj_t *name, *search = NULL; @@ -2585,7 +2582,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, goto cleanup; } - name = cfg_tuple_get(dlz, "name"); + name = cfg_map_getname(dlz); result = dns_dlzcreate(mctx, cfg_obj_asstring(name), dlzargv[0], dlzargc, dlzargv, &dlzdb); @@ -2600,7 +2597,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, * method now. If not searchable, we'll take * care of it when we process the zone statement. */ - (void)cfg_map_get(dlzopts, "search", &search); + (void)cfg_map_get(dlz, "search", &search); if (search == NULL || cfg_obj_asboolean(search)) { dlzdb->search = ISC_TRUE; result = dns_dlzconfigure(view, dlzdb, diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index d9e5a8cef7d..f8b3bad3161 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -141,35 +141,8 @@ static cfg_type_t cfg_type_view; static cfg_type_t cfg_type_viewopts; static cfg_type_t cfg_type_zone; static cfg_type_t cfg_type_zoneopts; -static cfg_type_t cfg_type_dynamically_loadable_zones; -static cfg_type_t cfg_type_dynamically_loadable_zones_opts; static cfg_type_t cfg_type_filter_aaaa; - -/* - * Clauses that can be found in a 'dynamically loadable zones' statement - */ -static cfg_clausedef_t -dynamically_loadable_zones_clauses[] = { - { "database", &cfg_type_astring, 0 }, - { "search", &cfg_type_boolean, 0 }, - { NULL, NULL, 0 } -}; - -/* - * A dynamically loadable zones statement. - */ -static cfg_tuplefielddef_t dynamically_loadable_zones_fields[] = { - { "name", &cfg_type_astring, 0 }, - { "options", &cfg_type_dynamically_loadable_zones_opts, 0 }, - { NULL, NULL, 0 } -}; - -static cfg_type_t cfg_type_dynamically_loadable_zones = { - "dlz", cfg_parse_tuple, cfg_print_tuple, cfg_doc_tuple, - &cfg_rep_tuple, - dynamically_loadable_zones_fields - }; - +static cfg_type_t cfg_type_dlz; /*% tkey-dhkey */ @@ -936,7 +909,7 @@ static cfg_clausedef_t namedconf_or_view_clauses[] = { { "key", &cfg_type_key, CFG_CLAUSEFLAG_MULTI }, { "zone", &cfg_type_zone, CFG_CLAUSEFLAG_MULTI }, - { "dlz", &cfg_type_dynamically_loadable_zones, CFG_CLAUSEFLAG_MULTI }, + { "dlz", &cfg_type_dlz, CFG_CLAUSEFLAG_MULTI }, { "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI }, { "trusted-keys", &cfg_type_dnsseckeys, CFG_CLAUSEFLAG_MULTI }, { "managed-keys", &cfg_type_managedkeys, CFG_CLAUSEFLAG_MULTI }, @@ -1803,15 +1776,20 @@ static cfg_type_t cfg_type_zoneopts = { /*% The "dynamically loadable zones" statement syntax. */ +static cfg_clausedef_t +dlz_clauses[] = { + { "database", &cfg_type_astring, 0 }, + { "search", &cfg_type_boolean, 0 }, + { NULL, NULL, 0 } +}; static cfg_clausedef_t * -dynamically_loadable_zones_clausesets[] = { - dynamically_loadable_zones_clauses, +dlz_clausesets[] = { + dlz_clauses, NULL }; -static cfg_type_t cfg_type_dynamically_loadable_zones_opts = { - "dynamically_loadable_zones_opts", cfg_parse_map, - cfg_print_map, cfg_doc_map, &cfg_rep_map, - dynamically_loadable_zones_clausesets +static cfg_type_t cfg_type_dlz = { + "dlz", cfg_parse_named_map, cfg_print_map, cfg_doc_map, + &cfg_rep_map, dlz_clausesets }; /*%