Lines Matching defs:az

291 	struct auth_zones* az = (struct auth_zones*)calloc(1, sizeof(*az));
292 if(!az) {
296 rbtree_init(&az->ztree, &auth_zone_cmp);
297 rbtree_init(&az->xtree, &auth_xfer_cmp);
298 lock_rw_init(&az->lock);
299 lock_protect(&az->lock, &az->ztree, sizeof(az->ztree));
300 lock_protect(&az->lock, &az->xtree, sizeof(az->xtree));
302 lock_rw_init(&az->rpz_lock);
303 lock_protect(&az->rpz_lock, &az->rpz_first, sizeof(az->rpz_first));
304 return az;
386 auth_zone_delete(struct auth_zone* z, struct auth_zones* az)
392 if(az && z->rpz) {
394 lock_rw_wrlock(&az->rpz_lock);
398 az->rpz_first = z->rpz_az_next;
401 lock_rw_unlock(&az->rpz_lock);
411 auth_zone_create(struct auth_zones* az, uint8_t* nm, size_t nmlen,
433 * pointers, which are protected using az->lock */
434 if(!rbtree_insert(&az->ztree, &z->node)) {
444 auth_zone_find(struct auth_zones* az, uint8_t* nm, size_t nmlen,
453 return (struct auth_zone*)rbtree_search(&az->ztree, &key);
457 auth_xfer_find(struct auth_zones* az, uint8_t* nm, size_t nmlen,
466 return (struct auth_xfer*)rbtree_search(&az->xtree, &key);
471 auth_zone_find_less_equal(struct auth_zones* az, uint8_t* nm, size_t nmlen,
480 return rbtree_find_less_equal(&az->ztree, &key, (rbnode_type**)z);
486 auth_zones_find_zone(struct auth_zones* az, uint8_t* name, size_t name_len,
492 if(auth_zone_find_less_equal(az, nm, nmlen, dclass, &z)) {
507 z = auth_zone_find(az, nm, nmlen, dclass);
515 /** find or create zone with name str. caller must have lock on az.
518 auth_zones_find_or_add_zone(struct auth_zones* az, char* name)
528 z = auth_zone_find(az, nm, nmlen, LDNS_RR_CLASS_IN);
531 z = auth_zone_create(az, nm, nmlen, LDNS_RR_CLASS_IN);
538 /** find or create xfer zone with name str. caller must have lock on az.
541 auth_zones_find_or_add_xfer(struct auth_zones* az, struct auth_zone* z)
544 x = auth_xfer_find(az, z->name, z->namelen, z->dclass);
547 x = auth_xfer_create(az, z);
1746 auth_zones_read_zones(struct auth_zones* az, struct config_file* cfg)
1749 lock_rw_wrlock(&az->lock);
1750 RBTREE_FOR(z, struct auth_zone*, &az->ztree) {
1754 lock_rw_unlock(&az->lock);
1759 lock_rw_unlock(&az->lock);
1829 * @param az: auth zones structure
1833 auth_zones_setup_zones(struct auth_zones* az)
1837 lock_rw_wrlock(&az->lock);
1838 RBTREE_FOR(z, struct auth_zone*, &az->ztree) {
1840 x = auth_xfer_find(az, z->name, z->namelen, z->dclass);
1849 lock_rw_unlock(&az->lock);
1857 lock_rw_unlock(&az->lock);
1863 auth_zones_cfg(struct auth_zones* az, struct config_auth* c)
1872 lock_rw_wrlock(&az->rpz_lock);
1874 lock_rw_wrlock(&az->lock);
1875 if(!(z=auth_zones_find_or_add_zone(az, c->name))) {
1876 lock_rw_unlock(&az->lock);
1878 lock_rw_unlock(&az->rpz_lock);
1883 if(!(x=auth_zones_find_or_add_xfer(az, z))) {
1884 lock_rw_unlock(&az->lock);
1887 lock_rw_unlock(&az->rpz_lock);
1893 az->have_downstream = 1;
1894 lock_rw_unlock(&az->lock);
1904 lock_rw_unlock(&az->rpz_lock);
1917 /* the az->rpz_lock is locked above */
1918 z->rpz_az_next = az->rpz_first;
1919 if(az->rpz_first)
1920 az->rpz_first->rpz_az_prev = z;
1921 az->rpz_first = z;
1924 lock_rw_unlock(&az->rpz_lock);
1952 az_setall_deleted(struct auth_zones* az)
1955 lock_rw_wrlock(&az->lock);
1956 RBTREE_FOR(z, struct auth_zone*, &az->ztree) {
1961 lock_rw_unlock(&az->lock);
1968 az_delete_deleted_zones(struct auth_zones* az)
1973 lock_rw_wrlock(&az->lock);
1974 RBTREE_FOR(z, struct auth_zone*, &az->ztree) {
1990 xfr = auth_xfer_find(az, z->name, z->namelen, z->dclass);
1992 (void)rbtree_delete(&az->xtree, &xfr->node);
1995 (void)rbtree_delete(&az->ztree, &z->node);
1996 auth_zone_delete(z, az);
1999 lock_rw_unlock(&az->lock);
2002 int auth_zones_apply_cfg(struct auth_zones* az, struct config_file* cfg,
2006 az_setall_deleted(az);
2013 if(!auth_zones_cfg(az, p)) {
2018 az_delete_deleted_zones(az);
2019 if(!auth_zones_read_zones(az, cfg))
2022 if(!auth_zones_setup_zones(az))
2124 void auth_zones_delete(struct auth_zones* az)
2126 if(!az) return;
2127 lock_rw_destroy(&az->lock);
2128 lock_rw_destroy(&az->rpz_lock);
2129 traverse_postorder(&az->ztree, auth_zone_del, NULL);
2130 traverse_postorder(&az->xtree, auth_xfer_del, NULL);
2131 free(az);
3243 int auth_zones_lookup(struct auth_zones* az, struct query_info* qinfo,
3250 lock_rw_rdlock(&az->lock);
3251 z = auth_zone_find(az, dp_nm, dp_nmlen, qinfo->qclass);
3253 lock_rw_unlock(&az->lock);
3259 lock_rw_unlock(&az->lock);
3323 int auth_zones_answer(struct auth_zones* az, struct module_env* env,
3332 lock_rw_rdlock(&az->lock);
3333 if(!az->have_downstream) {
3335 lock_rw_unlock(&az->lock);
3342 z = auth_zones_find_zone(az, delname, delnamelen,
3345 z = auth_zones_find_zone(az, qinfo->qname, qinfo->qname_len,
3350 lock_rw_unlock(&az->lock);
3354 lock_rw_unlock(&az->lock);
3365 lock_rw_wrlock(&az->lock);
3366 az->num_query_down++;
3367 lock_rw_unlock(&az->lock);
3380 lock_rw_wrlock(&az->lock);
3381 az->num_query_down++;
3382 lock_rw_unlock(&az->lock);
3393 int auth_zones_can_fallback(struct auth_zones* az, uint8_t* nm, size_t nmlen,
3398 lock_rw_rdlock(&az->lock);
3399 z = auth_zone_find(az, nm, nmlen, dclass);
3401 lock_rw_unlock(&az->lock);
3406 lock_rw_unlock(&az->lock);
3564 int auth_zones_notify(struct auth_zones* az, struct module_env* env,
3572 lock_rw_rdlock(&az->lock);
3573 xfr = auth_xfer_find(az, nm, nmlen, dclass);
3575 lock_rw_unlock(&az->lock);
3581 lock_rw_unlock(&az->lock);
3596 int auth_zones_startprobesequence(struct auth_zones* az,
3600 lock_rw_rdlock(&az->lock);
3601 xfr = auth_xfer_find(az, nm, nmlen, dclass);
3603 lock_rw_unlock(&az->lock);
3607 lock_rw_unlock(&az->lock);
4981 /* release xfr lock, then, while holding az->lock grab both
6662 auth_xfer_pickup_initial(struct auth_zones* az, struct module_env* env)
6665 lock_rw_wrlock(&az->lock);
6666 RBTREE_FOR(x, struct auth_xfer*, &az->xtree) {
6678 lock_rw_unlock(&az->lock);
6681 void auth_zones_cleanup(struct auth_zones* az)
6684 lock_rw_wrlock(&az->lock);
6685 RBTREE_FOR(x, struct auth_xfer*, &az->xtree) {
6699 lock_rw_unlock(&az->lock);
6778 auth_xfer_create(struct auth_zones* az, struct auth_zone* z)
6789 (void)rbtree_insert(&az->xtree, &xfr->node);