Lines Matching full:dp

56 	struct delegpt* dp=(struct delegpt*)regional_alloc(  in delegpt_create()  local
57 region, sizeof(*dp)); in delegpt_create()
58 if(!dp) in delegpt_create()
60 memset(dp, 0, sizeof(*dp)); in delegpt_create()
61 return dp; in delegpt_create()
64 struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) in delegpt_copy() argument
71 if(!delegpt_set_name(copy, region, dp->name)) in delegpt_copy()
73 copy->bogus = dp->bogus; in delegpt_copy()
74 copy->has_parent_side_NS = dp->has_parent_side_NS; in delegpt_copy()
75 copy->ssl_upstream = dp->ssl_upstream; in delegpt_copy()
76 copy->tcp_upstream = dp->tcp_upstream; in delegpt_copy()
77 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_copy()
88 for(a = dp->target_list; a; a = a->next_target) { in delegpt_copy()
97 delegpt_set_name(struct delegpt* dp, struct regional* region, uint8_t* name) in delegpt_set_name() argument
99 log_assert(!dp->dp_type_mlc); in delegpt_set_name()
100 dp->namelabs = dname_count_size_labels(name, &dp->namelen); in delegpt_set_name()
101 dp->name = regional_alloc_init(region, name, dp->namelen); in delegpt_set_name()
102 return dp->name != 0; in delegpt_set_name()
106 delegpt_add_ns(struct delegpt* dp, struct regional* region, uint8_t* name, in delegpt_add_ns() argument
112 log_assert(!dp->dp_type_mlc); in delegpt_add_ns()
115 if(delegpt_find_ns(dp, name, len)) in delegpt_add_ns()
121 ns->next = dp->nslist; in delegpt_add_ns()
123 dp->nslist = ns; in delegpt_add_ns()
144 delegpt_find_ns(struct delegpt* dp, uint8_t* name, size_t namelen) in delegpt_find_ns() argument
146 struct delegpt_ns* p = dp->nslist; in delegpt_find_ns()
158 delegpt_find_addr(struct delegpt* dp, struct sockaddr_storage* addr, in delegpt_find_addr() argument
161 struct delegpt_addr* p = dp->target_list; in delegpt_find_addr()
174 delegpt_add_target(struct delegpt* dp, struct regional* region, in delegpt_add_target() argument
178 struct delegpt_ns* ns = delegpt_find_ns(dp, name, namelen); in delegpt_add_target()
179 log_assert(!dp->dp_type_mlc); in delegpt_add_target()
196 return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, in delegpt_add_target()
201 delegpt_add_addr(struct delegpt* dp, struct regional* region, in delegpt_add_addr() argument
206 log_assert(!dp->dp_type_mlc); in delegpt_add_addr()
212 if((a = delegpt_find_addr(dp, addr, addrlen))) { in delegpt_add_addr()
226 a->next_target = dp->target_list; in delegpt_add_addr()
227 dp->target_list = a; in delegpt_add_addr()
229 a->next_usable = dp->usable_list; in delegpt_add_addr()
230 dp->usable_list = a; in delegpt_add_addr()
248 delegpt_count_ns(struct delegpt* dp, size_t* numns, size_t* missing) in delegpt_count_ns() argument
253 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_count_ns()
261 delegpt_count_addr(struct delegpt* dp, size_t* numaddr, size_t* numres, in delegpt_count_addr() argument
268 for(a = dp->target_list; a; a = a->next_target) { in delegpt_count_addr()
271 for(a = dp->result_list; a; a = a->next_result) { in delegpt_count_addr()
274 for(a = dp->usable_list; a; a = a->next_usable) { in delegpt_count_addr()
279 void delegpt_log(enum verbosity_value v, struct delegpt* dp) in delegpt_log() argument
287 dname_str(dp->name, buf); in delegpt_log()
288 if(dp->nslist == NULL && dp->target_list == NULL) { in delegpt_log()
292 delegpt_count_ns(dp, &numns, &missing); in delegpt_log()
293 delegpt_count_addr(dp, &numaddr, &numres, &numavail); in delegpt_log()
298 (dp->has_parent_side_NS?" parentNS":" cacheNS")); in delegpt_log()
300 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_log()
305 (dp->bogus?" BOGUS":""), (ns->lame?" PARENTSIDE":""), in delegpt_log()
309 for(a = dp->target_list; a; a = a->next_target) { in delegpt_log()
325 delegpt_addr_on_result_list(struct delegpt* dp, struct delegpt_addr* find) in delegpt_addr_on_result_list() argument
327 struct delegpt_addr* a = dp->result_list; in delegpt_addr_on_result_list()
337 delegpt_usable_list_remove_addr(struct delegpt* dp, struct delegpt_addr* del) in delegpt_usable_list_remove_addr() argument
339 struct delegpt_addr* usa = dp->usable_list, *prev = NULL; in delegpt_usable_list_remove_addr()
345 else dp->usable_list = usa->next_usable; in delegpt_usable_list_remove_addr()
354 delegpt_add_to_result_list(struct delegpt* dp, struct delegpt_addr* a) in delegpt_add_to_result_list() argument
356 if(delegpt_addr_on_result_list(dp, a)) in delegpt_add_to_result_list()
358 delegpt_usable_list_remove_addr(dp, a); in delegpt_add_to_result_list()
359 a->next_result = dp->result_list; in delegpt_add_to_result_list()
360 dp->result_list = a; in delegpt_add_to_result_list()
364 delegpt_add_unused_targets(struct delegpt* dp) in delegpt_add_unused_targets() argument
366 struct delegpt_addr* usa = dp->usable_list; in delegpt_add_unused_targets()
367 dp->usable_list = NULL; in delegpt_add_unused_targets()
369 usa->next_result = dp->result_list; in delegpt_add_unused_targets()
370 dp->result_list = usa; in delegpt_add_unused_targets()
376 delegpt_count_targets(struct delegpt* dp) in delegpt_count_targets() argument
380 for(a = dp->target_list; a; a = a->next_target) in delegpt_count_targets()
386 delegpt_count_missing_targets(struct delegpt* dp, int* alllame) in delegpt_count_missing_targets() argument
390 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_count_missing_targets()
415 struct delegpt* dp; in delegpt_from_message() local
433 dp = delegpt_create(region); in delegpt_from_message()
434 if(!dp) in delegpt_from_message()
436 dp->has_parent_side_NS = 1; /* created from message */ in delegpt_from_message()
437 if(!delegpt_set_name(dp, region, ns_rrset->rk.dname)) in delegpt_from_message()
439 if(!delegpt_rrset_add_ns(dp, region, ns_rrset, 0)) in delegpt_from_message()
451 if(!delegpt_add_rrset_A(dp, region, s, 0, NULL)) in delegpt_from_message()
454 if(!delegpt_add_rrset_AAAA(dp, region, s, 0, NULL)) in delegpt_from_message()
458 return dp; in delegpt_from_message()
462 delegpt_rrset_add_ns(struct delegpt* dp, struct regional* region, in delegpt_rrset_add_ns() argument
468 log_assert(!dp->dp_type_mlc); in delegpt_rrset_add_ns()
470 dp->bogus = 1; in delegpt_rrset_add_ns()
477 if(!delegpt_add_ns(dp, region, nsdata->rr_data[i]+2, lame, in delegpt_rrset_add_ns()
485 delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, in delegpt_add_rrset_A() argument
492 log_assert(!dp->dp_type_mlc); in delegpt_add_rrset_A()
499 if(!delegpt_add_target(dp, region, ak->rk.dname, in delegpt_add_rrset_A()
508 delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, in delegpt_add_rrset_AAAA() argument
515 log_assert(!dp->dp_type_mlc); in delegpt_add_rrset_AAAA()
522 if(!delegpt_add_target(dp, region, ak->rk.dname, in delegpt_add_rrset_AAAA()
531 delegpt_add_rrset(struct delegpt* dp, struct regional* region, in delegpt_add_rrset() argument
537 return delegpt_rrset_add_ns(dp, region, rrset, lame); in delegpt_add_rrset()
539 return delegpt_add_rrset_A(dp, region, rrset, lame, additions); in delegpt_add_rrset()
541 return delegpt_add_rrset_AAAA(dp, region, rrset, lame, in delegpt_add_rrset()
559 void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry* msg) in delegpt_add_neg_msg() argument
566 struct delegpt_ns* ns = delegpt_find_ns(dp, msg->key.qname, in delegpt_add_neg_msg()
572 void delegpt_no_ipv6(struct delegpt* dp) in delegpt_no_ipv6() argument
575 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_no_ipv6()
582 void delegpt_no_ipv4(struct delegpt* dp) in delegpt_no_ipv4() argument
585 for(ns = dp->nslist; ns; ns = ns->next) { in delegpt_no_ipv4()
594 struct delegpt* dp=(struct delegpt*)calloc(1, sizeof(*dp)); in delegpt_create_mlc() local
595 if(!dp) in delegpt_create_mlc()
597 dp->dp_type_mlc = 1; in delegpt_create_mlc()
599 dp->namelabs = dname_count_size_labels(name, &dp->namelen); in delegpt_create_mlc()
600 dp->name = memdup(name, dp->namelen); in delegpt_create_mlc()
601 if(!dp->name) { in delegpt_create_mlc()
602 free(dp); in delegpt_create_mlc()
606 return dp; in delegpt_create_mlc()
609 void delegpt_free_mlc(struct delegpt* dp) in delegpt_free_mlc() argument
613 if(!dp) return; in delegpt_free_mlc()
614 log_assert(dp->dp_type_mlc); in delegpt_free_mlc()
615 n = dp->nslist; in delegpt_free_mlc()
623 a = dp->target_list; in delegpt_free_mlc()
630 free(dp->name); in delegpt_free_mlc()
631 free(dp); in delegpt_free_mlc()
634 int delegpt_set_name_mlc(struct delegpt* dp, uint8_t* name) in delegpt_set_name_mlc() argument
636 log_assert(dp->dp_type_mlc); in delegpt_set_name_mlc()
637 dp->namelabs = dname_count_size_labels(name, &dp->namelen); in delegpt_set_name_mlc()
638 dp->name = memdup(name, dp->namelen); in delegpt_set_name_mlc()
639 return (dp->name != NULL); in delegpt_set_name_mlc()
642 int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame, in delegpt_add_ns_mlc() argument
648 log_assert(dp->dp_type_mlc); in delegpt_add_ns_mlc()
651 if(delegpt_find_ns(dp, name, len)) in delegpt_add_ns_mlc()
662 ns->next = dp->nslist; in delegpt_add_ns_mlc()
663 dp->nslist = ns; in delegpt_add_ns_mlc()
685 int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, in delegpt_add_addr_mlc() argument
690 log_assert(dp->dp_type_mlc); in delegpt_add_addr_mlc()
696 if((a = delegpt_find_addr(dp, addr, addrlen))) { in delegpt_add_addr_mlc()
707 a->next_target = dp->target_list; in delegpt_add_addr_mlc()
708 dp->target_list = a; in delegpt_add_addr_mlc()
710 a->next_usable = dp->usable_list; in delegpt_add_addr_mlc()
711 dp->usable_list = a; in delegpt_add_addr_mlc()
730 int delegpt_add_target_mlc(struct delegpt* dp, uint8_t* name, size_t namelen, in delegpt_add_target_mlc() argument
734 struct delegpt_ns* ns = delegpt_find_ns(dp, name, namelen); in delegpt_add_target_mlc()
735 log_assert(dp->dp_type_mlc); in delegpt_add_target_mlc()
752 return delegpt_add_addr_mlc(dp, addr, addrlen, bogus, lame, in delegpt_add_target_mlc()
756 size_t delegpt_get_mem(struct delegpt* dp) in delegpt_get_mem() argument
760 if(!dp) return 0; in delegpt_get_mem()
761 s = sizeof(*dp) + dp->namelen + in delegpt_get_mem()
762 delegpt_count_targets(dp)*sizeof(struct delegpt_addr); in delegpt_get_mem()
763 for(ns=dp->nslist; ns; ns=ns->next) in delegpt_get_mem()