Lines Matching refs:acl
55 struct acl_list* acl = (struct acl_list*)calloc(1,
57 if(!acl)
59 acl->region = regional_create();
60 if(!acl->region) {
61 acl_list_delete(acl);
64 return acl;
68 acl_list_delete(struct acl_list* acl)
70 if(!acl)
72 regional_destroy(acl->region);
73 free(acl);
78 acl_list_insert(struct acl_list* acl, struct sockaddr_storage* addr,
82 struct acl_addr* node = regional_alloc_zero(acl->region,
87 if(!addr_tree_insert(&acl->tree, &node->node, addr, addrlen, net)) {
89 verbose(VERB_QUERY, "duplicate acl address ignored.");
123 acl_list_str_cfg(struct acl_list* acl, const char* str, const char* s2,
137 if(!acl_list_insert(acl, &addr, addrlen, net, control,
147 acl_find_or_create_str2addr(struct acl_list* acl, const char* str,
166 if(!(node=(struct acl_addr*)addr_tree_find(&acl->tree, &addr,
170 if(!(node=(struct acl_addr*)acl_list_insert(acl, &addr,
181 acl_find_or_create(struct acl_list* acl, struct sockaddr_storage* addr,
187 if(!(node=(struct acl_addr*)addr_tree_find(&acl->tree, addr,
191 if(!(node=(struct acl_addr*)acl_list_insert(acl, addr,
231 acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t* bitmap,
235 if(!(node=acl_find_or_create_str2addr(acl, str, is_interface, port))) {
241 node->taglist = regional_alloc_init(acl->region, bitmap, bitmaplen);
251 acl_list_view_cfg(struct acl_list* acl, const char* str, const char* str2,
255 if(!(node=acl_find_or_create_str2addr(acl, str, is_interface, port))) {
271 acl_list_tag_action_cfg(struct acl_list* acl, struct config_file* cfg,
278 if(!(node=acl_find_or_create_str2addr(acl, str, is_interface, port))) {
285 node->tag_actions = (uint8_t*)regional_alloc_zero(acl->region,
364 acl_list_tag_data_cfg(struct acl_list* acl, struct config_file* cfg,
371 if(!(node=acl_find_or_create_str2addr(acl, str, is_interface, port))) {
379 acl->region, sizeof(*node->tag_datas)*cfg->num_tags);
403 dupdata = regional_strdup(acl->region, data);
408 if(!cfg_region_strlist_insert(acl->region,
418 read_acl_list(struct acl_list* acl, struct config_str2list* acls)
423 if(!acl_list_str_cfg(acl, p->str, p->str2, 1))
429 /** read acl view config */
431 read_acl_view(struct acl_list* acl, struct config_str2list** acl_view,
438 if(!acl_list_view_cfg(acl, p->str, p->str2, v, 0, 0)) {
452 /** read acl tags config */
454 read_acl_tags(struct acl_list* acl, struct config_strbytelist** acl_tags)
460 if(!acl_list_tags_cfg(acl, p->str, p->str2, p->str2len, 0, 0)) {
474 /** read acl tag actions config */
476 read_acl_tag_actions(struct acl_list* acl, struct config_file* cfg,
484 if(!acl_list_tag_action_cfg(acl, cfg, p->str, p->str2,
500 /** read acl tag datas config */
502 read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg,
510 if(!acl_list_tag_data_cfg(acl, cfg, p->str, p->str2, p->str3,
527 acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg,
530 regional_free_all(acl->region);
531 addr_tree_init(&acl->tree);
532 if(!read_acl_list(acl, cfg->acls))
534 if(!read_acl_view(acl, &cfg->acl_view, v))
536 if(!read_acl_tags(acl, &cfg->acl_tags))
538 if(!read_acl_tag_actions(acl, cfg, &cfg->acl_tag_actions))
540 if(!read_acl_tag_datas(acl, cfg, &cfg->acl_tag_datas))
544 if(!acl_list_str_cfg(acl, "127.0.0.0/8", "allow", 0))
547 if(!acl_list_str_cfg(acl, "::1", "allow", 0))
549 if(!acl_list_str_cfg(acl, "::ffff:127.0.0.1", "allow", 0))
552 addr_tree_init_parents(&acl->tree);
591 /** read acl view config for interface */
627 /** read acl tags config for interface */
662 /** read acl tag actions config for interface*/
700 /** read acl tag datas config for interface */
762 acl_get_control(struct acl_addr* acl)
764 if(acl) return acl->control;
769 acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr,
772 return (struct acl_addr*)addr_tree_lookup(&acl->tree,
777 acl_list_get_mem(struct acl_list* acl)
779 if(!acl) return 0;
780 return sizeof(*acl) + regional_get_mem(acl->region);
783 const char* acl_access_to_str(enum acl_access acl)
785 switch(acl) {
800 socklen_t addrlen, enum acl_access acl, struct acl_addr* acladdr)
813 acl_access_to_str(acl));
820 void acl_list_swap_tree(struct acl_list* acl, struct acl_list* data)
823 rbtree_type oldtree = acl->tree;
824 struct regional* oldregion = acl->region;
825 acl->tree = data->tree;
826 acl->region = data->region;