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