Lines Matching defs:knode
105 destroy_keynode(dns_keynode_t *knode) {
108 isc_rwlock_destroy(&knode->rwlock);
109 if (knode->dslist != NULL) {
110 for (rdata = ISC_LIST_HEAD(knode->dslist->rdata); rdata != NULL;
111 rdata = ISC_LIST_HEAD(knode->dslist->rdata))
113 ISC_LIST_UNLINK(knode->dslist->rdata, rdata, link);
114 isc_mem_put(knode->mctx, rdata->data,
116 isc_mem_put(knode->mctx, rdata, sizeof(*rdata));
119 isc_mem_put(knode->mctx, knode->dslist, sizeof(*knode->dslist));
120 knode->dslist = NULL;
123 dns_name_free(&knode->name, knode->mctx);
124 isc_mem_putanddetach(&knode->mctx, knode, sizeof(dns_keynode_t));
174 add_ds(dns_keynode_t *knode, dns_rdata_ds_t *ds, isc_mem_t *mctx) {
191 RWLOCK(&knode->rwlock, isc_rwlocktype_write);
193 if (knode->dslist == NULL) {
194 knode->dslist = isc_mem_get(mctx, sizeof(*knode->dslist));
195 dns_rdatalist_init(knode->dslist);
196 knode->dslist->rdclass = dns_rdataclass_in;
197 knode->dslist->type = dns_rdatatype_ds;
199 INSIST(knode->dsset.methods == NULL);
200 knode->dsset.methods = &methods;
201 knode->dsset.rdclass = knode->dslist->rdclass;
202 knode->dsset.type = knode->dslist->type;
203 knode->dsset.covers = knode->dslist->covers;
204 knode->dsset.ttl = knode->dslist->ttl;
205 knode->dsset.keytable.node = knode;
206 knode->dsset.keytable.iter = NULL;
207 knode->dsset.trust = dns_trust_ultimate;
210 for (rdata = ISC_LIST_HEAD(knode->dslist->rdata); rdata != NULL;
223 ISC_LIST_APPEND(knode->dslist->rdata, dsrdata, link);
226 RWUNLOCK(&knode->rwlock, isc_rwlocktype_write);
230 delete_ds(dns_qp_t *qp, dns_keytable_t *keytable, dns_keynode_t *knode,
241 RWLOCK(&knode->rwlock, isc_rwlocktype_read);
242 if (knode->dslist == NULL) {
243 RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
252 RWUNLOCK(&knode->rwlock, isc_rwlocktype_write);
256 for (rdata = ISC_LIST_HEAD(knode->dslist->rdata); rdata != NULL;
266 RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
275 * Replace knode with a new instance without the DS.
277 newnode = new_keynode(&knode->name, NULL, keytable, knode->managed,
278 knode->initial);
279 for (rdata = ISC_LIST_HEAD(knode->dslist->rdata); rdata != NULL;
290 result = dns_qp_deletename(qp, &knode->name, &pval, NULL);
292 INSIST(pval == knode);
297 RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
299 dns_keynode_detach(&knode);
311 dns_keynode_t *knode = NULL;
316 knode = isc_mem_get(keytable->mctx, sizeof(dns_keynode_t));
317 *knode = (dns_keynode_t){ .name = DNS_NAME_INITEMPTY,
320 dns_rdataset_init(&knode->dsset);
321 isc_refcount_init(&knode->references, 1);
322 isc_rwlock_init(&knode->rwlock);
324 dns_name_dupwithoffsets(name, keytable->mctx, &knode->name);
330 add_ds(knode, ds, keytable->mctx);
333 isc_mem_attach(keytable->mctx, &knode->mctx);
334 knode->managed = managed;
335 knode->initial = initial;
337 return knode;
378 dns_keynode_t *knode = pval;
379 add_ds(knode, ds, keytable->mctx);
435 dns_keynode_t *knode = NULL;
452 knode = pval;
454 RWLOCK(&knode->rwlock, isc_rwlocktype_read);
455 if (knode->dslist == NULL) {
456 RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
460 RWUNLOCK(&knode->rwlock, isc_rwlocktype_read);
475 result = delete_ds(qp, keytable, knode, &ds);
498 dns_keynode_t *knode = pval;
499 dns_keynode_attach(knode, keynodep);
670 dns_keynode_t *knode = pval;
671 if (knode->dslist != NULL) {
672 result = keynode_dslist_totext(knode, text);
698 dns_keynode_t *knode = pval;
699 (*func)(keytable, knode, &knode->name, arg);