diff options
author | Thomas Gschwantner <tharre3@gmail.com> | 2019-04-23 22:06:22 +0200 |
---|---|---|
committer | Thomas Gschwantner <tharre3@gmail.com> | 2019-06-12 19:05:33 +0200 |
commit | 0f06351cb0085c79b617a4acc0bd6749b53c638e (patch) | |
tree | 13f6eb367f4ed326817741953166975b912b214e /khash.h | |
parent | radix-trie: implement ipp_addrnd_* and related (diff) | |
download | wg-dynamic-0f06351cb0085c79b617a4acc0bd6749b53c638e.tar.xz wg-dynamic-0f06351cb0085c79b617a4acc0bd6749b53c638e.zip |
Implement basic lease management
Diffstat (limited to 'khash.h')
-rw-r--r-- | khash.h | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -624,4 +624,25 @@ typedef const char *kh_cstr_t; #define KHASH_MAP_INIT_STR(name, khval_t) \ KHASH_INIT(name, kh_cstr_t, khval_t, 1, kh_str_hash_func, kh_str_hash_equal) +/* Custom functions for wg_key (32 bytes) */ +typedef const unsigned char *khwgkey_t; + +#define kh_wgkey_hash_equal(a, b) (memcmp(a, b, 32) == 0) + +static kh_inline khint_t __fnv_1a_32_hash(const unsigned char *wgkey) +{ + khint_t hash = 0x811c9dc5UL; + for (int i = 0; i < 32; ++i) { + hash ^= wgkey[i]; + hash *= 16777619UL; + } + return hash; +} + +#define KHASH_SET_INIT_WGKEY(name) \ + KHASH_INIT(name, khwgkey_t, char, 0, __fnv_1a_32_hash, kh_wgkey_hash_equal) + +#define KHASH_MAP_INIT_WGKEY(name, khval_t) \ + KHASH_INIT(name, khwgkey_t, khval_t, 1, __fnv_1a_32_hash, kh_wgkey_hash_equal) + #endif /* __AC_KHASH_H */ |