Lines Matching refs:hints

56 	struct iter_hints* hints = (struct iter_hints*)calloc(1,  in hints_create()  local
58 if(!hints) in hints_create()
60 lock_rw_init(&hints->lock); in hints_create()
61 lock_protect(&hints->lock, &hints->tree, sizeof(hints->tree)); in hints_create()
62 return hints; in hints_create()
78 static void hints_del_tree(struct iter_hints* hints) in hints_del_tree() argument
80 traverse_postorder(&hints->tree, &delhintnode, NULL); in hints_del_tree()
84 hints_delete(struct iter_hints* hints) in hints_delete() argument
86 if(!hints) in hints_delete()
88 lock_rw_destroy(&hints->lock); in hints_delete()
89 hints_del_tree(hints); in hints_delete()
90 free(hints); in hints_delete()
171 hints_insert(struct iter_hints* hints, uint16_t c, struct delegpt* dp, in hints_insert() argument
182 if(!name_tree_insert(&hints->tree, &node->node, dp->name, dp->namelen, in hints_insert()
280 read_stubs(struct iter_hints* hints, struct config_file* cfg) in read_stubs() argument
302 if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, !s->isprime)) in read_stubs()
310 read_root_hints(struct iter_hints* hints, char* fname) in read_root_hints() argument
410 if(!hints_insert(hints, c, dp, 0)) { in read_root_hints()
423 read_root_hints_list(struct iter_hints* hints, struct config_file* cfg) in read_root_hints_list() argument
434 if(!read_root_hints(hints, f)) in read_root_hints_list()
442 hints_apply_cfg(struct iter_hints* hints, struct config_file* cfg) in hints_apply_cfg() argument
445 lock_rw_wrlock(&hints->lock); in hints_apply_cfg()
446 hints_del_tree(hints); in hints_apply_cfg()
447 name_tree_init(&hints->tree); in hints_apply_cfg()
450 if(!read_root_hints_list(hints, cfg)) { in hints_apply_cfg()
451 lock_rw_unlock(&hints->lock); in hints_apply_cfg()
456 if(!read_stubs(hints, cfg)) { in hints_apply_cfg()
457 lock_rw_unlock(&hints->lock); in hints_apply_cfg()
462 if(!hints_find_root(hints, LDNS_RR_CLASS_IN, nolock)) { in hints_apply_cfg()
467 lock_rw_unlock(&hints->lock); in hints_apply_cfg()
470 if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, 0)) { in hints_apply_cfg()
471 lock_rw_unlock(&hints->lock); in hints_apply_cfg()
476 name_tree_init_parents(&hints->tree); in hints_apply_cfg()
477 lock_rw_unlock(&hints->lock); in hints_apply_cfg()
482 hints_find(struct iter_hints* hints, uint8_t* qname, uint16_t qclass, in hints_find() argument
490 if(!nolock) { lock_rw_rdlock(&hints->lock); } in hints_find()
491 stub = (struct iter_hints_stub*)name_tree_find(&hints->tree, in hints_find()
494 if(!has_dp && !nolock) { lock_rw_unlock(&hints->lock); } in hints_find()
499 hints_find_root(struct iter_hints* hints, uint16_t qclass, int nolock) in hints_find_root() argument
502 return hints_find(hints, &rootlab, qclass, nolock); in hints_find_root()
506 hints_lookup_stub(struct iter_hints* hints, uint8_t* qname, in hints_lookup_stub() argument
516 if(!nolock) { lock_rw_rdlock(&hints->lock); } in hints_lookup_stub()
517 r = (struct iter_hints_stub*)name_tree_lookup(&hints->tree, qname, in hints_lookup_stub()
520 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_lookup_stub()
528 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_lookup_stub()
545 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_lookup_stub()
549 int hints_next_root(struct iter_hints* hints, uint16_t* qclass, int nolock) in hints_next_root() argument
553 if(!nolock) { lock_rw_rdlock(&hints->lock); } in hints_next_root()
554 ret = name_tree_next_root(&hints->tree, qclass); in hints_next_root()
555 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_next_root()
560 hints_get_mem(struct iter_hints* hints) in hints_get_mem() argument
564 if(!hints) return 0; in hints_get_mem()
565 lock_rw_rdlock(&hints->lock); in hints_get_mem()
566 s = sizeof(*hints); in hints_get_mem()
567 RBTREE_FOR(p, struct iter_hints_stub*, &hints->tree) { in hints_get_mem()
570 lock_rw_unlock(&hints->lock); in hints_get_mem()
575 hints_add_stub(struct iter_hints* hints, uint16_t c, struct delegpt* dp, in hints_add_stub() argument
580 if(!nolock) { lock_rw_wrlock(&hints->lock); } in hints_add_stub()
581 if((z=(struct iter_hints_stub*)name_tree_find(&hints->tree, in hints_add_stub()
583 (void)rbtree_delete(&hints->tree, &z->node); in hints_add_stub()
586 if(!hints_insert(hints, c, dp, noprime)) { in hints_add_stub()
587 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_add_stub()
590 name_tree_init_parents(&hints->tree); in hints_add_stub()
591 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_add_stub()
596 hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t* nm, in hints_delete_stub() argument
603 if(!nolock) { lock_rw_wrlock(&hints->lock); } in hints_delete_stub()
604 if(!(z=(struct iter_hints_stub*)name_tree_find(&hints->tree, in hints_delete_stub()
606 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_delete_stub()
609 (void)rbtree_delete(&hints->tree, &z->node); in hints_delete_stub()
611 name_tree_init_parents(&hints->tree); in hints_delete_stub()
612 if(!nolock) { lock_rw_unlock(&hints->lock); } in hints_delete_stub()