Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
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
42
43
#ifndef UTIL_STORAGE_DNSTREE_H
44
#define UTIL_STORAGE_DNSTREE_H
45
#include "
util/rbtree.h
"
46
55
struct
name_tree_node
{
57
rbnode_type
node
;
59
struct
name_tree_node
*
parent
;
61
uint8_t
*
name
;
63
size_t
len
;
65
int
labs
;
67
uint16_t
dclass
;
68
};
69
77
struct
addr_tree_node
{
79
rbnode_type
node
;
81
struct
addr_tree_node
*
parent
;
83
struct
sockaddr_storage
addr
;
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
116
void
name_tree_init_parents
(
rbtree_type
* tree);
117
127
struct
name_tree_node
*
name_tree_find
(
rbtree_type
* tree,
uint8_t
*
name
,
128
size_t
len
,
int
labs
,
uint16_t
dclass
);
129
139
struct
name_tree_node
*
name_tree_lookup
(
rbtree_type
* tree,
uint8_t
*
name
,
140
size_t
len
,
int
labs
,
uint16_t
dclass
);
141
148
int
name_tree_next_root
(
rbtree_type
* tree,
uint16_t
*
dclass
);
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
174
void
addr_tree_init_parents
(
rbtree_type
* tree);
175
183
struct
addr_tree_node
*
addr_tree_lookup
(
rbtree_type
* tree,
184
struct
sockaddr_storage
*
addr
, socklen_t
addrlen
);
185
194
struct
addr_tree_node
*
addr_tree_find
(
rbtree_type
* tree,
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 */
name_tree_next_root
int name_tree_next_root(rbtree_type *tree, uint16_t *dclass)
addr_tree_find
struct addr_tree_node * addr_tree_find(rbtree_type *tree, struct sockaddr_storage *addr, socklen_t addrlen, int net)
addr_tree_insert
int addr_tree_insert(rbtree_type *tree, struct addr_tree_node *node, struct sockaddr_storage *addr, socklen_t addrlen, int net)
name_tree_lookup
struct name_tree_node * name_tree_lookup(rbtree_type *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)
name_tree_compare
int name_tree_compare(const void *k1, const void *k2)
name_tree_insert
int name_tree_insert(rbtree_type *tree, struct name_tree_node *node, uint8_t *name, size_t len, int labs, uint16_t dclass)
addr_tree_lookup
struct addr_tree_node * addr_tree_lookup(rbtree_type *tree, struct sockaddr_storage *addr, socklen_t addrlen)
addr_tree_init_parents
void addr_tree_init_parents(rbtree_type *tree)
name_tree_init_parents
void name_tree_init_parents(rbtree_type *tree)
name_tree_init
void name_tree_init(rbtree_type *tree)
addr_tree_init
void addr_tree_init(rbtree_type *tree)
addr_tree_compare
int addr_tree_compare(const void *k1, const void *k2)
name_tree_find
struct name_tree_node * name_tree_find(rbtree_type *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)
net
Definition
net_utils_base.h:54
rbtree.h
uint16_t
unsigned short uint16_t
Definition
stdint.h:125
uint8_t
unsigned char uint8_t
Definition
stdint.h:124
addr_tree_node
Definition
dnstree.h:77
addr_tree_node::parent
struct addr_tree_node * parent
Definition
dnstree.h:81
addr_tree_node::addr
struct sockaddr_storage addr
Definition
dnstree.h:83
addr_tree_node::addrlen
socklen_t addrlen
Definition
dnstree.h:85
addr_tree_node::node
rbnode_type node
Definition
dnstree.h:79
name_tree_node
Definition
dnstree.h:55
name_tree_node::node
rbnode_type node
Definition
dnstree.h:57
name_tree_node::dclass
uint16_t dclass
Definition
dnstree.h:67
name_tree_node::labs
int labs
Definition
dnstree.h:65
name_tree_node::parent
struct name_tree_node * parent
Definition
dnstree.h:59
name_tree_node::name
uint8_t * name
Definition
dnstree.h:61
name_tree_node::len
size_t len
Definition
dnstree.h:63
rbnode_type
Definition
rbtree.h:55
rbtree_type
Definition
rbtree.h:76
sockaddr_storage
Definition
fake-rfc2553.h:54
external
unbound
util
storage
dnstree.h
Generated on
for Electroneum by
1.17.0