Lines Matching defs:keytable
1 /* $NetBSD: keytable.c,v 1.11 2025/01/26 16:25:23 christos Exp $ */
29 #include <dns/keytable.h>
65 dns_keytable_t *keytable, bool managed, bool initial);
131 dns_keytable_t *keytable = NULL;
134 * Create a keytable.
139 keytable = isc_mem_get(view->mctx, sizeof(*keytable));
140 *keytable = (dns_keytable_t){
144 isc_mem_attach(view->mctx, &keytable->mctx);
145 dns_qpmulti_create(view->mctx, &qpmethods, view, &keytable->table);
146 isc_refcount_init(&keytable->references, 1);
147 *keytablep = keytable;
151 destroy_keytable(dns_keytable_t *keytable) {
156 keytable->magic = 0;
158 dns_qpmulti_query(keytable->table, &qpr);
164 dns_qpread_destroy(keytable->table, &qpr);
166 dns_qpmulti_destroy(&keytable->table);
168 isc_mem_putanddetach(&keytable->mctx, keytable, sizeof(*keytable));
205 knode->dsset.keytable.node = knode;
206 knode->dsset.keytable.iter = NULL;
230 delete_ds(dns_qp_t *qp, dns_keytable_t *keytable, dns_keynode_t *knode,
277 newnode = new_keynode(&knode->name, NULL, keytable, knode->managed,
286 add_ds(newnode, &ds0, keytable->mctx);
306 * to "node" in "keytable".
310 dns_keytable_t *keytable, bool managed, bool initial) {
313 REQUIRE(VALID_KEYTABLE(keytable));
316 knode = isc_mem_get(keytable->mctx, sizeof(dns_keynode_t));
324 dns_name_dupwithoffsets(name, keytable->mctx, &knode->name);
330 add_ds(knode, ds, keytable->mctx);
333 isc_mem_attach(keytable->mctx, &knode->mctx);
341 * Add key trust anchor "ds" at "keyname" in "keytable". If an anchor
348 insert(dns_keytable_t *keytable, bool managed, bool initial,
356 REQUIRE(VALID_KEYTABLE(keytable));
358 dns_qpmulti_write(keytable->table, &qp);
363 * There was no match for "keyname" in "keytable" yet, so one
368 newnode = new_keynode(keyname, ds, keytable, managed, initial);
375 * A node already exists for "keyname" in "keytable".
379 add_ds(knode, ds, keytable->mctx);
385 dns_qpmulti_commit(keytable->table, &qp);
391 dns_keytable_add(dns_keytable_t *keytable, bool managed, bool initial,
397 return insert(keytable, managed, initial, name, ds, callback,
402 dns_keytable_marksecure(dns_keytable_t *keytable, const dns_name_t *name) {
403 return insert(keytable, true, false, name, NULL, NULL, NULL);
407 dns_keytable_delete(dns_keytable_t *keytable, const dns_name_t *keyname,
413 REQUIRE(VALID_KEYTABLE(keytable));
416 dns_qpmulti_write(keytable->table, &qp);
426 dns_qpmulti_commit(keytable->table, &qp);
432 dns_keytable_deletekey(dns_keytable_t *keytable, const dns_name_t *keyname,
443 REQUIRE(VALID_KEYTABLE(keytable));
446 dns_qpmulti_write(keytable->table, &qp);
475 result = delete_ds(qp, keytable, knode, &ds);
479 dns_qpmulti_commit(keytable->table, &qp);
485 dns_keytable_find(dns_keytable_t *keytable, const dns_name_t *keyname,
491 REQUIRE(VALID_KEYTABLE(keytable));
495 dns_qpmulti_query(keytable->table, &qpr);
501 dns_qpread_destroy(keytable->table, &qpr);
507 dns_keytable_finddeepestmatch(dns_keytable_t *keytable, const dns_name_t *name,
515 * Search for the deepest match in 'keytable'.
518 REQUIRE(VALID_KEYTABLE(keytable));
522 dns_qpmulti_query(keytable->table, &qpr);
531 dns_qpread_destroy(keytable->table, &qpr);
536 dns_keytable_issecuredomain(dns_keytable_t *keytable, const dns_name_t *name,
547 REQUIRE(VALID_KEYTABLE(keytable));
551 dns_qpmulti_query(keytable->table, &qpr);
565 dns_qpread_destroy(keytable->table, &qpr);
584 dns_keytable_dump(dns_keytable_t *keytable, FILE *fp) {
588 REQUIRE(VALID_KEYTABLE(keytable));
591 isc_buffer_allocate(keytable->mctx, &text, 4096);
593 result = dns_keytable_totext(keytable, &text);
657 dns_keytable_totext(dns_keytable_t *keytable, isc_buffer_t **text) {
663 REQUIRE(VALID_KEYTABLE(keytable));
666 dns_qpmulti_query(keytable->table, &qpr);
679 dns_qpread_destroy(keytable->table, &qpr);
684 dns_keytable_forall(dns_keytable_t *keytable,
692 REQUIRE(VALID_KEYTABLE(keytable));
694 dns_qpmulti_query(keytable->table, &qpr);
699 (*func)(keytable, knode, &knode->name, arg);
702 dns_qpread_destroy(keytable->table, &qpr);
766 keynode = rdataset->keytable.node;
767 rdataset->keytable.node = NULL;
776 keynode = rdataset->keytable.node;
778 rdataset->keytable.iter = ISC_LIST_HEAD(keynode->dslist->rdata);
781 if (rdataset->keytable.iter == NULL) {
793 rdata = rdataset->keytable.iter;
798 keynode = rdataset->keytable.node;
800 rdataset->keytable.iter = ISC_LIST_NEXT(rdata, link);
803 if (rdataset->keytable.iter == NULL) {
814 list_rdata = rdataset->keytable.iter;
824 keynode = source->keytable.node;
828 target->keytable.iter = NULL;