Electroneum
acl_list.h
Go to the documentation of this file.
1 /*
2  * daemon/acl_list.h - client access control storage for the server.
3  *
4  * Copyright (c) 2007, 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 DAEMON_ACL_LIST_H
44 #define DAEMON_ACL_LIST_H
45 #include "util/storage/dnstree.h"
46 #include "services/view.h"
47 struct config_file;
48 struct regional;
49 
54 enum acl_access {
56  acl_deny = 0,
69 };
70 
74 struct acl_list {
76  struct regional* region;
82 };
83 
88 struct acl_addr {
96  size_t taglen;
106  /* view element, NULL if none */
107  struct view* view;
108 };
109 
114 struct acl_list* acl_list_create(void);
115 
120 void acl_list_delete(struct acl_list* acl);
121 
129 int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg,
130  struct views* v);
131 
137 enum acl_access acl_get_control(struct acl_addr* acl);
138 
146 struct acl_addr*
147 acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr,
148  socklen_t addrlen);
149 
155 size_t acl_list_get_mem(struct acl_list* acl);
156 
157 #endif /* DAEMON_ACL_LIST_H */
struct regional * region
Definition: acl_list.h:76
uint8_t * tag_actions
Definition: acl_list.h:98
struct acl_list * acl_list_create(void)
Definition: view.h:56
struct acl_addr * acl_addr_lookup(struct acl_list *acl, struct sockaddr_storage *addr, socklen_t addrlen)
size_t taglen
Definition: acl_list.h:96
enum acl_access acl_get_control(struct acl_addr *acl)
unsigned char uint8_t
Definition: stdint.h:124
struct view * view
Definition: acl_list.h:107
struct config_strlist ** tag_datas
Definition: acl_list.h:103
void acl_list_delete(struct acl_list *acl)
int acl_list_apply_cfg(struct acl_list *acl, struct config_file *cfg, struct views *v)
rbtree_type tree
Definition: acl_list.h:81
acl_access
Definition: acl_list.h:54
enum acl_access control
Definition: acl_list.h:92
struct addr_tree_node node
Definition: acl_list.h:90
uint8_t * taglist
Definition: acl_list.h:94
Definition: view.h:66
size_t tag_actions_size
Definition: acl_list.h:100
size_t acl_list_get_mem(struct acl_list *acl)
size_t tag_datas_size
Definition: acl_list.h:105