Lines Matching refs:hints

2  * iterator/iter_hints.c - iterative resolver module stub and root hints.
40 * Keep track of stub and root hints, and read those from config.
56 struct iter_hints* hints = (struct iter_hints*)calloc(1,
58 if(!hints)
60 return hints;
76 static void hints_del_tree(struct iter_hints* hints)
78 traverse_postorder(&hints->tree, &delhintnode, NULL);
82 hints_delete(struct iter_hints* hints)
84 if(!hints)
86 hints_del_tree(hints);
87 free(hints);
90 /** add hint to delegation hints */
113 /** obtain compiletime provided root hints */
168 hints_insert(struct iter_hints* hints, uint16_t c, struct delegpt* dp,
179 if(!name_tree_insert(&hints->tree, &node->node, dp->name, dp->namelen,
183 log_err("second hints for zone %s ignored.", buf);
271 read_stubs(struct iter_hints* hints, struct config_file* cfg)
291 if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, !s->isprime))
297 /** read root hints from file */
299 read_root_hints(struct iter_hints* hints, char* fname)
309 log_err("could not read root hints %s: %s",
315 log_err("out of memory reading root hints");
319 verbose(VERB_QUERY, "Reading root hints from %s", fname);
329 log_err("reading root hints %s %d:%d: %s", fname,
340 log_err("out of memory reading root hints");
364 log_err("out of memory reading root hints");
381 log_err("out of memory reading root hints");
388 log_warn("root hints %s:%d skipping type %s",
394 log_warn("root hints %s: no NS content", fname);
398 if(!hints_insert(hints, c, dp, 0)) {
410 /** read root hints list */
412 read_root_hints_list(struct iter_hints* hints, struct config_file* cfg)
423 if(!read_root_hints(hints, f))
431 hints_apply_cfg(struct iter_hints* hints, struct config_file* cfg)
433 hints_del_tree(hints);
434 name_tree_init(&hints->tree);
436 /* read root hints */
437 if(!read_root_hints_list(hints, cfg))
440 /* read stub hints */
441 if(!read_stubs(hints, cfg))
444 /* use fallback compiletime root hints */
445 if(!hints_lookup_root(hints, LDNS_RR_CLASS_IN)) {
448 verbose(VERB_ALGO, "no config, using builtin root hints.");
451 if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, 0))
455 name_tree_init_parents(&hints->tree);
460 hints_lookup_root(struct iter_hints* hints, uint16_t qclass)
464 stub = (struct iter_hints_stub*)name_tree_find(&hints->tree,
472 hints_lookup_stub(struct iter_hints* hints, uint8_t* qname,
481 r = (struct iter_hints_stub*)name_tree_lookup(&hints->tree, qname,
508 int hints_next_root(struct iter_hints* hints, uint16_t* qclass)
510 return name_tree_next_root(&hints->tree, qclass);
514 hints_get_mem(struct iter_hints* hints)
518 if(!hints) return 0;
519 s = sizeof(*hints);
520 RBTREE_FOR(p, struct iter_hints_stub*, &hints->tree) {
527 hints_add_stub(struct iter_hints* hints, uint16_t c, struct delegpt* dp,
531 if((z=(struct iter_hints_stub*)name_tree_find(&hints->tree,
533 (void)rbtree_delete(&hints->tree, &z->node);
536 if(!hints_insert(hints, c, dp, noprime))
538 name_tree_init_parents(&hints->tree);
543 hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t* nm)
548 if(!(z=(struct iter_hints_stub*)name_tree_find(&hints->tree,
551 (void)rbtree_delete(&hints->tree, &z->node);
553 name_tree_init_parents(&hints->tree);