catalog-zones { zone string [ default-masters [ port integer ]
[ dscp integer ] { ( remote-servers | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
- string ] [ tls string ]; ... } ] [ zone-directory
- quoted_string ] [ in-memory boolean ] [ min-update-interval
- duration ]; ... };
+ string ] [ tls string ]; ... } ] [ default-primaries [ port
+ integer ] [ dscp integer ] { ( remote-servers |
+ ipv4_address [ port integer ] | ipv6_address [ port
+ integer ] ) [ key string ] [ tls string ]; ... } ] [
+ zone-directory quoted_string ] [ in-memory boolean ] [
+ min-update-interval duration ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity boolean;
check-mx ( fail | warn | ignore );
catalog-zones { zone string [ default-masters [ port integer ]
[ dscp integer ] { ( remote-servers | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
- string ] [ tls string ]; ... } ] [ zone-directory
- quoted_string ] [ in-memory boolean ] [ min-update-interval
- duration ]; ... };
+ string ] [ tls string ]; ... } ] [ default-primaries [ port
+ integer ] [ dscp integer ] { ( remote-servers |
+ ipv4_address [ port integer ] | ipv6_address [ port
+ integer ] ) [ key string ] [ tls string ]; ... } ] [
+ zone-directory quoted_string ] [ in-memory boolean ] [
+ min-update-interval duration ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity boolean;
check-mx ( fail | warn | ignore );
opts = dns_catz_zone_getdefoptions(zone);
obj = cfg_tuple_get(catz_obj, "default-masters");
+ if (obj == NULL || !cfg_obj_istuple(obj)) {
+ obj = cfg_tuple_get(catz_obj, "default-primaries");
+ }
if (obj != NULL && cfg_obj_istuple(obj)) {
result = named_config_getipandkeylist(
config, "primaries", obj, view->mctx, &opts->masters);
in-memory no
zone-directory "zonedir";
zone "catalog2.example"
- default-masters { 10.53.0.1 port @EXTRAPORT1@; }
+ default-primaries { 10.53.0.1 port @EXTRAPORT1@; }
in-memory yes;
zone "catalog3.example"
default-masters { 10.53.0.1; }
#T1 zone "catalog4.example"
#T1 default-masters { 10.53.0.1; };
#T2 zone "catalog5.example"
-#T2 default-masters { 10.53.0.1; };
+#T2 default-primaries { 10.53.0.1; };
};
};
ret=0
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
- update add label1.masters.catalog1.example. 3600 IN TXT "tsig_key"
+ update add label1.primaries.catalog1.example. 3600 IN TXT "tsig_key"
update add 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example.
send
END
ret=0
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
- update delete label1.masters.catalog1.example. 3600 IN TXT "tsig_key"
+ update delete label1.primaries.catalog1.example. 3600 IN TXT "tsig_key"
update delete 4346f565b4d63ddb99e5d2497ff22d04e878e8f8.zones.catalog1.example. 3600 IN PTR dom6.example.
send
END
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
update add f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example.
- update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1
- update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
+ update add label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1
+ update add label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
send
END
if [ $ret -ne 0 ]; then echo_i "failed"; fi
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
update delete f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example.
- update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1
- update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
+ update delete label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN A 10.53.0.1
+ update delete label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
send
END
if [ $ret -ne 0 ]; then echo_i "failed"; fi
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
update add f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example.
- update add label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
+ update add label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
send
END
if [ $ret -ne 0 ]; then echo_i "failed"; fi
$NSUPDATE -d <<END >> nsupdate.out.test$n 2>&1 || ret=1
server 10.53.0.1 ${PORT}
update delete f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN PTR dom9.example.
- update delete label1.masters.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
+ update delete label1.primaries.f0f989bc71c5c8ca3a1eb9c9ab5246521907e3af.zones.catalog1.example. 3600 IN TXT "tsig_key"
send
END
if [ $ret -ne 0 ]; then echo_i "failed"; fi
--- /dev/null
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+options {
+ catalog-zones {
+ zone "catalog.example"
+ default-masters { 10.53.0.1; }
+ default-primaries { 10.53.0.1 port 5304; }
+ in-memory yes;
+ };
+};
+
+zone "catalog.example" {
+ type secondary;
+ file "catalog.example.db";
+ primaries { 10.53.0.1; };
+};
specified in any order.
``default-masters``
+ Synonym for ``default-primaries``.
+
+``default-primaries``
This option defines the default primaries for member
zones listed in a catalog zone, and can be overridden by options within
a catalog zone. If no such options are included, then member zones
either an A or AAAA record. If multiple primaries are set, the order in
which they are used is random.
+ Note: ``masters`` can be used as a synonym for ``primaries``.
+
- A ``primaries`` with a TSIG key defined:
::
key set. The TSIG key must be configured in the configuration file.
``label`` can be any valid DNS label.
+ Note: ``masters`` can be used as a synonym for ``primaries``.
+
- ``allow-query`` and ``allow-transfer`` ACLs:
::
catalog\-zones { zone string [ default\-masters [ port integer ]
[ dscp integer ] { ( remote\-servers | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
- string ] [ tls string ]; ... } ] [ zone\-directory
- quoted_string ] [ in\-memory boolean ] [ min\-update\-interval
- duration ]; ... };
+ string ] [ tls string ]; ... } ] [ default\-primaries [ port
+ integer ] [ dscp integer ] { ( remote\-servers |
+ ipv4_address [ port integer ] | ipv6_address [ port
+ integer ] ) [ key string ] [ tls string ]; ... } ] [
+ zone\-directory quoted_string ] [ in\-memory boolean ] [
+ min\-update\-interval duration ]; ... };
check\-dup\-records ( fail | warn | ignore );
check\-integrity boolean;
check\-mx ( fail | warn | ignore );
catalog\-zones { zone string [ default\-masters [ port integer ]
[ dscp integer ] { ( remote\-servers | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
- string ] [ tls string ]; ... } ] [ zone\-directory
- quoted_string ] [ in\-memory boolean ] [ min\-update\-interval
- duration ]; ... };
+ string ] [ tls string ]; ... } ] [ default\-primaries [ port
+ integer ] [ dscp integer ] { ( remote\-servers |
+ ipv4_address [ port integer ] | ipv6_address [ port
+ integer ] ) [ key string ] [ tls string ]; ... } ] [
+ zone\-directory quoted_string ] [ in\-memory boolean ] [
+ min\-update\-interval duration ]; ... };
check\-dup\-records ( fail | warn | ignore );
check\-integrity boolean;
check\-mx ( fail | warn | ignore );
blackhole { address_match_element; ... };
cache-file quoted_string;
catalog-zones { zone string [ default-masters [ port integer ]
+ [ dscp integer ] { ( masters | ipv4_address [ port
+ integer ] | ipv6_address [ port integer ] ) [ key
+ string ]; ... } ] [ default-primaries [ port integer ]
[ dscp integer ] { ( masters | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
string ]; ... } ] [ zone-directory quoted_string ] [
auto-dnssec ( allow | maintain | off );
cache-file quoted_string;
catalog-zones { zone string [ default-masters [ port integer ]
+ [ dscp integer ] { ( masters | ipv4_address [ port
+ integer ] | ipv6_address [ port integer ] ) [ key
+ string ]; ... } ] [ default-primaries [ port integer ]
[ dscp integer ] { ( masters | ipv4_address [ port
integer ] | ipv6_address [ port integer ] ) [ key
string ]; ... } ] [ zone-directory quoted_string ] [
catalog-zones { zone <string> [ default-masters [ port <integer> ]
[ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port
<integer> ] | <ipv6_address> [ port <integer> ] ) [ key
- <string> ] [ tls <string> ]; ... } ] [ zone-directory
- <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval
- <duration> ]; ... };
+ <string> ] [ tls <string> ]; ... } ] [ default-primaries [ port
+ <integer> ] [ dscp <integer> ] { ( <remote-servers> |
+ <ipv4_address> [ port <integer> ] | <ipv6_address> [ port
+ <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [
+ zone-directory <quoted_string> ] [ in-memory <boolean> ] [
+ min-update-interval <duration> ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity <boolean>;
check-mx ( fail | warn | ignore );
catalog-zones { zone <string> [ default-masters [ port <integer> ]
[ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port
<integer> ] | <ipv6_address> [ port <integer> ] ) [ key
- <string> ] [ tls <string> ]; ... } ] [ zone-directory
- <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval
- <duration> ]; ... };
+ <string> ] [ tls <string> ]; ... } ] [ default-primaries [ port
+ <integer> ] [ dscp <integer> ] { ( <remote-servers> |
+ <ipv4_address> [ port <integer> ] | <ipv6_address> [ port
+ <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [
+ zone-directory <quoted_string> ] [ in-memory <boolean> ] [
+ min-update-interval <duration> ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity <boolean>;
check-mx ( fail | warn | ignore );
catalog-zones { zone <string> [ default-masters [ port <integer> ]
[ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port
<integer> ] | <ipv6_address> [ port <integer> ] ) [ key
- <string> ] [ tls <string> ]; ... } ] [ zone-directory
- <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval
- <duration> ]; ... };
+ <string> ] [ tls <string> ]; ... } ] [ default-primaries [ port
+ <integer> ] [ dscp <integer> ] { ( <remote-servers> |
+ <ipv4_address> [ port <integer> ] | <ipv6_address> [ port
+ <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [
+ zone-directory <quoted_string> ] [ in-memory <boolean> ] [
+ min-update-interval <duration> ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity <boolean>;
check-mx ( fail | warn | ignore );
catalog-zones { zone <string> [ default-masters [ port <integer> ]
[ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port
<integer> ] | <ipv6_address> [ port <integer> ] ) [ key
- <string> ] [ tls <string> ]; ... } ] [ zone-directory
- <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval
- <duration> ]; ... };
+ <string> ] [ tls <string> ]; ... } ] [ default-primaries [ port
+ <integer> ] [ dscp <integer> ] { ( <remote-servers> |
+ <ipv4_address> [ port <integer> ] | <ipv6_address> [ port
+ <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [
+ zone-directory <quoted_string> ] [ in-memory <boolean> ] [
+ min-update-interval <duration> ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity <boolean>;
check-mx ( fail | warn | ignore );
catalog-zones { zone <string> [ default-masters [ port <integer> ]
[ dscp <integer> ] { ( <remote-servers> | <ipv4_address> [ port
<integer> ] | <ipv6_address> [ port <integer> ] ) [ key
- <string> ] [ tls <string> ]; ... } ] [ zone-directory
- <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval
- <duration> ]; ... };
+ <string> ] [ tls <string> ]; ... } ] [ default-primaries [ port
+ <integer> ] [ dscp <integer> ] { ( <remote-servers> |
+ <ipv4_address> [ port <integer> ] | <ipv6_address> [ port
+ <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [
+ zone-directory <quoted_string> ] [ in-memory <boolean> ] [
+ min-update-interval <duration> ]; ... };
check-dup-records ( fail | warn | ignore );
check-integrity <boolean>;
check-mx ( fail | warn | ignore );
return (result);
}
+static isc_result_t
+check_catz(const cfg_obj_t *catz_obj, const char *viewname, isc_log_t *logctx) {
+ const cfg_listelt_t *element;
+ const cfg_obj_t *obj, *nameobj, *primariesobj;
+ const char *zonename;
+ const char *forview = " for view ";
+ isc_result_t result;
+
+ if (viewname == NULL) {
+ viewname = "";
+ forview = "";
+ }
+
+ result = ISC_R_SUCCESS;
+
+ obj = cfg_tuple_get(catz_obj, "zone list");
+
+ for (element = cfg_list_first(obj); element != NULL;
+ element = cfg_list_next(element))
+ {
+ obj = cfg_listelt_value(element);
+ nameobj = cfg_tuple_get(obj, "zone name");
+ zonename = cfg_obj_asstring(nameobj);
+
+ primariesobj = cfg_tuple_get(obj, "default-primaries");
+ if (primariesobj != NULL && cfg_obj_istuple(primariesobj)) {
+ primariesobj = cfg_tuple_get(obj, "default-masters");
+ if (primariesobj != NULL &&
+ cfg_obj_istuple(primariesobj)) {
+ cfg_obj_log(nameobj, logctx, ISC_LOG_ERROR,
+ "catalog zone '%s'%s%s: "
+ "'default-primaries' and "
+ "'default-masters' can not be both "
+ "defined",
+ zonename, forview, viewname);
+ result = ISC_R_FAILURE;
+ break;
+ }
+ }
+ }
+
+ return (result);
+}
+
/*%
* Data structure used for the 'callback_data' argument to check_one_plugin().
*/
}
}
+ /*
+ * Check catalog-zones configuration.
+ */
+ if (opts != NULL) {
+ obj = NULL;
+ if ((cfg_map_get(opts, "catalog-zones", &obj) ==
+ ISC_R_SUCCESS) &&
+ (check_catz(obj, viewname, logctx) != ISC_R_SUCCESS))
+ {
+ result = ISC_R_FAILURE;
+ }
+ }
+
isc_symtab_destroy(&symtab);
/*
catz_get_option(const dns_label_t *option) {
if (catz_opt_cmp(option, "zones")) {
return (CATZ_OPT_ZONES);
- } else if (catz_opt_cmp(option, "masters")) {
+ } else if (catz_opt_cmp(option, "masters") ||
+ catz_opt_cmp(option, "primaries")) {
return (CATZ_OPT_MASTERS);
} else if (catz_opt_cmp(option, "allow-query")) {
return (CATZ_OPT_ALLOW_QUERY);
/*
* Options that can be overridden in catalog zone
*/
- /* default-masters definition */
+ /* default-masters/default-primaries definition */
dns_ipkeylist_t masters;
/* both as text in config format, NULL if none */
static cfg_tuplefielddef_t catz_zone_fields[] = {
{ "zone name", &cfg_type_catz_zone, 0 },
{ "default-masters", &cfg_type_namesockaddrkeylist, 0 },
+ { "default-primaries", &cfg_type_namesockaddrkeylist, 0 },
{ "zone-directory", &cfg_type_qstring, 0 },
{ "in-memory", &cfg_type_boolean, 0 },
{ "min-update-interval", &cfg_type_duration, 0 },