• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/unbound/services/

Lines Matching refs:rrset

136 /** grow rrset array by one in msg */
157 /** get ttl of rrset */
166 /** Copy rrset into region from domain-datanode and packet rrset */
169 struct auth_rrset* rrset, struct regional* region, time_t adjust)
174 key.entry.data = rrset->data;
177 key.rk.type = htons(rrset->type);
201 /** see if rrset is a duplicate in the answer message */
217 /** add rrset to answer section (no auth, add rrsets yet) */
220 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
224 if(!rrset || !node)
226 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
234 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
242 /** add rrset to authority section (no additonal section rrsets yet) */
245 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
248 if(!rrset || !node)
250 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
258 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
266 /** add rrset to additional section */
269 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
271 if(!rrset || !node)
273 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
281 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
351 /** delete auth rrset node */
353 auth_rrset_delete(struct auth_rrset* rrset)
355 if(!rrset) return;
356 free(rrset->data);
357 free(rrset);
645 /** find rrset of given type in the domain */
649 struct auth_rrset* rrset;
651 rrset = n->rrsets;
652 while(rrset) {
653 if(rrset->type == t)
654 return rrset;
655 rrset = rrset->next;
660 /** remove rrset of this type from domain */
664 struct auth_rrset* rrset, *prev;
667 rrset = node->rrsets;
668 while(rrset) {
669 if(rrset->type == rr_type) {
671 if(prev) prev->next = rrset->next;
672 else node->rrsets = rrset->next;
673 auth_rrset_delete(rrset);
676 prev = rrset;
677 rrset = rrset->next;
681 /** find an rrsig index in the rrset. returns true if found */
726 * reallocates the packed rrset for a new one, false on alloc failure */
728 rrset_remove_rr(struct auth_rrset* rrset, size_t index)
730 struct packed_rrset_data* d, *old = rrset->data;
782 free(rrset->data);
783 rrset->data = d;
788 * This reallocates the packed rrset for a new one */
790 rrset_add_rr(struct auth_rrset* rrset, uint32_t rr_ttl, uint8_t* rdata,
793 struct packed_rrset_data* d, *old = rrset->data;
853 rrset->data = d;
858 /** Create new rrset for node with packed rrset with one RR element */
863 struct auth_rrset* rrset = (struct auth_rrset*)calloc(1,
864 sizeof(*rrset));
867 if(!rrset) {
871 rrset->type = rr_type;
873 /* the rrset data structure, with one RR */
878 free(rrset);
882 rrset->data = d;
896 /* insert rrset into linked list for domain */
897 /* find sorted place to link the rrset into the list */
905 rrset->next = p;
906 if(prev) prev->next = rrset;
907 else node->rrsets = rrset;
908 return rrset;
929 /** See if rrsig set has covered sigs for rrset and move them over */
932 struct auth_rrset* rrset, struct auth_rrset* rrsig)
936 struct packed_rrset_data* old = rrset->data;
939 log_assert(rrset->type == rr_type);
947 /* allocate rrset sigsz larger for extra sigs elements, and
985 /* move over the rrsigs to the larger rrset*/
1000 /* put it in and deallocate the old rrset */
1001 rrset->data = d;
1017 * node->rrset structure */
1056 /* put it in and deallocate the old rrset */
1063 /** copy the rrsigs from the rrset to the rrsig rrset, because the rrset
1064 * is going to be deleted. reallocates the RRSIG rrset data. */
1066 rrsigs_copy_from_rrset_to_rrsigset(struct auth_rrset* rrset,
1070 if(rrset->data->rrsig_count == 0)
1075 for(i=rrset->data->count;
1076 i<rrset->data->count+rrset->data->rrsig_count; i++) {
1077 uint8_t* rdata = rrset->data->rr_data[i];
1078 size_t rdatalen = rrset->data->rr_len[i];
1079 time_t rr_ttl = rrset->data->rr_ttl[i];
1096 struct auth_rrset* rrset;
1100 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1102 * to the rrset of the covered data type */
1103 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1107 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 1))
1109 } else if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1110 /* add RRSIG to rrset of type RRSIG */
1111 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1115 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0))
1118 /* create rrset of type RRSIG */
1125 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1127 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1131 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0))
1136 if(!(rrset=rrset_create(node, rr_type, rr_ttl, rdata,
1146 rrset, rrsig))
1197 struct auth_rrset* rrset;
1201 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1202 if(packed_rrset_find_rr(rrset->data, rdata, rdatalen, &index)) {
1203 if(rrset->data->count == 1 &&
1204 rrset->data->rrsig_count == 0) {
1205 /* last RR, delete the rrset */
1207 } else if(rrset->data->count == 1 &&
1208 rrset->data->rrsig_count != 0) {
1209 /* move RRSIGs to the RRSIG rrset, or
1215 * existing rrset of type RRSIG */
1217 rrset, rrsigset);
1218 /* and then delete the rrset */
1221 /* no rrset of type RRSIG, this
1224 if(!rrset_remove_rr(rrset, index))
1226 rrset->type = LDNS_RR_TYPE_RRSIG;
1227 rrset->data->count = rrset->data->rrsig_count;
1228 rrset->data->rrsig_count = 0;
1231 /* remove the RR from the rrset */
1232 if(!rrset_remove_rr(rrset, index))
1237 /* rr not found in rrset */
1243 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1244 if(az_rrset_find_rrsig(rrset->data, rdata, rdatalen,
1249 * rrset */
1250 if(!rrset_remove_rr(rrset, index))
1681 /** write rrset to file */
1774 return 0; /* no RRset or no RRs in rrset */
1792 return 0; /* no RRset or no RRs in rrset */
2138 struct auth_rrset* rrset = n->rrsets;
2140 while(rrset) {
2141 if(rrset->type == LDNS_RR_TYPE_NSEC3) {
2143 } else if(rrset->type != LDNS_RR_TYPE_RRSIG) {
2146 rrset = rrset->next;
2236 * rrset is the closest DNAME or NS rrset that was found.
2241 struct auth_rrset** rrset)
2245 *rrset = NULL;
2266 (*rrset=az_domain_rrset(n, LDNS_RR_TYPE_NS)) &&
2277 (*rrset=az_domain_rrset(n, LDNS_RR_TYPE_DNAME))) {
2296 /** add additional A/AAAA from domain names in rrset rdata (+offset)
2300 struct dns_msg* msg, struct auth_rrset* rrset, size_t offset)
2302 struct packed_rrset_data* d = rrset->data;
2413 /** create synthetic CNAME rrset for in a DNAME answer in region,
2486 struct auth_rrset* rrset)
2490 if(!create_synth_cname(qname, qname_len, region, dname, rrset,
2535 struct auth_rrset* rrset;
2545 while((rrset=az_domain_rrset(*node, LDNS_RR_TYPE_NSEC)) == NULL) {
2549 /* adjust *node for the nsec rrset to find in */
2552 return rrset;
2584 /** Find the NSEC3PARAM rrset (if any) and if true you have the parameters */
2596 return 0; /* no RRset or no RRs in rrset */
2883 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
2885 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2887 if(rrset->type == LDNS_RR_TYPE_MX) {
2888 if(!az_add_additionals_from(z, region, msg, rrset, 2))
2890 } else if(rrset->type == LDNS_RR_TYPE_SRV) {
2891 if(!az_add_additionals_from(z, region, msg, rrset, 6))
2893 } else if(rrset->type == LDNS_RR_TYPE_NS) {
2894 if(!az_add_additionals_from(z, region, msg, rrset, 0))
2905 struct auth_rrset* rrset;
2908 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_SOA)) != NULL) {
2909 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2912 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_MX)) != NULL) {
2913 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2916 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_A)) != NULL) {
2917 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2920 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_AAAA)) != NULL) {
2921 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2941 struct auth_rrset* rrset;
2952 if((rrset=az_domain_rrset(node, qtype))!=NULL) {
2954 if(!msg_add_rrset_an(z, region, msg, node, rrset))
2958 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME))==NULL)
2960 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2961 d = rrset->data;
2970 struct auth_data* node, struct auth_rrset* rrset)
2972 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
2973 if(!rrset) return 1;
2974 if(!follow_cname_chain(z, qinfo->qtype, region, msg, rrset->data))
2984 struct auth_rrset* rrset;
2987 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_NSEC))!=NULL) {
2988 if(!msg_add_rrset_ns(z, region, msg, node, rrset)) return 0;
3002 struct dns_msg* msg, struct auth_data* ce, struct auth_rrset* rrset)
3008 if(!msg_add_rrset_ns(z, region, msg, ce, rrset)) return 0;
3025 if(!az_add_additionals_from(z, region, msg, rrset, 0)) return 0;
3033 struct auth_rrset* rrset)
3037 if(!msg_add_rrset_an(z, region, msg, ce, rrset)) return 0;
3039 msg, ce, rrset)) return 0;
3058 struct auth_rrset* rrset, *nsec;
3060 if((rrset=az_domain_rrset(wildcard, qinfo->qtype)) != NULL) {
3062 if(!msg_add_rrset_an(z, region, msg, wildcard, rrset))
3066 } else if((rrset=az_domain_rrset(wildcard, LDNS_RR_TYPE_CNAME))!=NULL) {
3068 if(!msg_add_rrset_an(z, region, msg, wildcard, rrset))
3073 rrset->data))
3138 struct auth_rrset* rrset;
3139 /* positive answer, rrset we are looking for exists */
3140 if((rrset=az_domain_rrset(node, qinfo->qtype)) != NULL) {
3141 return az_generate_positive_answer(z, region, msg, node, rrset);
3144 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME)) != NULL) {
3146 node, rrset);
3161 struct auth_rrset* rrset, struct auth_data* node)
3167 if(ce && rrset && rrset->type == LDNS_RR_TYPE_NS) {
3168 return az_generate_referral_answer(z, region, msg, ce, rrset);
3170 if(ce && rrset && rrset->type == LDNS_RR_TYPE_DNAME) {
3172 rrset);
3194 struct auth_rrset* rrset;
3207 node_exists = az_find_ce(z, qinfo, node, node_exact, &ce, &rrset);
3225 if(rrset) sldns_wire2str_type_buf(rrset->type, rrstr,
3229 "ce %s, rrset %s", zname, qname, tpstr, nname,
3240 ce, rrset, node);
5294 /** add addrs from A or AAAA rrset to the master */
5296 xfr_master_add_addrs(struct auth_master* m, struct ub_packed_rrset_key* rrset,
5301 if(!m || !rrset) return;
5304 data = (struct packed_rrset_data*)rrset->entry.data;