Lines Matching refs:zones

86 void local_zones_print(struct local_zones* zones)  in local_zones_print()  argument
89 lock_rw_rdlock(&zones->lock); in local_zones_print()
90 log_info("number of auth zones %u", (unsigned)zones->ztree.count); in local_zones_print()
91 RBTREE_FOR(z, struct local_zone*, &zones->ztree) { in local_zones_print()
94 lock_rw_unlock(&zones->lock); in local_zones_print()
100 struct local_zones* zones = (struct local_zones*)calloc(1, in local_zones_create() local
101 sizeof(*zones)); in local_zones_create()
102 if(!zones) in local_zones_create()
104 rbtree_init(&zones->ztree, &local_zone_cmp); in local_zones_create()
105 lock_rw_init(&zones->lock); in local_zones_create()
106 lock_protect(&zones->lock, &zones->ztree, sizeof(zones->ztree)); in local_zones_create()
108 return zones; in local_zones_create()
120 local_zones_delete(struct local_zones* zones) in local_zones_delete() argument
122 if(!zones) in local_zones_delete()
124 lock_rw_destroy(&zones->lock); in local_zones_delete()
126 traverse_postorder(&zones->ztree, lzdel, NULL); in local_zones_delete()
127 free(zones); in local_zones_delete()
211 lz_enter_zone_dname(struct local_zones* zones, uint8_t* nm, size_t len, in lz_enter_zone_dname() argument
222 lock_rw_wrlock(&zones->lock); in lz_enter_zone_dname()
224 if(!rbtree_insert(&zones->ztree, &z->node)) { in lz_enter_zone_dname()
234 z = local_zones_find(zones, nm, len, labs, c); in lz_enter_zone_dname()
236 lock_rw_unlock(&zones->lock); in lz_enter_zone_dname()
240 lock_rw_unlock(&zones->lock); in lz_enter_zone_dname()
246 lz_enter_zone(struct local_zones* zones, const char* name, const char* type, in lz_enter_zone() argument
263 if(!(z=lz_enter_zone_dname(zones, nm, len, labs, t, dclass))) { in lz_enter_zone()
639 lz_enter_rr_str(struct local_zones* zones, const char* rr) in lz_enter_rr_str() argument
652 lock_rw_rdlock(&zones->lock); in lz_enter_rr_str()
653 z = local_zones_lookup(zones, rr_name, len, labs, rr_class, rr_type); in lz_enter_rr_str()
655 lock_rw_unlock(&zones->lock); in lz_enter_rr_str()
659 lock_rw_unlock(&zones->lock); in lz_enter_rr_str()
668 lz_enter_zone_tag(struct local_zones* zones, char* zname, uint8_t* list, in lz_enter_zone_tag() argument
682 lock_rw_rdlock(&zones->lock); in lz_enter_zone_tag()
683 z = local_zones_find(zones, dname, dname_len, dname_labs, rr_class); in lz_enter_zone_tag()
685 lock_rw_unlock(&zones->lock); in lz_enter_zone_tag()
690 lock_rw_unlock(&zones->lock); in lz_enter_zone_tag()
702 lz_enter_override(struct local_zones* zones, char* zname, char* netblock, in lz_enter_override() argument
738 lock_rw_rdlock(&zones->lock); in lz_enter_override()
739 z = local_zones_find(zones, dname, dname_len, dname_labs, rr_class); in lz_enter_override()
741 lock_rw_unlock(&zones->lock); in lz_enter_override()
746 lock_rw_unlock(&zones->lock); in lz_enter_override()
785 lz_enter_zones(struct local_zones* zones, struct config_file* cfg) in lz_enter_zones() argument
796 lz_enter_zone(zones, p->str, p->str2, in lz_enter_zones()
806 lz_exists(struct local_zones* zones, const char* name) in lz_exists() argument
815 lock_rw_rdlock(&zones->lock); in lz_exists()
816 if(rbtree_search(&zones->ztree, &z.node)) { in lz_exists()
817 lock_rw_unlock(&zones->lock); in lz_exists()
821 lock_rw_unlock(&zones->lock); in lz_exists()
847 add_empty_default(struct local_zones* zones, struct config_file* cfg, in add_empty_default() argument
852 if(lz_exists(zones, name) || lz_nodefault(cfg, name)) in add_empty_default()
854 if(!(z=lz_enter_zone(zones, name, "static", LDNS_RR_CLASS_IN))) in add_empty_default()
872 int local_zone_enter_defaults(struct local_zones* zones, struct config_file* cfg) in local_zone_enter_defaults() argument
886 if(!lz_exists(zones, "localhost.") && in local_zone_enter_defaults()
888 if(!(z=lz_enter_zone(zones, "localhost.", "redirect", in local_zone_enter_defaults()
906 if(!lz_exists(zones, "127.in-addr.arpa.") && in local_zone_enter_defaults()
908 if(!(z=lz_enter_zone(zones, "127.in-addr.arpa.", "static", in local_zone_enter_defaults()
924 …if(!lz_exists(zones, "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.") … in local_zone_enter_defaults()
926 …if(!(z=lz_enter_zone(zones, "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.a… in local_zone_enter_defaults()
942 if(!add_empty_default(zones, cfg, "home.arpa.")) { in local_zone_enter_defaults()
947 if(!add_empty_default(zones, cfg, "resolver.arpa.")) { in local_zone_enter_defaults()
952 if(!add_empty_default(zones, cfg, "service.arpa.")) { in local_zone_enter_defaults()
957 if(!add_empty_default(zones, cfg, "onion.")) { in local_zone_enter_defaults()
962 if(!add_empty_default(zones, cfg, "test.")) { in local_zone_enter_defaults()
967 if(!add_empty_default(zones, cfg, "invalid.")) { in local_zone_enter_defaults()
974 if(!add_empty_default(zones, cfg, *zstr)) { in local_zone_enter_defaults()
985 lz_enter_overrides(struct local_zones* zones, struct config_file* cfg) in lz_enter_overrides() argument
989 if(!lz_enter_override(zones, p->str, p->str2, p->str3, in lz_enter_overrides()
1021 lz_init_parents(struct local_zones* zones) in lz_init_parents() argument
1024 lock_rw_wrlock(&zones->lock); in lz_init_parents()
1025 RBTREE_FOR(node, struct local_zone*, &zones->ztree) { in lz_init_parents()
1033 lock_rw_unlock(&zones->lock); in lz_init_parents()
1038 lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) in lz_setup_implicit() argument
1052 lz_init_parents(zones); /* to enable local_zones_lookup() */ in lz_setup_implicit()
1063 lock_rw_rdlock(&zones->lock); in lz_setup_implicit()
1064 if(!local_zones_lookup(zones, rr_name, len, labs, rr_class, in lz_setup_implicit()
1071 struct local_zone* z = local_zones_lookup(zones, in lz_setup_implicit()
1078 lock_rw_unlock(&zones->lock); in lz_setup_implicit()
1088 lz_enter_zone_dname(zones, name, in lz_setup_implicit()
1111 lock_rw_unlock(&zones->lock); in lz_setup_implicit()
1122 lock_rw_unlock(&zones->lock); in lz_setup_implicit()
1144 lz_enter_zone_dname(zones, n2, nmlen, match, in lz_setup_implicit()
1152 return lz_setup_implicit(zones, cfg); in lz_setup_implicit()
1159 lz_enter_zone_tags(struct local_zones* zones, struct config_file* cfg) in lz_enter_zone_tags() argument
1164 if(!lz_enter_zone_tag(zones, p->str, p->str2, p->str2len, in lz_enter_zone_tags()
1175 lz_enter_data(struct local_zones* zones, struct config_file* cfg) in lz_enter_data() argument
1179 if(!lz_enter_rr_str(zones, p->str)) in lz_enter_data()
1198 local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg) in local_zones_apply_cfg() argument
1201 if(!lz_enter_zones(zones, cfg)) { in local_zones_apply_cfg()
1205 if(!local_zone_enter_defaults(zones, cfg)) { in local_zones_apply_cfg()
1209 if(!lz_enter_overrides(zones, cfg)) { in local_zones_apply_cfg()
1213 if(!lz_setup_implicit(zones, cfg)) { in local_zones_apply_cfg()
1218 lz_init_parents(zones); in local_zones_apply_cfg()
1220 if(!lz_enter_zone_tags(zones, cfg)) { in local_zones_apply_cfg()
1224 if(!lz_enter_data(zones, cfg)) { in local_zones_apply_cfg()
1233 local_zones_lookup(struct local_zones* zones, in local_zones_lookup() argument
1236 return local_zones_tags_lookup(zones, name, len, labs, in local_zones_lookup()
1241 local_zones_tags_lookup(struct local_zones* zones, in local_zones_tags_lookup() argument
1259 rbtree_find_less_equal(&zones->ztree, &key, &res); in local_zones_tags_lookup()
1279 local_zones_find(struct local_zones* zones, in local_zones_find() argument
1289 return (struct local_zone*)rbtree_search(&zones->ztree, &key); in local_zones_find()
1293 local_zones_find_le(struct local_zones* zones, in local_zones_find_le() argument
1304 *exact = rbtree_find_less_equal(&zones->ztree, &key, &node); in local_zones_find_le()
1845 local_zones_answer(struct local_zones* zones, struct module_env* env, in local_zones_answer() argument
1897 lock_rw_rdlock(&zones->lock); in local_zones_answer()
1898 if(!(z = local_zones_tags_lookup(zones, qinfo->qname, in local_zones_answer()
1901 lock_rw_unlock(&zones->lock); in local_zones_answer()
1908 lock_rw_unlock(&zones->lock); in local_zones_answer()
2040 struct local_zone* local_zones_add_zone(struct local_zones* zones, in local_zones_add_zone() argument
2055 prev = local_zones_find_le(zones, name, len, labs, dclass, &exact); in local_zones_add_zone()
2060 if(exact||!rbtree_insert(&zones->ztree, &z->node)) { in local_zones_add_zone()
2075 void local_zones_del_zone(struct local_zones* zones, struct local_zone* z) in local_zones_del_zone() argument
2082 (void)rbtree_delete(&zones->ztree, z); in local_zones_del_zone()
2090 local_zones_add_RR(struct local_zones* zones, const char* rr) in local_zones_add_RR() argument
2104 lock_rw_wrlock(&zones->lock); in local_zones_add_RR()
2105 z = local_zones_lookup(zones, rr_name, len, labs, rr_class, rr_type); in local_zones_add_RR()
2107 z = local_zones_add_zone(zones, rr_name, len, labs, rr_class, in local_zones_add_RR()
2110 lock_rw_unlock(&zones->lock); in local_zones_add_RR()
2117 lock_rw_unlock(&zones->lock); in local_zones_add_RR()
2174 void local_zones_del_data(struct local_zones* zones, in local_zones_del_data() argument
2182 lock_rw_rdlock(&zones->lock); in local_zones_del_data()
2183 z = local_zones_lookup(zones, name, len, labs, dclass, LDNS_RR_TYPE_DS); in local_zones_del_data()
2193 lock_rw_unlock(&zones->lock); in local_zones_del_data()
2196 lock_rw_rdlock(&zones->lock); in local_zones_del_data()
2197 z = local_zones_lookup(zones, name, len, labs, dclass, 0); in local_zones_del_data()
2200 lock_rw_unlock(&zones->lock); in local_zones_del_data()
2204 lock_rw_unlock(&zones->lock); in local_zones_del_data()
2235 size_t local_zones_get_mem(struct local_zones* zones) in local_zones_get_mem() argument
2239 if(!zones) return 0; in local_zones_get_mem()
2240 m = sizeof(*zones); in local_zones_get_mem()
2241 lock_rw_rdlock(&zones->lock); in local_zones_get_mem()
2242 RBTREE_FOR(z, struct local_zone*, &zones->ztree) { in local_zones_get_mem()
2245 lock_rw_unlock(&zones->lock); in local_zones_get_mem()
2249 void local_zones_swap_tree(struct local_zones* zones, struct local_zones* data) in local_zones_swap_tree() argument
2251 rbtree_type oldtree = zones->ztree; in local_zones_swap_tree()
2252 zones->ztree = data->ztree; in local_zones_swap_tree()