addrkey_t
static void addrtree_traverse_visit_node(struct addrnode* n, addrkey_t* addr,
void (*func)(struct query_info*, struct reply_info*, addrkey_t*,
addrkey_t* addr, size_t addr_size, int is_ipv6, addrlen_t scope,
addrtree_traverse_visit_edge(struct addredge* edge, addrkey_t* addr,
void (*func)(struct query_info*, struct reply_info*, addrkey_t*,
addrtree_traverse_visit_node(struct addrnode* n, addrkey_t* addr,
void (*func)(struct query_info*, struct reply_info*, addrkey_t*,
void (*func)(struct query_info*, struct reply_info*, addrkey_t*,
addrtree_traverse_visit_node(tree->root, (addrkey_t*)addr,
getbit(const addrkey_t *addr, addrlen_t addrlen, addrlen_t n)
cmpbit(const addrkey_t *key1, const addrkey_t *key2, addrlen_t n)
addrkey_t c = key1[n/KEYWIDTH] ^ key2[n/KEYWIDTH];
bits_common(const addrkey_t *s1, addrlen_t l1,
const addrkey_t *s2, addrlen_t l2, addrlen_t skip)
issub(const addrkey_t *s1, addrlen_t l1,
const addrkey_t *s2, addrlen_t l2, addrlen_t skip)
addrtree_insert(struct addrtree *tree, const addrkey_t *addr,
addrtree_find(struct addrtree *tree, const addrkey_t *addr,
int unittest_wrapper_addrtree_cmpbit(const addrkey_t *key1,
const addrkey_t *key2, addrlen_t n) {
addrlen_t unittest_wrapper_addrtree_bits_common(const addrkey_t *s1,
addrlen_t l1, const addrkey_t *s2, addrlen_t l2, addrlen_t skip) {
int unittest_wrapper_addrtree_getbit(const addrkey_t *addr,
int unittest_wrapper_addrtree_issub(const addrkey_t *s1, addrlen_t l1,
const addrkey_t *s2, addrlen_t l2, addrlen_t skip) {
edge_create(struct addrnode *node, const addrkey_t *addr,
edge->str = (addrkey_t *)calloc(n, sizeof (addrkey_t));
memcpy(edge->str, addr, n * sizeof (addrkey_t));
addrkey_t *str;
void addrtree_insert(struct addrtree *tree, const addrkey_t *addr,
const addrkey_t *addr, addrlen_t sourcemask, time_t now);
int unittest_wrapper_addrtree_cmpbit(const addrkey_t *key1,
const addrkey_t *key2, addrlen_t n);
addrlen_t unittest_wrapper_addrtree_bits_common(const addrkey_t *s1,
addrlen_t l1, const addrkey_t *s2, addrlen_t l2, addrlen_t skip);
int unittest_wrapper_addrtree_getbit(const addrkey_t *addr,
int unittest_wrapper_addrtree_issub(const addrkey_t *s1, addrlen_t l1,
const addrkey_t *s2, addrlen_t l2, addrlen_t skip);
addrtree_insert(tree, (addrkey_t*)edns->subnet_addr,
node = addrtree_find(tree, (addrkey_t*)ecs->subnet_addr,
static addrlen_t randomkey(addrkey_t **k, int maxlen)
*k = (addrkey_t *) malloc(bytes * sizeof(addrkey_t));
(*k)[byte] = (addrkey_t)(rand() & 0xFF);
addrkey_t *k;
addrkey_t k1[] = {0x55, 0x55, 0x5A};
addrkey_t k2[] = {0x55, 0x5D, 0x5A};
addrkey_t k1[] = {0x55, 0x55, 0x5A};
addrkey_t k1[] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0};
addrkey_t k2[] = {0,0,0,0,0,0,0,0};
addrkey_t k1[] = {0xA5, 0x0F};
addrkey_t k2[] = {0x5A, 0xF0};