Lines Matching refs:z

72 	struct local_zone* z = (struct local_zone*)n->key;  in lzdel()  local
73 local_zone_delete(z); in lzdel()
88 local_zone_delete(struct local_zone* z) in local_zone_delete() argument
90 if(!z) in local_zone_delete()
92 lock_rw_destroy(&z->lock); in local_zone_delete()
93 regional_destroy(z->region); in local_zone_delete()
94 free(z->name); in local_zone_delete()
95 free(z); in local_zone_delete()
143 struct local_zone* z = (struct local_zone*)calloc(1, sizeof(*z)); in local_zone_create() local
144 if(!z) { in local_zone_create()
147 z->node.key = z; in local_zone_create()
148 z->dclass = dclass; in local_zone_create()
149 z->type = t; in local_zone_create()
150 z->name = nm; in local_zone_create()
151 z->namelen = len; in local_zone_create()
152 z->namelabs = labs; in local_zone_create()
153 lock_rw_init(&z->lock); in local_zone_create()
154 z->region = regional_create(); in local_zone_create()
155 if(!z->region) { in local_zone_create()
156 free(z); in local_zone_create()
159 rbtree_init(&z->data, &local_data_cmp); in local_zone_create()
160 lock_protect(&z->lock, &z->parent, sizeof(*z)-sizeof(rbnode_t)); in local_zone_create()
162 return z; in local_zone_create()
170 struct local_zone* z = local_zone_create(nm, len, labs, t, c); in lz_enter_zone_dname() local
171 if(!z) { in lz_enter_zone_dname()
178 lock_rw_wrlock(&z->lock); in lz_enter_zone_dname()
179 if(!rbtree_insert(&zones->ztree, &z->node)) { in lz_enter_zone_dname()
181 lock_rw_unlock(&z->lock); in lz_enter_zone_dname()
182 local_zone_delete(z); in lz_enter_zone_dname()
187 return z; in lz_enter_zone_dname()
195 struct local_zone* z; in lz_enter_zone() local
209 if(!(z=lz_enter_zone_dname(zones, nm, len, labs, t, dclass))) { in lz_enter_zone()
213 return z; in lz_enter_zone()
373 lz_find_node(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs) in lz_find_node() argument
380 return (struct local_data*)rbtree_search(&z->data, &key.node); in lz_find_node()
385 lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t nmlen, in lz_find_create_node() argument
388 struct local_data* ld = lz_find_node(z, nm, nmlen, nmlabs); in lz_find_create_node()
391 ld = (struct local_data*)regional_alloc_zero(z->region, in lz_find_create_node()
398 ld->name = regional_alloc_init(z->region, nm, nmlen); in lz_find_create_node()
405 if(!rbtree_insert(&z->data, &ld->node)) { in lz_find_create_node()
409 if(nmlabs > z->namelabs) { in lz_find_create_node()
411 if(!lz_find_create_node(z, nm, nmlen, nmlabs-1, res)) in lz_find_create_node()
421 lz_enter_rr_into_zone(struct local_zone* z, const char* rrstr) in lz_enter_rr_into_zone() argument
439 log_assert(z->dclass == rrclass); in lz_enter_rr_into_zone()
440 if(z->type == local_zone_redirect && in lz_enter_rr_into_zone()
441 query_dname_compare(z->name, nm) != 0) { in lz_enter_rr_into_zone()
448 if(!lz_find_create_node(z, nm, nmlen, nmlabs, &node)) { in lz_enter_rr_into_zone()
457 rrset = new_local_rrset(z->region, node, rrtype, rrclass); in lz_enter_rr_into_zone()
460 if(query_dname_compare(node->name, z->name) == 0) { in lz_enter_rr_into_zone()
464 z->soa = rrset->rrset; in lz_enter_rr_into_zone()
475 return insert_rr(z->region, pd, rdata, rdata_len, ttl); in lz_enter_rr_into_zone()
486 struct local_zone* z; in lz_enter_rr_str() local
494 z = local_zones_lookup(zones, rr_name, len, labs, rr_class); in lz_enter_rr_str()
495 if(!z) { in lz_enter_rr_str()
499 lock_rw_wrlock(&z->lock); in lz_enter_rr_str()
502 r = lz_enter_rr_into_zone(z, rr); in lz_enter_rr_str()
503 lock_rw_unlock(&z->lock); in lz_enter_rr_str()
512 struct local_zone* z; in lz_enter_zones() local
514 if(!(z=lz_enter_zone(zones, p->str, p->str2, in lz_enter_zones()
517 lock_rw_unlock(&z->lock); in lz_enter_zones()
526 struct local_zone z; in lz_exists() local
527 z.node.key = &z; in lz_exists()
528 z.dclass = LDNS_RR_CLASS_IN; in lz_exists()
529 if(!parse_dname(name, &z.name, &z.namelen, &z.namelabs)) { in lz_exists()
534 if(rbtree_search(&zones->ztree, &z.node)) { in lz_exists()
536 free(z.name); in lz_exists()
540 free(z.name); in lz_exists()
568 struct local_zone* z; in add_as112_default() local
572 if(!(z=lz_enter_zone(zones, name, "static", LDNS_RR_CLASS_IN))) in add_as112_default()
576 if(!lz_enter_rr_into_zone(z, str)) { in add_as112_default()
577 lock_rw_unlock(&z->lock); in add_as112_default()
581 if(!lz_enter_rr_into_zone(z, str)) { in add_as112_default()
582 lock_rw_unlock(&z->lock); in add_as112_default()
585 lock_rw_unlock(&z->lock); in add_as112_default()
593 struct local_zone* z; in lz_enter_defaults() local
602 if(!(z=lz_enter_zone(zones, "localhost.", "static", in lz_enter_defaults()
604 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
606 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
609 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
611 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
614 if(z) { lock_rw_unlock(&z->lock); } in lz_enter_defaults()
617 lock_rw_unlock(&z->lock); in lz_enter_defaults()
622 if(!(z=lz_enter_zone(zones, "127.in-addr.arpa.", "static", in lz_enter_defaults()
624 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
626 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
629 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
632 if(z) { lock_rw_unlock(&z->lock); } in lz_enter_defaults()
635 lock_rw_unlock(&z->lock); in lz_enter_defaults()
640 …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 lz_enter_defaults()
642 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
644 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
647 !lz_enter_rr_into_zone(z, in lz_enter_defaults()
650 if(z) { lock_rw_unlock(&z->lock); } in lz_enter_defaults()
653 lock_rw_unlock(&z->lock); in lz_enter_defaults()
791 struct local_zone* z; in lz_setup_implicit() local
803 if(!(z=lz_enter_zone_dname(zones, n2, nmlen, match, in lz_setup_implicit()
807 lock_rw_unlock(&z->lock); in lz_setup_implicit()
916 local_zone_out(struct local_zone* z) in local_zone_out() argument
920 RBTREE_FOR(d, struct local_data*, &z->data) { in local_zone_out()
931 struct local_zone* z; in local_zones_print() local
934 RBTREE_FOR(z, struct local_zone*, &zones->ztree) { in local_zones_print()
935 lock_rw_rdlock(&z->lock); in local_zones_print()
936 switch(z->type) { in local_zones_print()
939 z->name, 0, z->dclass); in local_zones_print()
943 z->name, 0, z->dclass); in local_zones_print()
947 z->name, 0, z->dclass); in local_zones_print()
951 z->name, 0, z->dclass); in local_zones_print()
955 z->name, 0, z->dclass); in local_zones_print()
959 z->name, 0, z->dclass); in local_zones_print()
963 z->name, 0, z->dclass); in local_zones_print()
966 local_zone_out(z); in local_zones_print()
967 lock_rw_unlock(&z->lock); in local_zones_print()
1007 local_data_answer(struct local_zone* z, struct query_info* qinfo, in local_data_answer() argument
1018 if(z->type == local_zone_redirect) { in local_data_answer()
1019 key.name = z->name; in local_data_answer()
1020 key.namelen = z->namelen; in local_data_answer()
1021 key.namelabs = z->namelabs; in local_data_answer()
1023 ld = (struct local_data*)rbtree_search(&z->data, &key.node); in local_data_answer()
1031 if(z->type == local_zone_redirect) { in local_data_answer()
1054 lz_zone_answer(struct local_zone* z, struct query_info* qinfo, in lz_zone_answer() argument
1058 if(z->type == local_zone_deny) { in lz_zone_answer()
1063 } else if(z->type == local_zone_refuse) { in lz_zone_answer()
1068 } else if(z->type == local_zone_static || in lz_zone_answer()
1069 z->type == local_zone_redirect) { in lz_zone_answer()
1078 if(z->soa) in lz_zone_answer()
1080 z->soa, 0, rcode); in lz_zone_answer()
1085 } else if(z->type == local_zone_typetransparent) { in lz_zone_answer()
1095 if(z->soa) in lz_zone_answer()
1097 z->soa, 0, rcode); in lz_zone_answer()
1117 struct local_zone* z; in local_zones_answer() local
1120 z = local_zones_lookup(zones, qinfo->qname, in local_zones_answer()
1122 if(!z) { in local_zones_answer()
1126 lock_rw_rdlock(&z->lock); in local_zones_answer()
1129 if(local_data_answer(z, qinfo, edns, buf, temp, labs, &ld)) { in local_zones_answer()
1130 lock_rw_unlock(&z->lock); in local_zones_answer()
1133 r = lz_zone_answer(z, qinfo, edns, buf, temp, ld); in local_zones_answer()
1134 lock_rw_unlock(&z->lock); in local_zones_answer()
1172 set_kiddo_parents(struct local_zone* z, struct local_zone* match, in set_kiddo_parents() argument
1178 struct local_zone* p = z; in set_kiddo_parents()
1181 p->dclass == z->dclass && dname_strict_subdomain(p->name, in set_kiddo_parents()
1182 p->namelabs, z->name, z->namelabs)) { in set_kiddo_parents()
1201 struct local_zone* z = local_zone_create(name, len, labs, tp, dclass); in local_zones_add_zone() local
1202 if(!z) return NULL; in local_zones_add_zone()
1203 lock_rw_wrlock(&z->lock); in local_zones_add_zone()
1206 z->parent = local_zones_find(zones, name, len, labs, dclass); in local_zones_add_zone()
1209 if(!rbtree_insert(&zones->ztree, &z->node)) { in local_zones_add_zone()
1211 lock_rw_unlock(&z->lock); in local_zones_add_zone()
1212 local_zone_delete(z); in local_zones_add_zone()
1218 set_kiddo_parents(z, z->parent, z); in local_zones_add_zone()
1220 lock_rw_unlock(&z->lock); in local_zones_add_zone()
1221 return z; in local_zones_add_zone()
1224 void local_zones_del_zone(struct local_zones* zones, struct local_zone* z) in local_zones_del_zone() argument
1227 lock_rw_wrlock(&z->lock); in local_zones_del_zone()
1228 set_kiddo_parents(z, z, z->parent); in local_zones_del_zone()
1231 (void)rbtree_delete(&zones->ztree, z); in local_zones_del_zone()
1234 lock_rw_unlock(&z->lock); in local_zones_del_zone()
1235 local_zone_delete(z); in local_zones_del_zone()
1245 struct local_zone* z; in local_zones_add_RR() local
1254 z = local_zones_lookup(zones, rr_name, len, labs, rr_class); in local_zones_add_RR()
1255 if(!z) { in local_zones_add_RR()
1256 z = local_zones_add_zone(zones, rr_name, len, labs, rr_class, in local_zones_add_RR()
1258 if(!z) { in local_zones_add_RR()
1265 lock_rw_wrlock(&z->lock); in local_zones_add_RR()
1267 r = lz_enter_rr_into_zone(z, rr); in local_zones_add_RR()
1268 lock_rw_unlock(&z->lock); in local_zones_add_RR()
1289 del_empty_term(struct local_zone* z, struct local_data* d, in del_empty_term() argument
1295 (void)rbtree_delete(&z->data, d); in del_empty_term()
1302 d = lz_find_node(z, name, len, labs); in del_empty_term()
1310 struct local_zone* z; in local_zones_del_data() local
1313 z = local_zones_lookup(zones, name, len, labs, dclass); in local_zones_del_data()
1314 if(!z) { in local_zones_del_data()
1319 lock_rw_wrlock(&z->lock); in local_zones_del_data()
1323 d = lz_find_node(z, name, len, labs); in local_zones_del_data()
1328 if(query_dname_compare(d->name, z->name) == 0) in local_zones_del_data()
1329 z->soa = NULL; in local_zones_del_data()
1332 del_empty_term(z, d, name, len, labs); in local_zones_del_data()
1335 lock_rw_unlock(&z->lock); in local_zones_del_data()