static void
rmzone(isc_task_t *task, isc_event_t *event) {
ns_dzctx_t *dz = (ns_dzctx_t *)event->ev_arg;
- dns_zone_t *zone, *raw = NULL, *mayberaw;
+ dns_zone_t *zone = NULL, *raw = NULL, *mayberaw = NULL;
+ dns_catz_zone_t *catz = NULL;
char zonename[DNS_NAME_FORMATSIZE];
- dns_view_t *view;
- ns_cfgctx_t *cfg;
+ dns_view_t *view = NULL;
+ ns_cfgctx_t *cfg = NULL;
dns_db_t *dbp = NULL;
bool added;
isc_result_t result;
"deleting zone %s in view %s via delzone", zonename,
view->name);
- /* Remove the zone from configuration (and NZF file if applicable) */
+ /*
+ * Remove the zone from configuration (and NZF file if applicable)
+ * (If this is a catalog zone member then nzf_config can be NULL)
+ */
added = dns_zone_getadded(zone);
+ catz = dns_zone_get_parentcatz(zone);
- if (added && cfg != NULL) {
+ if (added && catz == NULL && cfg != NULL) {
#ifdef HAVE_LMDB
/* Make sure we can open the NZD database */
LOCK(&view->new_zone_lock);
if (result != ISC_R_SUCCESS) {
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
- "unable to "
- "delete zone configuration: %s",
+ "unable to delete zone configuration: %s",
isc_result_totext(result));
}
if (result != ISC_R_SUCCESS) {
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
- "unable to "
- "delete zone configuration: %s",
+ "unable to delete zone configuration: %s",
isc_result_totext(result));
}
#endif /* HAVE_LMDB */
if (result != ISC_R_SUCCESS) {
isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL,
NAMED_LOGMODULE_SERVER, ISC_LOG_ERROR,
- "unable to "
- "delete zone configuration: %s",
+ "unable to delete zone configuration: %s",
isc_result_totext(result));
}
}
if (dns_zone_get_rpz_num(zone) != DNS_RPZ_INVALID_NUM) {
TCHECK(putstr(text, "zone '"));
TCHECK(putstr(text, zonename));
- TCHECK(putstr(text, "' cannot be deleted: response-policy "
- "zone."));
+ TCHECK(putstr(text,
+ "' cannot be deleted: response-policy zone."));
result = ISC_R_FAILURE;
goto cleanup;
}