Lines Matching refs:keytable

29 #include <dns/keytable.h>
73 dns_keytable_t *keytable;
77 * Create a keytable.
82 keytable = isc_mem_get(mctx, sizeof(*keytable));
83 if (keytable == NULL)
86 keytable->table = NULL;
87 result = dns_rbt_create(mctx, free_keynode, mctx, &keytable->table);
91 result = isc_mutex_init(&keytable->lock);
95 result = isc_rwlock_init(&keytable->rwlock, 0, 0);
99 keytable->mctx = mctx;
100 keytable->active_nodes = 0;
101 keytable->references = 1;
102 keytable->magic = KEYTABLE_MAGIC;
103 *keytablep = keytable;
108 DESTROYLOCK(&keytable->lock);
111 dns_rbt_destroy(&keytable->table);
114 isc_mem_put(mctx, keytable, sizeof(*keytable));
144 dns_keytable_t *keytable;
147 * Detach *keytablep from its keytable.
152 keytable = *keytablep;
154 RWLOCK(&keytable->rwlock, isc_rwlocktype_write);
156 INSIST(keytable->references > 0);
157 keytable->references--;
158 LOCK(&keytable->lock);
159 if (keytable->references == 0 && keytable->active_nodes == 0)
161 UNLOCK(&keytable->lock);
163 RWUNLOCK(&keytable->rwlock, isc_rwlocktype_write);
166 dns_rbt_destroy(&keytable->table);
167 isc_rwlock_destroy(&keytable->rwlock);
168 DESTROYLOCK(&keytable->lock);
169 keytable->magic = 0;
170 isc_mem_put(keytable->mctx, keytable, sizeof(*keytable));
177 dns_keytable_add(dns_keytable_t *keytable, dst_key_t **keyp) {
184 * Add '*keyp' to 'keytable'.
187 REQUIRE(VALID_KEYTABLE(keytable));
192 knode = isc_mem_get(keytable->mctx, sizeof(*knode));
196 RWLOCK(&keytable->rwlock, isc_rwlocktype_write);
199 result = dns_rbt_addnode(keytable->table, keyname, &node);
211 RWUNLOCK(&keytable->rwlock, isc_rwlocktype_write);
214 isc_mem_put(keytable->mctx, knode, sizeof(*knode));
220 dns_keytable_findkeynode(dns_keytable_t *keytable, dns_name_t *name,
230 * 'keytable'.
233 REQUIRE(VALID_KEYTABLE(keytable));
237 RWLOCK(&keytable->rwlock, isc_rwlocktype_read);
248 result = dns_rbt_findname(keytable->table, name, 0, NULL, &data);
258 LOCK(&keytable->lock);
259 keytable->active_nodes++;
260 UNLOCK(&keytable->lock);
267 RWUNLOCK(&keytable->rwlock, isc_rwlocktype_read);
273 dns_keytable_findnextkeynode(dns_keytable_t *keytable, dns_keynode_t *keynode,
281 * 'keytable'.
284 REQUIRE(VALID_KEYTABLE(keytable));
294 LOCK(&keytable->lock);
295 keytable->active_nodes++;
296 UNLOCK(&keytable->lock);
306 dns_keytable_finddeepestmatch(dns_keytable_t *keytable, dns_name_t *name,
313 * Search for the deepest match in 'keytable'.
316 REQUIRE(VALID_KEYTABLE(keytable));
320 RWLOCK(&keytable->rwlock, isc_rwlocktype_read);
323 result = dns_rbt_findname(keytable->table, name, 0, foundname, &data);
328 RWUNLOCK(&keytable->rwlock, isc_rwlocktype_read);
334 dns_keytable_detachkeynode(dns_keytable_t *keytable, dns_keynode_t **keynodep)
340 REQUIRE(VALID_KEYTABLE(keytable));
343 LOCK(&keytable->lock);
344 INSIST(keytable->active_nodes > 0);
345 keytable->active_nodes--;
346 UNLOCK(&keytable->lock);
352 dns_keytable_issecuredomain(dns_keytable_t *keytable, dns_name_t *name,
362 REQUIRE(VALID_KEYTABLE(keytable));
366 RWLOCK(&keytable->rwlock, isc_rwlocktype_read);
369 result = dns_rbt_findname(keytable->table, name, 0, NULL, &data);
380 RWUNLOCK(&keytable->rwlock, isc_rwlocktype_read);