Lines Matching refs:view

96 	dns_view_t *view;  in dns_view_create()  local
107 view = isc_mem_get(mctx, sizeof(*view)); in dns_view_create()
109 view->nta_file = NULL; in dns_view_create()
110 view->mctx = NULL; in dns_view_create()
111 isc_mem_attach(mctx, &view->mctx); in dns_view_create()
112 view->name = isc_mem_strdup(mctx, name); in dns_view_create()
114 result = isc_file_sanitize(NULL, view->name, "nta", buffer, in dns_view_create()
119 view->nta_file = isc_mem_strdup(mctx, buffer); in dns_view_create()
121 isc_mutex_init(&view->lock); in dns_view_create()
123 view->zonetable = NULL; in dns_view_create()
124 result = dns_zt_create(mctx, rdclass, &view->zonetable); in dns_view_create()
133 view->secroots_priv = NULL; in dns_view_create()
134 view->ntatable_priv = NULL; in dns_view_create()
135 view->fwdtable = NULL; in dns_view_create()
136 result = dns_fwdtable_create(mctx, &view->fwdtable); in dns_view_create()
145 view->cache = NULL; in dns_view_create()
146 view->cachedb = NULL; in dns_view_create()
147 ISC_LIST_INIT(view->dlz_searched); in dns_view_create()
148 ISC_LIST_INIT(view->dlz_unsearched); in dns_view_create()
149 view->hints = NULL; in dns_view_create()
150 view->resolver = NULL; in dns_view_create()
151 view->adb = NULL; in dns_view_create()
152 view->requestmgr = NULL; in dns_view_create()
153 view->rdclass = rdclass; in dns_view_create()
154 view->frozen = false; in dns_view_create()
155 view->task = NULL; in dns_view_create()
156 isc_refcount_init(&view->references, 1); in dns_view_create()
157 isc_refcount_init(&view->weakrefs, 1); in dns_view_create()
158 atomic_init(&view->attributes, in dns_view_create()
161 view->statickeys = NULL; in dns_view_create()
162 view->dynamickeys = NULL; in dns_view_create()
163 view->matchclients = NULL; in dns_view_create()
164 view->matchdestinations = NULL; in dns_view_create()
165 view->matchrecursiveonly = false; in dns_view_create()
166 result = dns_tsigkeyring_create(view->mctx, &view->dynamickeys); in dns_view_create()
170 view->peers = NULL; in dns_view_create()
171 view->order = NULL; in dns_view_create()
172 view->delonly = NULL; in dns_view_create()
173 view->rootdelonly = false; in dns_view_create()
174 view->rootexclude = NULL; in dns_view_create()
175 view->adbstats = NULL; in dns_view_create()
176 view->resstats = NULL; in dns_view_create()
177 view->resquerystats = NULL; in dns_view_create()
178 view->cacheshared = false; in dns_view_create()
179 ISC_LIST_INIT(view->dns64); in dns_view_create()
180 view->dns64cnt = 0; in dns_view_create()
185 view->recursion = true; in dns_view_create()
186 view->qminimization = false; in dns_view_create()
187 view->qmin_strict = false; in dns_view_create()
188 view->auth_nxdomain = false; /* Was true in BIND 8 */ in dns_view_create()
189 view->enablevalidation = true; in dns_view_create()
190 view->acceptexpired = false; in dns_view_create()
191 view->use_glue_cache = false; in dns_view_create()
192 view->minimal_any = false; in dns_view_create()
193 view->minimalresponses = dns_minimal_no; in dns_view_create()
194 view->transfer_format = dns_one_answer; in dns_view_create()
195 view->cacheacl = NULL; in dns_view_create()
196 view->cacheonacl = NULL; in dns_view_create()
197 view->checknames = false; in dns_view_create()
198 view->queryacl = NULL; in dns_view_create()
199 view->queryonacl = NULL; in dns_view_create()
200 view->recursionacl = NULL; in dns_view_create()
201 view->recursiononacl = NULL; in dns_view_create()
202 view->sortlist = NULL; in dns_view_create()
203 view->transferacl = NULL; in dns_view_create()
204 view->notifyacl = NULL; in dns_view_create()
205 view->updateacl = NULL; in dns_view_create()
206 view->upfwdacl = NULL; in dns_view_create()
207 view->denyansweracl = NULL; in dns_view_create()
208 view->nocasecompress = NULL; in dns_view_create()
209 view->msgcompression = true; in dns_view_create()
210 view->answeracl_exclude = NULL; in dns_view_create()
211 view->denyanswernames = NULL; in dns_view_create()
212 view->answernames_exclude = NULL; in dns_view_create()
213 view->rrl = NULL; in dns_view_create()
214 view->provideixfr = true; in dns_view_create()
215 view->maxcachettl = 7 * 24 * 3600; in dns_view_create()
216 view->maxncachettl = 3 * 3600; in dns_view_create()
217 view->mincachettl = 0; in dns_view_create()
218 view->minncachettl = 0; in dns_view_create()
219 view->nta_lifetime = 0; in dns_view_create()
220 view->nta_recheck = 0; in dns_view_create()
221 view->prefetch_eligible = 0; in dns_view_create()
222 view->prefetch_trigger = 0; in dns_view_create()
223 view->dstport = 53; in dns_view_create()
224 view->preferred_glue = 0; in dns_view_create()
225 view->flush = false; in dns_view_create()
226 view->maxudp = 0; in dns_view_create()
227 view->staleanswerttl = 1; in dns_view_create()
228 view->staleanswersok = dns_stale_answer_conf; in dns_view_create()
229 view->staleanswersenable = false; in dns_view_create()
230 view->nocookieudp = 0; in dns_view_create()
231 view->padding = 0; in dns_view_create()
232 view->pad_acl = NULL; in dns_view_create()
233 view->maxbits = 0; in dns_view_create()
234 view->rpzs = NULL; in dns_view_create()
235 view->catzs = NULL; in dns_view_create()
236 view->managed_keys = NULL; in dns_view_create()
237 view->redirect = NULL; in dns_view_create()
238 view->redirectzone = NULL; in dns_view_create()
239 dns_fixedname_init(&view->redirectfixed); in dns_view_create()
240 view->requestnsid = false; in dns_view_create()
241 view->sendcookie = true; in dns_view_create()
242 view->requireservercookie = false; in dns_view_create()
243 view->synthfromdnssec = true; in dns_view_create()
244 view->trust_anchor_telemetry = true; in dns_view_create()
245 view->root_key_sentinel = true; in dns_view_create()
246 view->new_zone_dir = NULL; in dns_view_create()
247 view->new_zone_file = NULL; in dns_view_create()
248 view->new_zone_db = NULL; in dns_view_create()
249 view->new_zone_dbenv = NULL; in dns_view_create()
250 view->new_zone_mapsize = 0ULL; in dns_view_create()
251 view->new_zone_config = NULL; in dns_view_create()
252 view->cfg_destroy = NULL; in dns_view_create()
253 view->fail_ttl = 0; in dns_view_create()
254 view->failcache = NULL; in dns_view_create()
255 result = dns_badcache_init(view->mctx, DNS_VIEW_FAILCACHESIZE, in dns_view_create()
256 &view->failcache); in dns_view_create()
260 view->v6bias = 0; in dns_view_create()
261 view->dtenv = NULL; in dns_view_create()
262 view->dttypes = 0; in dns_view_create()
264 view->plugins = NULL; in dns_view_create()
265 view->plugins_free = NULL; in dns_view_create()
266 view->hooktable = NULL; in dns_view_create()
267 view->hooktable_free = NULL; in dns_view_create()
269 isc_mutex_init(&view->new_zone_lock); in dns_view_create()
271 result = dns_order_create(view->mctx, &view->order); in dns_view_create()
276 result = dns_peerlist_new(view->mctx, &view->peers); in dns_view_create()
281 result = dns_aclenv_init(view->mctx, &view->aclenv); in dns_view_create()
286 ISC_LINK_INIT(view, link); in dns_view_create()
287 ISC_EVENT_INIT(&view->resevent, sizeof(view->resevent), 0, NULL, in dns_view_create()
288 DNS_EVENT_VIEWRESSHUTDOWN, resolver_shutdown, view, NULL, in dns_view_create()
290 ISC_EVENT_INIT(&view->adbevent, sizeof(view->adbevent), 0, NULL, in dns_view_create()
291 DNS_EVENT_VIEWADBSHUTDOWN, adb_shutdown, view, NULL, in dns_view_create()
293 ISC_EVENT_INIT(&view->reqevent, sizeof(view->reqevent), 0, NULL, in dns_view_create()
294 DNS_EVENT_VIEWREQSHUTDOWN, req_shutdown, view, NULL, in dns_view_create()
296 view->viewlist = NULL; in dns_view_create()
297 view->magic = DNS_VIEW_MAGIC; in dns_view_create()
299 *viewp = view; in dns_view_create()
304 if (view->peers != NULL) { in dns_view_create()
305 dns_peerlist_detach(&view->peers); in dns_view_create()
309 if (view->order != NULL) { in dns_view_create()
310 dns_order_detach(&view->order); in dns_view_create()
314 isc_mutex_destroy(&view->new_zone_lock); in dns_view_create()
316 dns_badcache_destroy(&view->failcache); in dns_view_create()
319 if (view->dynamickeys != NULL) { in dns_view_create()
320 dns_tsigkeyring_detach(&view->dynamickeys); in dns_view_create()
324 isc_refcount_decrementz(&view->weakrefs); in dns_view_create()
325 isc_refcount_destroy(&view->weakrefs); in dns_view_create()
327 isc_refcount_decrementz(&view->references); in dns_view_create()
328 isc_refcount_destroy(&view->references); in dns_view_create()
330 if (view->fwdtable != NULL) { in dns_view_create()
331 dns_fwdtable_destroy(&view->fwdtable); in dns_view_create()
335 if (view->zonetable != NULL) { in dns_view_create()
336 dns_zt_detach(&view->zonetable); in dns_view_create()
340 isc_mutex_destroy(&view->lock); in dns_view_create()
342 if (view->nta_file != NULL) { in dns_view_create()
343 isc_mem_free(mctx, view->nta_file); in dns_view_create()
347 isc_mem_free(mctx, view->name); in dns_view_create()
348 isc_mem_putanddetach(&view->mctx, view, sizeof(*view)); in dns_view_create()
354 destroy(dns_view_t *view) { in destroy() argument
358 REQUIRE(!ISC_LINK_LINKED(view, link)); in destroy()
359 REQUIRE(RESSHUTDOWN(view)); in destroy()
360 REQUIRE(ADBSHUTDOWN(view)); in destroy()
361 REQUIRE(REQSHUTDOWN(view)); in destroy()
363 isc_refcount_destroy(&view->references); in destroy()
364 isc_refcount_destroy(&view->weakrefs); in destroy()
366 if (view->order != NULL) { in destroy()
367 dns_order_detach(&view->order); in destroy()
369 if (view->peers != NULL) { in destroy()
370 dns_peerlist_detach(&view->peers); in destroy()
373 if (view->dynamickeys != NULL) { in destroy()
384 dns_tsigkeyring_detach(&view->dynamickeys); in destroy()
387 &view->dynamickeys, fp); in destroy()
391 NULL, view->name, "tsigkeys", in destroy()
407 if (view->statickeys != NULL) { in destroy()
408 dns_tsigkeyring_detach(&view->statickeys); in destroy()
410 if (view->adb != NULL) { in destroy()
411 dns_adb_detach(&view->adb); in destroy()
413 if (view->resolver != NULL) { in destroy()
414 dns_resolver_detach(&view->resolver); in destroy()
416 dns_rrl_view_destroy(view); in destroy()
417 if (view->rpzs != NULL) { in destroy()
418 dns_rpz_detach_rpzs(&view->rpzs); in destroy()
420 if (view->catzs != NULL) { in destroy()
421 dns_catz_catzs_detach(&view->catzs); in destroy()
423 for (dlzdb = ISC_LIST_HEAD(view->dlz_searched); dlzdb != NULL; in destroy()
424 dlzdb = ISC_LIST_HEAD(view->dlz_searched)) in destroy()
426 ISC_LIST_UNLINK(view->dlz_searched, dlzdb, link); in destroy()
429 for (dlzdb = ISC_LIST_HEAD(view->dlz_unsearched); dlzdb != NULL; in destroy()
430 dlzdb = ISC_LIST_HEAD(view->dlz_unsearched)) in destroy()
432 ISC_LIST_UNLINK(view->dlz_unsearched, dlzdb, link); in destroy()
435 if (view->requestmgr != NULL) { in destroy()
436 dns_requestmgr_detach(&view->requestmgr); in destroy()
438 if (view->task != NULL) { in destroy()
439 isc_task_detach(&view->task); in destroy()
441 if (view->hints != NULL) { in destroy()
442 dns_db_detach(&view->hints); in destroy()
444 if (view->cachedb != NULL) { in destroy()
445 dns_db_detach(&view->cachedb); in destroy()
447 if (view->cache != NULL) { in destroy()
448 dns_cache_detach(&view->cache); in destroy()
450 if (view->nocasecompress != NULL) { in destroy()
451 dns_acl_detach(&view->nocasecompress); in destroy()
453 if (view->matchclients != NULL) { in destroy()
454 dns_acl_detach(&view->matchclients); in destroy()
456 if (view->matchdestinations != NULL) { in destroy()
457 dns_acl_detach(&view->matchdestinations); in destroy()
459 if (view->cacheacl != NULL) { in destroy()
460 dns_acl_detach(&view->cacheacl); in destroy()
462 if (view->cacheonacl != NULL) { in destroy()
463 dns_acl_detach(&view->cacheonacl); in destroy()
465 if (view->queryacl != NULL) { in destroy()
466 dns_acl_detach(&view->queryacl); in destroy()
468 if (view->queryonacl != NULL) { in destroy()
469 dns_acl_detach(&view->queryonacl); in destroy()
471 if (view->recursionacl != NULL) { in destroy()
472 dns_acl_detach(&view->recursionacl); in destroy()
474 if (view->recursiononacl != NULL) { in destroy()
475 dns_acl_detach(&view->recursiononacl); in destroy()
477 if (view->sortlist != NULL) { in destroy()
478 dns_acl_detach(&view->sortlist); in destroy()
480 if (view->transferacl != NULL) { in destroy()
481 dns_acl_detach(&view->transferacl); in destroy()
483 if (view->notifyacl != NULL) { in destroy()
484 dns_acl_detach(&view->notifyacl); in destroy()
486 if (view->updateacl != NULL) { in destroy()
487 dns_acl_detach(&view->updateacl); in destroy()
489 if (view->upfwdacl != NULL) { in destroy()
490 dns_acl_detach(&view->upfwdacl); in destroy()
492 if (view->denyansweracl != NULL) { in destroy()
493 dns_acl_detach(&view->denyansweracl); in destroy()
495 if (view->pad_acl != NULL) { in destroy()
496 dns_acl_detach(&view->pad_acl); in destroy()
498 if (view->answeracl_exclude != NULL) { in destroy()
499 dns_rbt_destroy(&view->answeracl_exclude); in destroy()
501 if (view->denyanswernames != NULL) { in destroy()
502 dns_rbt_destroy(&view->denyanswernames); in destroy()
504 if (view->answernames_exclude != NULL) { in destroy()
505 dns_rbt_destroy(&view->answernames_exclude); in destroy()
507 if (view->delonly != NULL) { in destroy()
512 name = ISC_LIST_HEAD(view->delonly[i]); in destroy()
514 ISC_LIST_UNLINK(view->delonly[i], name, link); in destroy()
515 dns_name_free(name, view->mctx); in destroy()
516 isc_mem_put(view->mctx, name, sizeof(*name)); in destroy()
517 name = ISC_LIST_HEAD(view->delonly[i]); in destroy()
520 isc_mem_put(view->mctx, view->delonly, in destroy()
522 view->delonly = NULL; in destroy()
524 if (view->rootexclude != NULL) { in destroy()
529 name = ISC_LIST_HEAD(view->rootexclude[i]); in destroy()
531 ISC_LIST_UNLINK(view->rootexclude[i], name, in destroy()
533 dns_name_free(name, view->mctx); in destroy()
534 isc_mem_put(view->mctx, name, sizeof(*name)); in destroy()
535 name = ISC_LIST_HEAD(view->rootexclude[i]); in destroy()
538 isc_mem_put(view->mctx, view->rootexclude, in destroy()
540 view->rootexclude = NULL; in destroy()
542 if (view->adbstats != NULL) { in destroy()
543 isc_stats_detach(&view->adbstats); in destroy()
545 if (view->resstats != NULL) { in destroy()
546 isc_stats_detach(&view->resstats); in destroy()
548 if (view->resquerystats != NULL) { in destroy()
549 dns_stats_detach(&view->resquerystats); in destroy()
551 if (view->secroots_priv != NULL) { in destroy()
552 dns_keytable_detach(&view->secroots_priv); in destroy()
554 if (view->ntatable_priv != NULL) { in destroy()
555 dns_ntatable_detach(&view->ntatable_priv); in destroy()
557 for (dns64 = ISC_LIST_HEAD(view->dns64); dns64 != NULL; in destroy()
558 dns64 = ISC_LIST_HEAD(view->dns64)) in destroy()
560 dns_dns64_unlink(&view->dns64, dns64); in destroy()
563 if (view->managed_keys != NULL) { in destroy()
564 dns_zone_detach(&view->managed_keys); in destroy()
566 if (view->redirect != NULL) { in destroy()
567 dns_zone_detach(&view->redirect); in destroy()
570 if (view->dtenv != NULL) { in destroy()
571 dns_dt_detach(&view->dtenv); in destroy()
574 dns_view_setnewzones(view, false, NULL, NULL, 0ULL); in destroy()
575 if (view->new_zone_file != NULL) { in destroy()
576 isc_mem_free(view->mctx, view->new_zone_file); in destroy()
577 view->new_zone_file = NULL; in destroy()
579 if (view->new_zone_dir != NULL) { in destroy()
580 isc_mem_free(view->mctx, view->new_zone_dir); in destroy()
581 view->new_zone_dir = NULL; in destroy()
584 if (view->new_zone_dbenv != NULL) { in destroy()
585 mdb_env_close((MDB_env *)view->new_zone_dbenv); in destroy()
586 view->new_zone_dbenv = NULL; in destroy()
588 if (view->new_zone_db != NULL) { in destroy()
589 isc_mem_free(view->mctx, view->new_zone_db); in destroy()
590 view->new_zone_db = NULL; in destroy()
593 dns_fwdtable_destroy(&view->fwdtable); in destroy()
594 dns_aclenv_destroy(&view->aclenv); in destroy()
595 if (view->failcache != NULL) { in destroy()
596 dns_badcache_destroy(&view->failcache); in destroy()
598 isc_mutex_destroy(&view->new_zone_lock); in destroy()
599 isc_mutex_destroy(&view->lock); in destroy()
600 isc_refcount_destroy(&view->references); in destroy()
601 isc_refcount_destroy(&view->weakrefs); in destroy()
602 isc_mem_free(view->mctx, view->nta_file); in destroy()
603 isc_mem_free(view->mctx, view->name); in destroy()
604 if (view->hooktable != NULL && view->hooktable_free != NULL) { in destroy()
605 view->hooktable_free(view->mctx, &view->hooktable); in destroy()
607 if (view->plugins != NULL && view->plugins_free != NULL) { in destroy()
608 view->plugins_free(view->mctx, &view->plugins); in destroy()
610 isc_mem_putanddetach(&view->mctx, view, sizeof(*view)); in destroy()
626 dns_view_t *view = *viewp; in view_flushanddetach() local
630 view->flush = flush; in view_flushanddetach()
633 if (isc_refcount_decrement(&view->references) == 1) { in view_flushanddetach()
636 isc_refcount_destroy(&view->references); in view_flushanddetach()
637 if (!RESSHUTDOWN(view)) { in view_flushanddetach()
638 dns_resolver_shutdown(view->resolver); in view_flushanddetach()
640 if (!ADBSHUTDOWN(view)) { in view_flushanddetach()
641 dns_adb_shutdown(view->adb); in view_flushanddetach()
643 if (!REQSHUTDOWN(view)) { in view_flushanddetach()
644 dns_requestmgr_shutdown(view->requestmgr); in view_flushanddetach()
646 LOCK(&view->lock); in view_flushanddetach()
647 if (view->zonetable != NULL) { in view_flushanddetach()
648 if (view->flush) { in view_flushanddetach()
649 dns_zt_flushanddetach(&view->zonetable); in view_flushanddetach()
651 dns_zt_detach(&view->zonetable); in view_flushanddetach()
654 if (view->managed_keys != NULL) { in view_flushanddetach()
655 mkzone = view->managed_keys; in view_flushanddetach()
656 view->managed_keys = NULL; in view_flushanddetach()
657 if (view->flush) { in view_flushanddetach()
661 if (view->redirect != NULL) { in view_flushanddetach()
662 rdzone = view->redirect; in view_flushanddetach()
663 view->redirect = NULL; in view_flushanddetach()
664 if (view->flush) { in view_flushanddetach()
668 if (view->catzs != NULL) { in view_flushanddetach()
669 dns_catz_catzs_detach(&view->catzs); in view_flushanddetach()
671 if (view->ntatable_priv != NULL) { in view_flushanddetach()
672 dns_ntatable_shutdown(view->ntatable_priv); in view_flushanddetach()
674 UNLOCK(&view->lock); in view_flushanddetach()
685 dns_view_weakdetach(&view); in view_flushanddetach()
707 dns_view_dialup(dns_view_t *view) { in dns_view_dialup() argument
708 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_dialup()
709 REQUIRE(view->zonetable != NULL); in dns_view_dialup()
711 (void)dns_zt_apply(view->zonetable, isc_rwlocktype_read, false, NULL, in dns_view_dialup()
727 dns_view_t *view; in dns_view_weakdetach() local
730 view = *viewp; in dns_view_weakdetach()
732 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_weakdetach()
734 if (isc_refcount_decrement(&view->weakrefs) == 1) { in dns_view_weakdetach()
735 destroy(view); in dns_view_weakdetach()
741 dns_view_t *view = event->ev_arg; in resolver_shutdown() local
744 REQUIRE(DNS_VIEW_VALID(view)); in resolver_shutdown()
745 REQUIRE(view->task == task); in resolver_shutdown()
751 atomic_fetch_or(&view->attributes, DNS_VIEWATTR_RESSHUTDOWN); in resolver_shutdown()
752 dns_view_weakdetach(&view); in resolver_shutdown()
757 dns_view_t *view = event->ev_arg; in adb_shutdown() local
760 REQUIRE(DNS_VIEW_VALID(view)); in adb_shutdown()
761 REQUIRE(view->task == task); in adb_shutdown()
767 atomic_fetch_or(&view->attributes, DNS_VIEWATTR_ADBSHUTDOWN); in adb_shutdown()
769 dns_view_weakdetach(&view); in adb_shutdown()
774 dns_view_t *view = event->ev_arg; in req_shutdown() local
777 REQUIRE(DNS_VIEW_VALID(view)); in req_shutdown()
778 REQUIRE(view->task == task); in req_shutdown()
784 atomic_fetch_or(&view->attributes, DNS_VIEWATTR_REQSHUTDOWN); in req_shutdown()
786 dns_view_weakdetach(&view); in req_shutdown()
790 dns_view_createzonetable(dns_view_t *view) { in dns_view_createzonetable() argument
791 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_createzonetable()
792 REQUIRE(!view->frozen); in dns_view_createzonetable()
793 REQUIRE(view->zonetable == NULL); in dns_view_createzonetable()
795 return (dns_zt_create(view->mctx, view->rdclass, &view->zonetable)); in dns_view_createzonetable()
799 dns_view_createresolver(dns_view_t *view, isc_taskmgr_t *taskmgr, in dns_view_createresolver() argument
809 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_createresolver()
810 REQUIRE(!view->frozen); in dns_view_createresolver()
811 REQUIRE(view->resolver == NULL); in dns_view_createresolver()
813 result = isc_task_create(taskmgr, 0, &view->task); in dns_view_createresolver()
817 isc_task_setname(view->task, "view", view); in dns_view_createresolver()
819 result = dns_resolver_create(view, taskmgr, ntasks, ndisp, socketmgr, in dns_view_createresolver()
821 dispatchv6, &view->resolver); in dns_view_createresolver()
823 isc_task_detach(&view->task); in dns_view_createresolver()
826 event = &view->resevent; in dns_view_createresolver()
827 dns_resolver_whenshutdown(view->resolver, view->task, &event); in dns_view_createresolver()
828 atomic_fetch_and(&view->attributes, ~DNS_VIEWATTR_RESSHUTDOWN); in dns_view_createresolver()
829 isc_refcount_increment(&view->weakrefs); in dns_view_createresolver()
833 result = dns_adb_create(mctx, view, timermgr, taskmgr, &view->adb); in dns_view_createresolver()
837 dns_resolver_shutdown(view->resolver); in dns_view_createresolver()
840 event = &view->adbevent; in dns_view_createresolver()
841 dns_adb_whenshutdown(view->adb, view->task, &event); in dns_view_createresolver()
842 atomic_fetch_and(&view->attributes, ~DNS_VIEWATTR_ADBSHUTDOWN); in dns_view_createresolver()
843 isc_refcount_increment(&view->weakrefs); in dns_view_createresolver()
845 result = dns_requestmgr_create(view->mctx, timermgr, socketmgr, in dns_view_createresolver()
846 dns_resolver_taskmgr(view->resolver), in dns_view_createresolver()
847 dns_resolver_dispatchmgr(view->resolver), in dns_view_createresolver()
849 &view->requestmgr); in dns_view_createresolver()
851 dns_adb_shutdown(view->adb); in dns_view_createresolver()
852 dns_resolver_shutdown(view->resolver); in dns_view_createresolver()
855 event = &view->reqevent; in dns_view_createresolver()
856 dns_requestmgr_whenshutdown(view->requestmgr, view->task, &event); in dns_view_createresolver()
857 atomic_fetch_and(&view->attributes, ~DNS_VIEWATTR_REQSHUTDOWN); in dns_view_createresolver()
858 isc_refcount_increment(&view->weakrefs); in dns_view_createresolver()
864 dns_view_setcache(dns_view_t *view, dns_cache_t *cache, bool shared) { in dns_view_setcache() argument
865 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setcache()
866 REQUIRE(!view->frozen); in dns_view_setcache()
868 view->cacheshared = shared; in dns_view_setcache()
869 if (view->cache != NULL) { in dns_view_setcache()
870 dns_db_detach(&view->cachedb); in dns_view_setcache()
871 dns_cache_detach(&view->cache); in dns_view_setcache()
873 dns_cache_attach(cache, &view->cache); in dns_view_setcache()
874 dns_cache_attachdb(cache, &view->cachedb); in dns_view_setcache()
875 INSIST(DNS_DB_VALID(view->cachedb)); in dns_view_setcache()
879 dns_view_iscacheshared(dns_view_t *view) { in dns_view_iscacheshared() argument
880 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_iscacheshared()
882 return (view->cacheshared); in dns_view_iscacheshared()
886 dns_view_sethints(dns_view_t *view, dns_db_t *hints) { in dns_view_sethints() argument
887 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_sethints()
888 REQUIRE(!view->frozen); in dns_view_sethints()
889 REQUIRE(view->hints == NULL); in dns_view_sethints()
892 dns_db_attach(hints, &view->hints); in dns_view_sethints()
896 dns_view_setkeyring(dns_view_t *view, dns_tsig_keyring_t *ring) { in dns_view_setkeyring() argument
897 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setkeyring()
899 if (view->statickeys != NULL) { in dns_view_setkeyring()
900 dns_tsigkeyring_detach(&view->statickeys); in dns_view_setkeyring()
902 dns_tsigkeyring_attach(ring, &view->statickeys); in dns_view_setkeyring()
906 dns_view_setdynamickeyring(dns_view_t *view, dns_tsig_keyring_t *ring) { in dns_view_setdynamickeyring() argument
907 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setdynamickeyring()
909 if (view->dynamickeys != NULL) { in dns_view_setdynamickeyring()
910 dns_tsigkeyring_detach(&view->dynamickeys); in dns_view_setdynamickeyring()
912 dns_tsigkeyring_attach(ring, &view->dynamickeys); in dns_view_setdynamickeyring()
916 dns_view_getdynamickeyring(dns_view_t *view, dns_tsig_keyring_t **ringp) { in dns_view_getdynamickeyring() argument
917 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getdynamickeyring()
919 if (view->dynamickeys != NULL) { in dns_view_getdynamickeyring()
920 dns_tsigkeyring_attach(view->dynamickeys, ringp); in dns_view_getdynamickeyring()
925 dns_view_restorekeyring(dns_view_t *view) { in dns_view_restorekeyring() argument
930 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_restorekeyring()
932 if (view->dynamickeys != NULL) { in dns_view_restorekeyring()
933 result = isc_file_sanitize(NULL, view->name, "tsigkeys", in dns_view_restorekeyring()
938 dns_keyring_restore(view->dynamickeys, fp); in dns_view_restorekeyring()
946 dns_view_setdstport(dns_view_t *view, in_port_t dstport) { in dns_view_setdstport() argument
947 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setdstport()
948 view->dstport = dstport; in dns_view_setdstport()
952 dns_view_freeze(dns_view_t *view) { in dns_view_freeze() argument
953 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_freeze()
954 REQUIRE(!view->frozen); in dns_view_freeze()
956 if (view->resolver != NULL) { in dns_view_freeze()
957 INSIST(view->cachedb != NULL); in dns_view_freeze()
958 dns_resolver_freeze(view->resolver); in dns_view_freeze()
960 view->frozen = true; in dns_view_freeze()
964 dns_view_thaw(dns_view_t *view) { in dns_view_thaw() argument
965 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_thaw()
966 REQUIRE(view->frozen); in dns_view_thaw()
968 view->frozen = false; in dns_view_thaw()
972 dns_view_addzone(dns_view_t *view, dns_zone_t *zone) { in dns_view_addzone() argument
975 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_addzone()
976 REQUIRE(!view->frozen); in dns_view_addzone()
977 REQUIRE(view->zonetable != NULL); in dns_view_addzone()
979 result = dns_zt_mount(view->zonetable, zone); in dns_view_addzone()
985 dns_view_findzone(dns_view_t *view, const dns_name_t *name, in dns_view_findzone() argument
989 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_findzone()
991 LOCK(&view->lock); in dns_view_findzone()
992 if (view->zonetable != NULL) { in dns_view_findzone()
993 result = dns_zt_find(view->zonetable, name, 0, NULL, zonep); in dns_view_findzone()
1001 UNLOCK(&view->lock); in dns_view_findzone()
1007 dns_view_find(dns_view_t *view, const dns_name_t *name, dns_rdatatype_t type, in dns_view_find() argument
1024 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_find()
1025 REQUIRE(view->frozen); in dns_view_find()
1045 LOCK(&view->lock); in dns_view_find()
1046 if (view->zonetable != NULL) { in dns_view_find()
1047 result = dns_zt_find(view->zonetable, name, DNS_ZTFIND_MIRROR, in dns_view_find()
1052 UNLOCK(&view->lock); in dns_view_find()
1060 if (result != ISC_R_SUCCESS && view->cachedb != NULL) { in dns_view_find()
1061 dns_db_attach(view->cachedb, &db); in dns_view_find()
1070 } else if (result == ISC_R_NOTFOUND && view->cachedb != NULL) { in dns_view_find()
1071 dns_db_attach(view->cachedb, &db); in dns_view_find()
1099 if (view->cachedb != NULL && !is_staticstub_zone) { in dns_view_find()
1108 dns_db_attach(view->cachedb, &db); in dns_view_find()
1138 if (view->cachedb != NULL && !is_staticstub_zone) { in dns_view_find()
1156 dns_db_attach(view->cachedb, &db); in dns_view_find()
1165 if (result == ISC_R_NOTFOUND && use_hints && view->hints != NULL) { in dns_view_find()
1180 result = dns_db_find(view->hints, name, NULL, type, options, in dns_view_find()
1188 dns_resolver_prime(view->resolver); in dns_view_find()
1189 dns_db_attach(view->hints, &db); in dns_view_find()
1192 dns_db_attach(view->hints, &db); in dns_view_find()
1202 dns_db_detachnode(view->hints, &node); in dns_view_find()
1246 dns_view_simplefind(dns_view_t *view, const dns_name_t *name, in dns_view_simplefind() argument
1254 result = dns_view_find(view, name, type, now, options, use_hints, false, in dns_view_simplefind()
1292 dns_view_findzonecut(dns_view_t *view, const dns_name_t *name, in dns_view_findzonecut() argument
1305 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_findzonecut()
1306 REQUIRE(view->frozen); in dns_view_findzonecut()
1324 LOCK(&view->lock); in dns_view_findzonecut()
1325 if (view->zonetable != NULL) { in dns_view_findzonecut()
1329 result = dns_zt_find(view->zonetable, name, ztoptions, NULL, in dns_view_findzonecut()
1334 UNLOCK(&view->lock); in dns_view_findzonecut()
1344 if (use_cache && view->cachedb != NULL) { in dns_view_findzonecut()
1348 dns_db_attach(view->cachedb, &db); in dns_view_findzonecut()
1349 } else if (use_hints && view->hints != NULL) { in dns_view_findzonecut()
1380 if (use_cache && view->cachedb != NULL && db != view->hints) { in dns_view_findzonecut()
1395 dns_db_attach(view->cachedb, &db); in dns_view_findzonecut()
1422 } else if (use_hints && view->hints != NULL) { in dns_view_findzonecut()
1463 result = dns_db_find(view->hints, dns_rootname, NULL, in dns_view_findzonecut()
1500 dns_view_t *view; in dns_viewlist_find() local
1504 for (view = ISC_LIST_HEAD(*list); view != NULL; in dns_viewlist_find()
1505 view = ISC_LIST_NEXT(view, link)) in dns_viewlist_find()
1507 if (strcmp(view->name, name) == 0 && view->rdclass == rdclass) { in dns_viewlist_find()
1511 if (view == NULL) { in dns_viewlist_find()
1515 dns_view_attach(view, viewp); in dns_viewlist_find()
1524 dns_view_t *view; in dns_viewlist_findzone() local
1532 for (view = ISC_LIST_HEAD(*list); view != NULL; in dns_viewlist_findzone()
1533 view = ISC_LIST_NEXT(view, link)) in dns_viewlist_findzone()
1535 if (!allclasses && view->rdclass != rdclass) { in dns_viewlist_findzone()
1544 LOCK(&view->lock); in dns_viewlist_findzone()
1545 if (view->zonetable != NULL) { in dns_viewlist_findzone()
1546 result = dns_zt_find(view->zonetable, name, 0, NULL, in dns_viewlist_findzone()
1551 UNLOCK(&view->lock); in dns_viewlist_findzone()
1579 dns_view_load(dns_view_t *view, bool stop, bool newonly) { in dns_view_load() argument
1580 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_load()
1581 REQUIRE(view->zonetable != NULL); in dns_view_load()
1583 return (dns_zt_load(view->zonetable, stop, newonly)); in dns_view_load()
1587 dns_view_asyncload(dns_view_t *view, bool newonly, dns_zt_allloaded_t callback, in dns_view_asyncload() argument
1589 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_asyncload()
1590 REQUIRE(view->zonetable != NULL); in dns_view_asyncload()
1592 return (dns_zt_asyncload(view->zonetable, newonly, callback, arg)); in dns_view_asyncload()
1596 dns_view_gettsig(dns_view_t *view, const dns_name_t *keyname, in dns_view_gettsig() argument
1601 result = dns_tsigkey_find(keyp, keyname, NULL, view->statickeys); in dns_view_gettsig()
1604 view->dynamickeys); in dns_view_gettsig()
1610 dns_view_getpeertsig(dns_view_t *view, const isc_netaddr_t *peeraddr, in dns_view_getpeertsig() argument
1616 result = dns_peerlist_peerbyaddr(view->peers, peeraddr, &peer); in dns_view_getpeertsig()
1626 result = dns_view_gettsig(view, keyname, keyp); in dns_view_getpeertsig()
1631 dns_view_checksig(dns_view_t *view, isc_buffer_t *source, dns_message_t *msg) { in dns_view_checksig() argument
1632 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_checksig()
1635 return (dns_tsig_verify(source, msg, view->statickeys, in dns_view_checksig()
1636 view->dynamickeys)); in dns_view_checksig()
1640 dns_view_dumpdbtostream(dns_view_t *view, FILE *fp) { in dns_view_dumpdbtostream() argument
1643 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_dumpdbtostream()
1645 (void)fprintf(fp, ";\n; Cache dump of view '%s'\n;\n", view->name); in dns_view_dumpdbtostream()
1646 result = dns_master_dumptostream(view->mctx, view->cachedb, NULL, in dns_view_dumpdbtostream()
1652 dns_adb_dump(view->adb, fp); in dns_view_dumpdbtostream()
1653 dns_resolver_printbadcache(view->resolver, fp); in dns_view_dumpdbtostream()
1654 dns_badcache_print(view->failcache, "SERVFAIL cache", fp); in dns_view_dumpdbtostream()
1659 dns_view_flushcache(dns_view_t *view, bool fixuponly) { in dns_view_flushcache() argument
1662 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_flushcache()
1664 if (view->cachedb == NULL) { in dns_view_flushcache()
1668 result = dns_cache_flush(view->cache); in dns_view_flushcache()
1673 dns_db_detach(&view->cachedb); in dns_view_flushcache()
1674 dns_cache_attachdb(view->cache, &view->cachedb); in dns_view_flushcache()
1675 if (view->resolver != NULL) { in dns_view_flushcache()
1676 dns_resolver_flushbadcache(view->resolver, NULL); in dns_view_flushcache()
1678 if (view->failcache != NULL) { in dns_view_flushcache()
1679 dns_badcache_flush(view->failcache); in dns_view_flushcache()
1682 dns_adb_flush(view->adb); in dns_view_flushcache()
1687 dns_view_flushname(dns_view_t *view, const dns_name_t *name) { in dns_view_flushname() argument
1688 return (dns_view_flushnode(view, name, false)); in dns_view_flushname()
1692 dns_view_flushnode(dns_view_t *view, const dns_name_t *name, bool tree) { in dns_view_flushnode() argument
1695 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_flushnode()
1698 if (view->adb != NULL) { in dns_view_flushnode()
1699 dns_adb_flushnames(view->adb, name); in dns_view_flushnode()
1701 if (view->resolver != NULL) { in dns_view_flushnode()
1702 dns_resolver_flushbadnames(view->resolver, name); in dns_view_flushnode()
1704 if (view->failcache != NULL) { in dns_view_flushnode()
1705 dns_badcache_flushtree(view->failcache, name); in dns_view_flushnode()
1708 if (view->adb != NULL) { in dns_view_flushnode()
1709 dns_adb_flushname(view->adb, name); in dns_view_flushnode()
1711 if (view->resolver != NULL) { in dns_view_flushnode()
1712 dns_resolver_flushbadcache(view->resolver, name); in dns_view_flushnode()
1714 if (view->failcache != NULL) { in dns_view_flushnode()
1715 dns_badcache_flushname(view->failcache, name); in dns_view_flushnode()
1719 if (view->cache != NULL) { in dns_view_flushnode()
1720 result = dns_cache_flushnode(view->cache, name, tree); in dns_view_flushnode()
1727 dns_view_adddelegationonly(dns_view_t *view, const dns_name_t *name) { in dns_view_adddelegationonly() argument
1731 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_adddelegationonly()
1733 if (view->delonly == NULL) { in dns_view_adddelegationonly()
1734 view->delonly = isc_mem_get(view->mctx, in dns_view_adddelegationonly()
1738 ISC_LIST_INIT(view->delonly[hash]); in dns_view_adddelegationonly()
1742 item = ISC_LIST_HEAD(view->delonly[hash]); in dns_view_adddelegationonly()
1749 item = isc_mem_get(view->mctx, sizeof(*item)); in dns_view_adddelegationonly()
1751 dns_name_dup(name, view->mctx, item); in dns_view_adddelegationonly()
1752 ISC_LIST_APPEND(view->delonly[hash], item, link); in dns_view_adddelegationonly()
1757 dns_view_excludedelegationonly(dns_view_t *view, const dns_name_t *name) { in dns_view_excludedelegationonly() argument
1761 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_excludedelegationonly()
1763 if (view->rootexclude == NULL) { in dns_view_excludedelegationonly()
1764 view->rootexclude = isc_mem_get(view->mctx, in dns_view_excludedelegationonly()
1768 ISC_LIST_INIT(view->rootexclude[hash]); in dns_view_excludedelegationonly()
1772 item = ISC_LIST_HEAD(view->rootexclude[hash]); in dns_view_excludedelegationonly()
1779 item = isc_mem_get(view->mctx, sizeof(*item)); in dns_view_excludedelegationonly()
1781 dns_name_dup(name, view->mctx, item); in dns_view_excludedelegationonly()
1782 ISC_LIST_APPEND(view->rootexclude[hash], item, link); in dns_view_excludedelegationonly()
1787 dns_view_isdelegationonly(dns_view_t *view, const dns_name_t *name) { in dns_view_isdelegationonly() argument
1791 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_isdelegationonly()
1793 if (!view->rootdelonly && view->delonly == NULL) { in dns_view_isdelegationonly()
1798 if (view->rootdelonly && dns_name_countlabels(name) <= 2) { in dns_view_isdelegationonly()
1799 if (view->rootexclude == NULL) { in dns_view_isdelegationonly()
1802 item = ISC_LIST_HEAD(view->rootexclude[hash]); in dns_view_isdelegationonly()
1811 if (view->delonly == NULL) { in dns_view_isdelegationonly()
1815 item = ISC_LIST_HEAD(view->delonly[hash]); in dns_view_isdelegationonly()
1826 dns_view_setrootdelonly(dns_view_t *view, bool value) { in dns_view_setrootdelonly() argument
1827 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setrootdelonly()
1828 view->rootdelonly = value; in dns_view_setrootdelonly()
1832 dns_view_getrootdelonly(dns_view_t *view) { in dns_view_getrootdelonly() argument
1833 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getrootdelonly()
1834 return (view->rootdelonly); in dns_view_getrootdelonly()
1838 dns_view_freezezones(dns_view_t *view, bool value) { in dns_view_freezezones() argument
1839 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_freezezones()
1840 REQUIRE(view->zonetable != NULL); in dns_view_freezezones()
1842 return (dns_zt_freezezones(view->zonetable, view, value)); in dns_view_freezezones()
1846 dns_view_setadbstats(dns_view_t *view, isc_stats_t *stats) { in dns_view_setadbstats() argument
1847 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setadbstats()
1848 REQUIRE(!view->frozen); in dns_view_setadbstats()
1849 REQUIRE(view->adbstats == NULL); in dns_view_setadbstats()
1851 isc_stats_attach(stats, &view->adbstats); in dns_view_setadbstats()
1855 dns_view_getadbstats(dns_view_t *view, isc_stats_t **statsp) { in dns_view_getadbstats() argument
1856 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getadbstats()
1859 if (view->adbstats != NULL) { in dns_view_getadbstats()
1860 isc_stats_attach(view->adbstats, statsp); in dns_view_getadbstats()
1865 dns_view_setresstats(dns_view_t *view, isc_stats_t *stats) { in dns_view_setresstats() argument
1866 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setresstats()
1867 REQUIRE(!view->frozen); in dns_view_setresstats()
1868 REQUIRE(view->resstats == NULL); in dns_view_setresstats()
1870 isc_stats_attach(stats, &view->resstats); in dns_view_setresstats()
1874 dns_view_getresstats(dns_view_t *view, isc_stats_t **statsp) { in dns_view_getresstats() argument
1875 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getresstats()
1878 if (view->resstats != NULL) { in dns_view_getresstats()
1879 isc_stats_attach(view->resstats, statsp); in dns_view_getresstats()
1884 dns_view_setresquerystats(dns_view_t *view, dns_stats_t *stats) { in dns_view_setresquerystats() argument
1885 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setresquerystats()
1886 REQUIRE(!view->frozen); in dns_view_setresquerystats()
1887 REQUIRE(view->resquerystats == NULL); in dns_view_setresquerystats()
1889 dns_stats_attach(stats, &view->resquerystats); in dns_view_setresquerystats()
1893 dns_view_getresquerystats(dns_view_t *view, dns_stats_t **statsp) { in dns_view_getresquerystats() argument
1894 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getresquerystats()
1897 if (view->resquerystats != NULL) { in dns_view_getresquerystats()
1898 dns_stats_attach(view->resquerystats, statsp); in dns_view_getresquerystats()
1903 dns_view_initntatable(dns_view_t *view, isc_taskmgr_t *taskmgr, in dns_view_initntatable() argument
1905 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_initntatable()
1906 if (view->ntatable_priv != NULL) { in dns_view_initntatable()
1907 dns_ntatable_detach(&view->ntatable_priv); in dns_view_initntatable()
1909 return (dns_ntatable_create(view, taskmgr, timermgr, in dns_view_initntatable()
1910 &view->ntatable_priv)); in dns_view_initntatable()
1914 dns_view_getntatable(dns_view_t *view, dns_ntatable_t **ntp) { in dns_view_getntatable() argument
1915 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getntatable()
1917 if (view->ntatable_priv == NULL) { in dns_view_getntatable()
1920 dns_ntatable_attach(view->ntatable_priv, ntp); in dns_view_getntatable()
1925 dns_view_initsecroots(dns_view_t *view, isc_mem_t *mctx) { in dns_view_initsecroots() argument
1926 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_initsecroots()
1927 if (view->secroots_priv != NULL) { in dns_view_initsecroots()
1928 dns_keytable_detach(&view->secroots_priv); in dns_view_initsecroots()
1930 return (dns_keytable_create(mctx, &view->secroots_priv)); in dns_view_initsecroots()
1934 dns_view_getsecroots(dns_view_t *view, dns_keytable_t **ktp) { in dns_view_getsecroots() argument
1935 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getsecroots()
1937 if (view->secroots_priv == NULL) { in dns_view_getsecroots()
1940 dns_keytable_attach(view->secroots_priv, ktp); in dns_view_getsecroots()
1945 dns_view_ntacovers(dns_view_t *view, isc_stdtime_t now, const dns_name_t *name, in dns_view_ntacovers() argument
1947 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_ntacovers()
1949 if (view->ntatable_priv == NULL) { in dns_view_ntacovers()
1953 return (dns_ntatable_covered(view->ntatable_priv, now, name, anchor)); in dns_view_ntacovers()
1957 dns_view_issecuredomain(dns_view_t *view, const dns_name_t *name, in dns_view_issecuredomain() argument
1965 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_issecuredomain()
1967 if (view->secroots_priv == NULL) { in dns_view_issecuredomain()
1973 result = dns_keytable_issecuredomain(view->secroots_priv, name, anchor, in dns_view_issecuredomain()
1982 if (checknta && secure && view->ntatable_priv != NULL && in dns_view_issecuredomain()
1983 dns_ntatable_covered(view->ntatable_priv, now, name, anchor)) in dns_view_issecuredomain()
1996 dns_view_untrust(dns_view_t *view, const dns_name_t *keyname, in dns_view_untrust() argument
2002 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_untrust()
2006 result = dns_view_getsecroots(view, &sr); in dns_view_untrust()
2034 dns_view_istrusted(dns_view_t *view, const dns_name_t *keyname, in dns_view_istrusted() argument
2042 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_istrusted()
2046 result = dns_view_getsecroots(view, &sr); in dns_view_istrusted()
2165 dns_view_setnewzones(dns_view_t *view, bool allow, void *cfgctx, in dns_view_setnewzones() argument
2178 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setnewzones()
2181 if (view->new_zone_file != NULL) { in dns_view_setnewzones()
2182 isc_mem_free(view->mctx, view->new_zone_file); in dns_view_setnewzones()
2183 view->new_zone_file = NULL; in dns_view_setnewzones()
2187 if (view->new_zone_dbenv != NULL) { in dns_view_setnewzones()
2188 mdb_env_close((MDB_env *)view->new_zone_dbenv); in dns_view_setnewzones()
2189 view->new_zone_dbenv = NULL; in dns_view_setnewzones()
2192 if (view->new_zone_db != NULL) { in dns_view_setnewzones()
2193 isc_mem_free(view->mctx, view->new_zone_db); in dns_view_setnewzones()
2194 view->new_zone_db = NULL; in dns_view_setnewzones()
2198 if (view->new_zone_config != NULL) { in dns_view_setnewzones()
2199 view->cfg_destroy(&view->new_zone_config); in dns_view_setnewzones()
2200 view->cfg_destroy = NULL; in dns_view_setnewzones()
2207 CHECK(nz_legacy(view->new_zone_dir, view->name, "nzf", buffer, in dns_view_setnewzones()
2210 view->new_zone_file = isc_mem_strdup(view->mctx, buffer); in dns_view_setnewzones()
2213 CHECK(nz_legacy(view->new_zone_dir, view->name, "nzd", buffer, in dns_view_setnewzones()
2216 view->new_zone_db = isc_mem_strdup(view->mctx, buffer); in dns_view_setnewzones()
2236 view->new_zone_mapsize = mapsize; in dns_view_setnewzones()
2239 status = mdb_env_open(env, view->new_zone_db, DNS_LMDB_FLAGS, 0600); in dns_view_setnewzones()
2244 view->new_zone_db, mdb_strerror(status)); in dns_view_setnewzones()
2248 view->new_zone_dbenv = env; in dns_view_setnewzones()
2252 view->new_zone_config = cfgctx; in dns_view_setnewzones()
2253 view->cfg_destroy = cfg_destroy; in dns_view_setnewzones()
2257 if (view->new_zone_file != NULL) { in dns_view_setnewzones()
2258 isc_mem_free(view->mctx, view->new_zone_file); in dns_view_setnewzones()
2259 view->new_zone_file = NULL; in dns_view_setnewzones()
2263 if (view->new_zone_db != NULL) { in dns_view_setnewzones()
2264 isc_mem_free(view->mctx, view->new_zone_db); in dns_view_setnewzones()
2265 view->new_zone_db = NULL; in dns_view_setnewzones()
2271 view->new_zone_config = NULL; in dns_view_setnewzones()
2272 view->cfg_destroy = NULL; in dns_view_setnewzones()
2279 dns_view_setnewzonedir(dns_view_t *view, const char *dir) { in dns_view_setnewzonedir() argument
2280 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setnewzonedir()
2282 if (view->new_zone_dir != NULL) { in dns_view_setnewzonedir()
2283 isc_mem_free(view->mctx, view->new_zone_dir); in dns_view_setnewzonedir()
2284 view->new_zone_dir = NULL; in dns_view_setnewzonedir()
2291 view->new_zone_dir = isc_mem_strdup(view->mctx, dir); in dns_view_setnewzonedir()
2295 dns_view_getnewzonedir(dns_view_t *view) { in dns_view_getnewzonedir() argument
2296 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getnewzonedir()
2298 return (view->new_zone_dir); in dns_view_getnewzonedir()
2302 dns_view_searchdlz(dns_view_t *view, const dns_name_t *name, in dns_view_searchdlz() argument
2317 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_searchdlz()
2327 for (dlzdb = ISC_LIST_HEAD(view->dlz_searched); dlzdb != NULL; in dns_view_searchdlz()
2354 view->rdclass, zonename, methods, in dns_view_searchdlz()
2388 dns_view_getfailttl(dns_view_t *view) { in dns_view_getfailttl() argument
2389 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_getfailttl()
2390 return (view->fail_ttl); in dns_view_getfailttl()
2394 dns_view_setfailttl(dns_view_t *view, uint32_t fail_ttl) { in dns_view_setfailttl() argument
2395 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setfailttl()
2396 view->fail_ttl = fail_ttl; in dns_view_setfailttl()
2400 dns_view_saventa(dns_view_t *view) { in dns_view_saventa() argument
2406 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_saventa()
2408 if (view->nta_lifetime == 0) { in dns_view_saventa()
2413 CHECK(isc_stdio_open(view->nta_file, "w", &fp)); in dns_view_saventa()
2415 result = dns_view_getntatable(view, &ntatable); in dns_view_saventa()
2444 (void)isc_file_remove(view->nta_file); in dns_view_saventa()
2454 dns_view_loadnta(dns_view_t *view) { in dns_view_loadnta() argument
2461 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_loadnta()
2463 if (view->nta_lifetime == 0) { in dns_view_loadnta()
2467 CHECK(isc_lex_create(view->mctx, 1025, &lex)); in dns_view_loadnta()
2468 CHECK(isc_lex_openfile(lex, view->nta_file)); in dns_view_loadnta()
2469 CHECK(dns_view_getntatable(view, &ntatable)); in dns_view_loadnta()
2561 dns_view_setviewcommit(dns_view_t *view) { in dns_view_setviewcommit() argument
2564 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setviewcommit()
2566 LOCK(&view->lock); in dns_view_setviewcommit()
2568 if (view->redirect != NULL) { in dns_view_setviewcommit()
2569 dns_zone_attach(view->redirect, &redirect); in dns_view_setviewcommit()
2571 if (view->managed_keys != NULL) { in dns_view_setviewcommit()
2572 dns_zone_attach(view->managed_keys, &managed_keys); in dns_view_setviewcommit()
2574 if (view->zonetable != NULL) { in dns_view_setviewcommit()
2575 dns_zt_setviewcommit(view->zonetable); in dns_view_setviewcommit()
2578 UNLOCK(&view->lock); in dns_view_setviewcommit()
2591 dns_view_setviewrevert(dns_view_t *view) { in dns_view_setviewrevert() argument
2595 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_setviewrevert()
2601 LOCK(&view->lock); in dns_view_setviewrevert()
2602 if (view->redirect != NULL) { in dns_view_setviewrevert()
2603 dns_zone_attach(view->redirect, &redirect); in dns_view_setviewrevert()
2605 if (view->managed_keys != NULL) { in dns_view_setviewrevert()
2606 dns_zone_attach(view->managed_keys, &managed_keys); in dns_view_setviewrevert()
2608 zonetable = view->zonetable; in dns_view_setviewrevert()
2609 UNLOCK(&view->lock); in dns_view_setviewrevert()
2625 dns_view_staleanswerenabled(dns_view_t *view) { in dns_view_staleanswerenabled() argument
2629 REQUIRE(DNS_VIEW_VALID(view)); in dns_view_staleanswerenabled()
2631 if (dns_db_getservestalettl(view->cachedb, &stale_ttl) != ISC_R_SUCCESS) in dns_view_staleanswerenabled()
2636 if (view->staleanswersok == dns_stale_answer_yes) { in dns_view_staleanswerenabled()
2638 } else if (view->staleanswersok == dns_stale_answer_conf) { in dns_view_staleanswerenabled()
2639 result = view->staleanswersenable; in dns_view_staleanswerenabled()