1 
2 #ifndef ACL_H
3 #define ACL_H
4 
5 #include <netinet/in.h>
6 
7 struct acl_e4_t {
8 	uint32_t addr;
9 	uint32_t mask;
10 	int allow;
11 	struct acl_e4_t *next;
12 };
13 
14 struct acl_e6_t {
15 	uint32_t addr[4];
16 	uint32_t mask[4];
17 	int prefixlen;
18 	int allow;
19 	struct acl_e6_t *next;
20 };
21 
22 struct acl_t {
23 	struct acl_e4_t *entries4;
24 	struct acl_e6_t *entries6;
25 };
26 
27 extern struct acl_t *acl_new(void);
28 extern void acl_free(struct acl_t *acl);
29 extern struct acl_t *acl_dup(struct acl_t *acl);
30 
31 extern int acl_add(struct acl_t *acl, char *netspec, int allow);
32 
33 extern struct acl_t *acl_load(char *s);
34 
35 extern int acl_check(struct acl_t *acl, struct sockaddr *sa, int addr_len);
36 
37 #endif
38