Electroneum
dnstree.h
Go to the documentation of this file.
1 /*
2  * util/storage/dnstree.h - support for rbtree types suitable for DNS code.
3  *
4  * Copyright (c) 2008, NLnet Labs. All rights reserved.
5  *
6  * This software is open source.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * Neither the name of the NLNET LABS nor the names of its contributors may
20  * be used to endorse or promote products derived from this software without
21  * specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27  * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
43 #ifndef UTIL_STORAGE_DNSTREE_H
44 #define UTIL_STORAGE_DNSTREE_H
45 #include "util/rbtree.h"
46 
63  size_t len;
65  int labs;
68 };
69 
85  socklen_t addrlen;
87  int net;
88 };
89 
94 void name_tree_init(rbtree_type* tree);
95 
108 int name_tree_insert(rbtree_type* tree, struct name_tree_node* node,
109  uint8_t* name, size_t len, int labs, uint16_t dclass);
110 
117 
128  size_t len, int labs, uint16_t dclass);
129 
140  size_t len, int labs, uint16_t dclass);
141 
149 
154 void addr_tree_init(rbtree_type* tree);
155 
166 int addr_tree_insert(rbtree_type* tree, struct addr_tree_node* node,
167  struct sockaddr_storage* addr, socklen_t addrlen, int net);
168 
175 
184  struct sockaddr_storage* addr, socklen_t addrlen);
185 
195  struct sockaddr_storage* addr, socklen_t addrlen, int net);
196 
198 int name_tree_compare(const void* k1, const void* k2);
199 
201 int addr_tree_compare(const void* k1, const void* k2);
202 
203 #endif /* UTIL_STORAGE_DNSTREE_H */
int name_tree_next_root(rbtree_type *tree, uint16_t *dclass)
size_t len
Definition: dnstree.h:63
struct sockaddr_storage addr
Definition: dnstree.h:83
uint8_t * name
Definition: dnstree.h:61
unsigned short uint16_t
Definition: stdint.h:125
int name_tree_compare(const void *k1, const void *k2)
int addr_tree_insert(rbtree_type *tree, struct addr_tree_node *node, struct sockaddr_storage *addr, socklen_t addrlen, int net)
unsigned char uint8_t
Definition: stdint.h:124
const char * name
struct name_tree_node * parent
Definition: dnstree.h:59
struct name_tree_node * name_tree_find(rbtree_type *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)
rbnode_type node
Definition: dnstree.h:57
int name_tree_insert(rbtree_type *tree, struct name_tree_node *node, uint8_t *name, size_t len, int labs, uint16_t dclass)
void name_tree_init(rbtree_type *tree)
socklen_t addrlen
Definition: dnstree.h:85
struct name_tree_node * name_tree_lookup(rbtree_type *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)
void name_tree_init_parents(rbtree_type *tree)
struct addr_tree_node * parent
Definition: dnstree.h:81
struct addr_tree_node * addr_tree_find(rbtree_type *tree, struct sockaddr_storage *addr, socklen_t addrlen, int net)
void addr_tree_init_parents(rbtree_type *tree)
void addr_tree_init(rbtree_type *tree)
struct addr_tree_node * addr_tree_lookup(rbtree_type *tree, struct sockaddr_storage *addr, socklen_t addrlen)
uint16_t dclass
Definition: dnstree.h:67
int addr_tree_compare(const void *k1, const void *k2)
rbnode_type node
Definition: dnstree.h:79