This file contains functions for caching validated key entries. More...
#include "util/storage/slabhash.h"
Data Structures | |
struct | key_cache |
Key cache. More... | |
Functions | |
struct key_cache * | key_cache_create (struct config_file *cfg) |
Create the key cache. More... | |
void | key_cache_delete (struct key_cache *kcache) |
Delete the key cache. More... | |
void | key_cache_insert (struct key_cache *kcache, struct key_entry_key *kkey, int copy_reason) |
Insert or update a key cache entry. More... | |
void | key_cache_remove (struct key_cache *kcache, uint8_t *name, size_t namelen, uint16_t key_class) |
Remove an entry from the key cache. More... | |
struct key_entry_key * | key_cache_obtain (struct key_cache *kcache, uint8_t *name, size_t namelen, uint16_t key_class, struct regional *region, time_t now) |
Lookup key entry in the cache. More... | |
size_t | key_cache_get_mem (struct key_cache *kcache) |
Get memory in use by the key cache. More... | |
This file contains functions for caching validated key entries.
struct key_cache* key_cache_create | ( | struct config_file * | cfg | ) |
Create the key cache.
cfg | config settings for the key cache. |
References HASH_DEFAULT_STARTARRAY, config_file::key_cache_size, config_file::key_cache_slabs, key_entry_compfunc(), key_entry_deldatafunc(), key_entry_delkeyfunc(), key_entry_sizefunc(), log_err(), key_cache::slab, and slabhash_create().
Referenced by val_apply_cfg().
void key_cache_delete | ( | struct key_cache * | kcache | ) |
Delete the key cache.
kcache | to delete |
References key_cache::slab, and slabhash_delete().
Referenced by val_deinit().
void key_cache_insert | ( | struct key_cache * | kcache, |
struct key_entry_key * | kkey, | ||
int | copy_reason | ||
) |
Insert or update a key cache entry.
Note that the insert may silently fail if there is not enough memory.
kcache | the key cache. |
kkey | key entry key, assumed malloced in a region, is copied to perform update or insertion. Its data pointer is also copied. |
copy_reason | if the reason string needs to be copied (allocated). |
References lruhash_entry::data, key_entry_key::entry, lruhash_entry::hash, key_entry_copy(), key_entry_hash(), key_cache::slab, and slabhash_insert().
Referenced by processValidate().
void key_cache_remove | ( | struct key_cache * | kcache, |
uint8_t * | name, | ||
size_t | namelen, | ||
uint16_t | key_class | ||
) |
Remove an entry from the key cache.
kcache | the key cache. |
name | for what name to look; uncompressed wireformat |
namelen | length of the name. |
key_class | class of the key. |
References key_entry_key::entry, lruhash_entry::hash, lruhash_entry::key, key_entry_key::key_class, key_entry_hash(), key_entry_key::name, key_entry_key::namelen, key_cache::slab, and slabhash_remove().
struct key_entry_key* key_cache_obtain | ( | struct key_cache * | kcache, |
uint8_t * | name, | ||
size_t | namelen, | ||
uint16_t | key_class, | ||
struct regional * | region, | ||
time_t | now | ||
) |
Lookup key entry in the cache.
Looks up the closest key entry above the given name.
kcache | the key cache. |
name | for what name to look; uncompressed wireformat |
namelen | length of the name. |
key_class | class of the key. |
region | a copy of the key_entry is allocated in this region. |
now | current time. |
References lruhash_entry::data, dname_is_root(), dname_remove_label(), key_entry_key::entry, key_cache_search(), key_entry_key::key_class, key_entry_copy_toregion(), lruhash_entry::lock, key_entry_key::name, key_entry_key::namelen, and key_entry_data::ttl.
Referenced by iter_indicates_dnssec().
size_t key_cache_get_mem | ( | struct key_cache * | kcache | ) |
Get memory in use by the key cache.
kcache | the key cache. |
References key_cache::slab, and slabhash_get_mem().