configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
cfg_obj_t *vconfig, named_cachelist_t *cachelist,
named_cachelist_t *oldcachelist, dns_kasplist_t *kasplist,
- dns_keystorelist_t *keystores, const cfg_obj_t *bindkeys,
- isc_mem_t *mctx, cfg_aclconfctx_t *actx, bool need_hints,
- bool first_time) {
+ const cfg_obj_t *bindkeys, isc_mem_t *mctx,
+ cfg_aclconfctx_t *actx, bool need_hints, bool first_time) {
const cfg_obj_t *maps[4];
const cfg_obj_t *cfgmaps[3];
const cfg_obj_t *optionmaps[3];
REQUIRE(DNS_VIEW_VALID(view));
- view->keystores = keystores;
-
if (config != NULL) {
(void)cfg_map_get(config, "options", &options);
}
dns_kasp_detach(&default_kasp);
/*
- * Save keystore list and kasp list.
+ * Save kasp list.
*/
- tmpkeystorelist = server->keystorelist;
- server->keystorelist = keystorelist;
- keystorelist = tmpkeystorelist;
-
tmpkasplist = server->kasplist;
server->kasplist = kasplist;
kasplist = tmpkasplist;
goto cleanup_cachelist;
}
- result = configure_view(
- view, &viewlist, config, vconfig, &cachelist,
- &server->cachelist, &server->kasplist,
- &server->keystorelist, bindkeys, isc_g_mctx,
- named_g_aclconfctx, true, first_time);
+ result = configure_view(view, &viewlist, config, vconfig,
+ &cachelist, &server->cachelist,
+ &server->kasplist, bindkeys, isc_g_mctx,
+ named_g_aclconfctx, true, first_time);
if (result != ISC_R_SUCCESS) {
dns_view_detach(&view);
goto cleanup_cachelist;
if (result != ISC_R_SUCCESS) {
goto cleanup_cachelist;
}
- result = configure_view(
- view, &viewlist, config, NULL, &cachelist,
- &server->cachelist, &server->kasplist,
- &server->keystorelist, bindkeys, isc_g_mctx,
- named_g_aclconfctx, true, first_time);
+ result = configure_view(view, &viewlist, config, NULL,
+ &cachelist, &server->cachelist,
+ &server->kasplist, bindkeys, isc_g_mctx,
+ named_g_aclconfctx, true, first_time);
if (result != ISC_R_SUCCESS) {
dns_view_detach(&view);
goto cleanup_cachelist;
goto cleanup_cachelist;
}
- result = configure_view(
- view, &viewlist, config, vconfig, &cachelist,
- &server->cachelist, &server->kasplist,
- &server->keystorelist, bindkeys, isc_g_mctx,
- named_g_aclconfctx, false, first_time);
+ result = configure_view(view, &viewlist, config, vconfig,
+ &cachelist, &server->cachelist,
+ &server->kasplist, bindkeys, isc_g_mctx,
+ named_g_aclconfctx, false, first_time);
if (result != ISC_R_SUCCESS) {
dns_view_detach(&view);
goto cleanup_cachelist;
server->sctx->altsecrets = altsecrets;
altsecrets = tmpaltsecrets;
+ /*
+ * Swap the new keystores list with the old one (so the new one will be
+ * used and old one will be cleared).
+ */
+ tmpkeystorelist = server->keystorelist;
+ server->keystorelist = keystorelist;
+ keystorelist = tmpkeystorelist;
+ if (first_time) {
+ dns_zonemgr_setkeystores(server->zonemgr,
+ &server->keystorelist);
+ }
+
(void)named_server_loadnta(server);
/*
unsigned int startupnotifyrate;
unsigned int serialqueryrate;
unsigned int startupserialqueryrate;
+ dns_keystorelist_t *keystores;
dns_keymgmt_t *keymgmt;
/* Get keys from private key files. */
dns_zone_lock_keyfiles(zone);
result = dns_dnssec_findmatchingkeys(origin, kasp, dir,
- zone->view->keystores, now,
+ dns_zone_getkeystores(zone), now,
dns_zone_getmctx(zone), keys);
dns_zone_unlock_keyfiles(zone);
kasp = dns_zone_getkasp(zone);
keydir = dns_zone_getkeydirectory(zone);
- keystores = zone->view->keystores;
+ keystores = dns_zone_getkeystores(zone);
dns_zone_lock_keyfiles(zone);
result = dns_dnssec_findmatchingkeys(dns_zone_getorigin(zone), kasp,
setrl(zmgr->startupnotifyrl, &zmgr->startupnotifyrate, value);
}
+void
+dns_zonemgr_setkeystores(dns_zonemgr_t *zmgr, dns_keystorelist_t *keystores) {
+ zmgr->keystores = keystores;
+}
+
+dns_keystorelist_t *
+dns_zone_getkeystores(dns_zone_t *zone) {
+ return zone->zmgr->keystores;
+}
+
void
dns_zonemgr_setserialqueryrate(dns_zonemgr_t *zmgr, unsigned int value) {
REQUIRE(DNS_ZONEMGR_VALID(zmgr));
dns_zone_lock_keyfiles(zone);
result = dns_dnssec_findmatchingkeys(&zone->origin, kasp, dir,
- zone->view->keystores, now, mctx,
- &keys);
+ dns_zone_getkeystores(zone), now,
+ mctx, &keys);
dns_zone_unlock_keyfiles(zone);
if (result != ISC_R_SUCCESS) {