Lines Matching +full:exact +full:- +full:len

2  * util/storage/dnstree.c - support for rbtree types suitable for DNS code.
52 if(x->dclass != y->dclass) {
53 if(x->dclass < y->dclass)
54 return -1;
57 return dname_lab_cmp(x->name, x->labs, y->name, y->labs, &m);
64 int r = sockaddr_cmp_addr(&n1->addr, n1->addrlen, &n2->addr,
65 n2->addrlen);
67 if(n1->net < n2->net)
68 return -1;
69 if(n1->net > n2->net)
78 return sockaddr_cmp_scopeid(&n1->addr, n1->addrlen, &n2->addr,
79 n2->addrlen);
98 uint8_t* name, size_t len, int labs, uint16_t dclass)
100 node->node.key = node;
101 node->name = name;
102 node->len = len;
103 node->labs = labs;
104 node->dclass = dclass;
105 node->parent = NULL;
106 return rbtree_insert(tree, &node->node) != NULL;
112 node->node.key = node;
113 memcpy(&node->addr, addr, addrlen);
114 node->addrlen = addrlen;
115 node->net = net;
116 node->parent = NULL;
117 return rbtree_insert(tree, &node->node) != NULL;
126 node->parent = NULL;
127 if(!prev || prev->addrlen != node->addrlen) {
131 m = addr_in_common(&prev->addr, prev->net, &node->addr,
132 node->net, node->addrlen);
134 /* find the previous, or parent-parent-parent */
135 for(p = prev; p; p = p->parent)
136 if(p->net <= m) {
140 node->parent = p;
158 node->parent = NULL;
159 if(!prev || prev->dclass != node->dclass) {
163 (void)dname_lab_cmp(prev->name, prev->labs, node->name,
164 node->labs, &m); /* we know prev is smaller */
166 /* find the previous, or parent-parent-parent */
167 for(p = prev; p; p = p->parent)
168 if(p->labs <= m) {
172 node->parent = p;
180 size_t len, int labs, uint16_t dclass)
185 key.len = len;
192 size_t len, int labs, uint16_t dclass)
199 key.len = len;
203 /* exact */
209 if(!result || result->dclass != dclass)
212 (void)dname_lab_cmp(result->name, result->labs, key.name,
215 if(result->labs <= m)
217 result = result->parent;
234 /* exact */
240 if(!result || result->addrlen != addrlen)
243 m = addr_in_common(&result->addr, result->net, addr,
246 if(result->net <= m)
248 result = result->parent;
279 if(dname_is_root(p->name)) {
280 *dclass = p->dclass;
284 *dclass = p->dclass + 1;
292 key.len = 1;
297 /* exact */
307 if(dname_is_root(p->name)) {
308 *dclass = p->dclass;
312 *dclass = p->dclass+1;