Lines Matching refs:prefix
37 _deref_prefix(isc_mem_t *mctx, isc_prefix_t *prefix);
40 _ref_prefix(isc_mem_t *mctx, isc_prefix_t **target, isc_prefix_t *prefix);
52 isc_prefix_t *prefix; in _new_prefix() local
59 prefix = isc_mem_get(mctx, sizeof(isc_prefix_t)); in _new_prefix()
60 if (prefix == NULL) in _new_prefix()
64 prefix->bitlen = (bitlen >= 0) ? bitlen : 128; in _new_prefix()
65 memcpy(&prefix->add.sin6, dest, 16); in _new_prefix()
68 prefix->bitlen = (bitlen >= 0) ? bitlen : 32; in _new_prefix()
69 memcpy(&prefix->add.sin, dest, 4); in _new_prefix()
72 prefix->family = family; in _new_prefix()
74 isc_refcount_init(&prefix->refcount, 1); in _new_prefix()
76 *target = prefix; in _new_prefix()
81 _deref_prefix(isc_mem_t *mctx, isc_prefix_t *prefix) { in _deref_prefix() argument
84 if (prefix == NULL) in _deref_prefix()
87 isc_refcount_decrement(&prefix->refcount, &refs); in _deref_prefix()
90 isc_refcount_destroy(&prefix->refcount); in _deref_prefix()
91 isc_mem_put(mctx, prefix, sizeof(isc_prefix_t)); in _deref_prefix()
96 _ref_prefix(isc_mem_t *mctx, isc_prefix_t **target, isc_prefix_t *prefix) { in _ref_prefix() argument
97 INSIST(prefix != NULL); in _ref_prefix()
98 INSIST((prefix->family == AF_INET && prefix->bitlen <= 32) || in _ref_prefix()
99 (prefix->family == AF_INET6 && prefix->bitlen <= 128) || in _ref_prefix()
100 (prefix->family == AF_UNSPEC && prefix->bitlen == 0)); in _ref_prefix()
108 if (isc_refcount_current(&prefix->refcount) == 0) { in _ref_prefix()
110 ret = _new_prefix(mctx, target, prefix->family, in _ref_prefix()
111 &prefix->add, prefix->bitlen); in _ref_prefix()
115 isc_refcount_increment(&prefix->refcount, NULL); in _ref_prefix()
117 *target = prefix; in _ref_prefix()
180 if (Xrn->prefix != NULL) { in _clear_radix()
181 _deref_prefix(radix->mctx, Xrn->prefix); in _clear_radix()
231 func(node->prefix, node->data); in isc_radix_process()
238 isc_prefix_t *prefix) in isc_radix_search() argument
248 REQUIRE(prefix != NULL); in isc_radix_search()
250 RUNTIME_CHECK(prefix->bitlen <= radix->maxbits); in isc_radix_search()
259 addr = isc_prefix_touchar(prefix); in isc_radix_search()
260 bitlen = prefix->bitlen; in isc_radix_search()
263 if (node->prefix) in isc_radix_search()
275 if (node && node->prefix) in isc_radix_search()
281 if (_comp_with_mask(isc_prefix_tochar(node->prefix), in isc_radix_search()
282 isc_prefix_tochar(prefix), in isc_radix_search()
283 node->prefix->bitlen)) { in isc_radix_search()
284 if (node->node_num[ISC_IS6(prefix->family)] != -1 && in isc_radix_search()
287 node->node_num[ISC_IS6(prefix->family)])) { in isc_radix_search()
289 tfamily = prefix->family; in isc_radix_search()
303 isc_radix_node_t *source, isc_prefix_t *prefix) in isc_radix_insert() argument
313 REQUIRE(prefix != NULL || (source != NULL && source->prefix != NULL)); in isc_radix_insert()
314 RUNTIME_CHECK(prefix == NULL || prefix->bitlen <= radix->maxbits); in isc_radix_insert()
316 if (prefix == NULL) in isc_radix_insert()
317 prefix = source->prefix; in isc_radix_insert()
319 INSIST(prefix != NULL); in isc_radix_insert()
321 bitlen = prefix->bitlen; in isc_radix_insert()
322 fam = prefix->family; in isc_radix_insert()
330 node->prefix = NULL; in isc_radix_insert()
331 result = _ref_prefix(radix->mctx, &node->prefix, prefix); in isc_radix_insert()
374 addr = isc_prefix_touchar(prefix); in isc_radix_insert()
377 while (node->bit < bitlen || node->prefix == NULL) { in isc_radix_insert()
393 INSIST(node->prefix != NULL); in isc_radix_insert()
395 test_addr = isc_prefix_touchar(node->prefix); in isc_radix_insert()
425 if (node->prefix != NULL) { in isc_radix_insert()
465 _ref_prefix(radix->mctx, &node->prefix, prefix); in isc_radix_insert()
509 new_node->prefix = NULL; in isc_radix_insert()
510 result = _ref_prefix(radix->mctx, &new_node->prefix, prefix); in isc_radix_insert()
583 glue->prefix = NULL; in isc_radix_insert()
625 if (node->prefix != NULL) in isc_radix_remove()
626 _deref_prefix(radix->mctx, node->prefix); in isc_radix_remove()
628 node->prefix = NULL; in isc_radix_remove()
635 _deref_prefix(radix->mctx, node->prefix); in isc_radix_remove()
654 if (parent->prefix) in isc_radix_remove()
683 _deref_prefix(radix->mctx, node->prefix); in isc_radix_remove()