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.8.8rc1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5028739c153536a18c2810aabbfbf68954a8203;p=thirdparty%2Fbind9.git 3931. [cleanup] Cleanup how dlz grammer is defined. [RT #36879] (cherry picked from commit 11649973111d83027faf08ed4fb36a2b3c29c875) --- diff --git a/CHANGES b/CHANGES index 221de6c8d1b..37486075b2b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +3931. [cleanup] Cleanup how dlz grammer is defined. [RT #36879] + 3929. [bug] 'host -a' needed to clear idnoptions. [RT #36963] 3928. [test] Improve rndc system test. [RT #36898] diff --git a/bin/named/server.c b/bin/named/server.c index b939906f077..373e301dff6 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -2150,9 +2150,9 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, obj = NULL; if (dlz != NULL) { - (void)cfg_map_get(cfg_tuple_get(dlz, "options"), - "database", &obj); + (void)cfg_map_get(dlz, "database", &obj); if (obj != NULL) { + const cfg_obj_t *name; char *s = isc_mem_strdup(mctx, cfg_obj_asstring(obj)); if (s == NULL) { result = ISC_R_NOMEMORY; @@ -2165,8 +2165,8 @@ configure_view(dns_view_t *view, cfg_obj_t *config, cfg_obj_t *vconfig, goto cleanup; } - obj = cfg_tuple_get(dlz, "name"); - result = dns_dlzcreate(mctx, cfg_obj_asstring(obj), + name = cfg_map_getname(dlz); + result = dns_dlzcreate(mctx, cfg_obj_asstring(name), dlzargv[0], dlzargc, dlzargv, &view->dlzdatabase); isc_mem_free(mctx, s); diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index 3444f03f844..c3fe997aebd 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -120,34 +120,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_v4_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 }, - { 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 */ @@ -865,7 +839,7 @@ namedconf_or_view_clauses[] = { { "key", &cfg_type_key, CFG_CLAUSEFLAG_MULTI }, { "zone", &cfg_type_zone, CFG_CLAUSEFLAG_MULTI }, /* only 1 DLZ per view allowed */ - { "dlz", &cfg_type_dynamically_loadable_zones, 0 }, + { "dlz", &cfg_type_dlz, 0 }, { "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI }, { "trusted-keys", &cfg_type_dnsseckeys, CFG_CLAUSEFLAG_MULTI }, { "managed-keys", &cfg_type_managedkeys, CFG_CLAUSEFLAG_MULTI }, @@ -1620,15 +1594,19 @@ static cfg_type_t cfg_type_zoneopts = { /*% The "dynamically loadable zones" statement syntax. */ +static cfg_clausedef_t +dlz_clauses[] = { + { "database", &cfg_type_astring, 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 }; /*%