dns_zone_detach(&raw);
}
type = dns_zone_gettype(zone);
- if (type == dns_zone_slave || type == dns_zone_stub ||
+ if (type == dns_zone_slave || type == dns_zone_mirror ||
+ type == dns_zone_stub ||
(type == dns_zone_redirect &&
dns_zone_getredirecttype(zone) == dns_zone_slave))
dns_zone_forcereload(zone);
msg = "server reload successful";
} else {
type = dns_zone_gettype(zone);
- if (type == dns_zone_slave || type == dns_zone_stub) {
+ if (type == dns_zone_slave || type == dns_zone_mirror ||
+ type == dns_zone_stub)
+ {
dns_zone_refresh(zone);
dns_zone_detach(&zone);
msg = "zone refresh queued";
isc_result_t result;
dns_zone_t *zone = NULL, *raw = NULL;
const char msg1[] = "zone refresh queued";
- const char msg2[] = "not a slave or stub zone";
+ const char msg2[] = "not a slave, mirror, or stub zone";
dns_zonetype_t type;
result = zone_from_args(server, lex, NULL, &zone, NULL,
}
type = dns_zone_gettype(zone);
- if (type == dns_zone_slave || type == dns_zone_stub) {
+ if (type == dns_zone_slave || type == dns_zone_mirror ||
+ type == dns_zone_stub)
+ {
dns_zone_refresh(zone);
dns_zone_detach(&zone);
(void) putstr(text, msg1);
TCHECK(putstr(text, zonename));
TCHECK(putstr(text, "' and associated files will be deleted."));
} else if (dns_zone_gettype(mayberaw) == dns_zone_slave ||
+ dns_zone_gettype(mayberaw) == dns_zone_mirror ||
dns_zone_gettype(mayberaw) == dns_zone_stub)
{
bool first;
/* Refresh/expire times */
if (zonetype == dns_zone_slave ||
+ zonetype == dns_zone_mirror ||
zonetype == dns_zone_stub ||
zonetype == dns_zone_redirect)
{
* master file (if any) is written by the server, rather than being
* updated manually and read by the server.
*
- * This is true for slave zones, stub zones, key zones, and zones that
- * allow dynamic updates either by having an update policy ("ssutable")
- * or an "allow-update" ACL with a value other than exactly "{ none; }".
+ * This is true for slave zones, mirror zones, stub zones, key zones,
+ * and zones that allow dynamic updates either by having an update
+ * policy ("ssutable") or an "allow-update" ACL with a value other than
+ * exactly "{ none; }".
*/
bool
dns_zone_isdynamic(dns_zone_t *zone, bool ignore_freeze) {
REQUIRE(DNS_ZONE_VALID(zone));
- if (zone->type == dns_zone_slave || zone->type == dns_zone_stub ||
- zone->type == dns_zone_key ||
+ if (zone->type == dns_zone_slave || zone->type == dns_zone_mirror ||
+ zone->type == dns_zone_stub || zone->type == dns_zone_key ||
(zone->type == dns_zone_redirect && zone->masters != NULL))
return (true);
goto cleanup;
}
- if ((zone->type == dns_zone_slave || zone->type == dns_zone_stub ||
+ if ((zone->type == dns_zone_slave || zone->type == dns_zone_mirror ||
+ zone->type == dns_zone_stub ||
(zone->type == dns_zone_redirect && zone->masters != NULL)) &&
rbt) {
if (zone->masterfile == NULL ||
}
dns_db_settask(db, zone->task);
- if (zone->type == dns_zone_master || zone->type == dns_zone_slave) {
+ if (zone->type == dns_zone_master || zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror)
+ {
result = dns_db_setgluecachestats(db, zone->gluecachestats);
if (result == ISC_R_NOTIMPLEMENTED) {
result = ISC_R_SUCCESS;
unsigned int options;
options = DNS_MASTER_ZONE | DNS_MASTER_RESIGN;
- if (zone->type == dns_zone_slave ||
+ if (zone->type == dns_zone_slave || zone->type == dns_zone_mirror ||
(zone->type == dns_zone_redirect && zone->masters == NULL))
+ {
options |= DNS_MASTER_SLAVE;
- if (zone->type == dns_zone_key)
+ }
+ if (zone->type == dns_zone_key) {
options |= DNS_MASTER_KEY;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNS))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNS)) {
options |= DNS_MASTER_CHECKNS;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_FATALNS))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_FATALNS)) {
options |= DNS_MASTER_FATALNS;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNAMES))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNAMES)) {
options |= DNS_MASTER_CHECKNAMES;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNAMESFAIL))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKNAMESFAIL)) {
options |= DNS_MASTER_CHECKNAMESFAIL;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKMX))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKMX)) {
options |= DNS_MASTER_CHECKMX;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKMXFAIL))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKMXFAIL)) {
options |= DNS_MASTER_CHECKMXFAIL;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKWILDCARD))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKWILDCARD)) {
options |= DNS_MASTER_CHECKWILDCARD;
- if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKTTL))
+ }
+ if (DNS_ZONE_OPTION(zone, DNS_ZONEOPT_CHECKTTL)) {
options |= DNS_MASTER_CHECKTTL;
+ }
+
return (options);
}
*/
if (result != ISC_R_SUCCESS && result != DNS_R_SEENINCLUDE) {
if (zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_stub ||
(zone->type == dns_zone_redirect &&
zone->masters == NULL)) {
"loaded; checking validity");
/*
- * Master / Slave / Stub zones require both NS and SOA records at
- * the top of the zone.
+ * Master / Slave / Mirror / Stub zones require both NS and SOA records
+ * at the top of the zone.
*/
switch (zone->type) {
case dns_zone_dlz:
case dns_zone_master:
case dns_zone_slave:
+ case dns_zone_mirror:
case dns_zone_stub:
case dns_zone_redirect:
if (soacount != 1) {
DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_HAVETIMERS);
if (zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_stub ||
(zone->type == dns_zone_redirect &&
zone->masters != NULL)) {
isc_mem_put(zone->mctx, inc, sizeof(*inc));
}
if (zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_stub ||
zone->type == dns_zone_key ||
(zone->type == dns_zone_redirect && zone->masters != NULL)) {
while (result == ISC_R_SUCCESS) {
if (errors != NULL && zone->rdclass == dns_rdataclass_in &&
(zone->type == dns_zone_master ||
- zone->type == dns_zone_slave)) {
+ zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror))
+ {
dns_rdata_init(&rdata);
dns_rdataset_current(&rdataset, &rdata);
result = dns_rdata_tostruct(&rdata, &ns, NULL);
break;
/* FALLTHROUGH */
case dns_zone_slave:
+ case dns_zone_mirror:
case dns_zone_stub:
LOCK_ZONE(zone);
if (isc_time_compare(&now, &zone->expiretime) >= 0 &&
break;
/* FALLTHROUGH */
case dns_zone_slave:
+ case dns_zone_mirror:
case dns_zone_stub:
if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DIALREFRESH) &&
isc_time_compare(&now, &zone->refreshtime) >= 0)
/*
* Slaves send notifies before backing up to disk, masters after.
*/
- if (zone->type == dns_zone_slave &&
+ if ((zone->type == dns_zone_slave || zone->type == dns_zone_mirror) &&
(DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDNOTIFY) ||
DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDSTARTUPNOTIFY)) &&
isc_time_compare(&now, &zone->notifytime) >= 0)
switch (zone->type) {
case dns_zone_master:
case dns_zone_slave:
+ case dns_zone_mirror:
case dns_zone_key:
case dns_zone_redirect:
case dns_zone_stub:
master, source);
/* Try with slave with TCP. */
if ((zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_redirect) &&
- DNS_ZONE_OPTION(zone, DNS_ZONEOPT_TRYTCPREFRESH)) {
+ DNS_ZONE_OPTION(zone, DNS_ZONEOPT_TRYTCPREFRESH))
+ {
if (!dns_zonemgr_unreachable(zone->zmgr,
&zone->masteraddr,
&zone->sourceaddr,
*/
if (msg->rcode == dns_rcode_refused &&
(zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_redirect))
+ {
goto tcp_transfer;
+ }
goto next_master;
}
*/
if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) {
if (zone->type == dns_zone_slave ||
- zone->type == dns_zone_redirect) {
+ zone->type == dns_zone_mirror ||
+ zone->type == dns_zone_redirect)
+ {
dns_zone_log(zone, ISC_LOG_INFO,
"refresh: truncated UDP answer, "
"initiating TCP zone xfer "
"refresh: skipping %s as master %s "
"(source %s) is unreachable (cached)",
(zone->type == dns_zone_slave ||
+ zone->type == dns_zone_mirror ||
zone->type == dns_zone_redirect) ?
"zone transfer" : "NS query",
master, source);
isc_event_free(&event);
dns_request_destroy(&zone->request);
if (zone->type == dns_zone_slave ||
- zone->type == dns_zone_redirect) {
+ zone->type == dns_zone_mirror ||
+ zone->type == dns_zone_redirect)
+ {
do_queue_xfrin = true;
} else {
INSIST(zone->type == dns_zone_stub);
break;
case dns_zone_slave:
+ case dns_zone_mirror:
treat_as_slave:
if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDNOTIFY) ||
DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDSTARTUPNOTIFY))