Lines Matching refs:rrset

141 /** grow rrset array by one in msg */
162 /** get ttl of rrset */
171 /** Copy rrset into region from domain-datanode and packet rrset */
174 struct auth_rrset* rrset, struct regional* region, time_t adjust)
179 key.entry.data = rrset->data;
182 key.rk.type = htons(rrset->type);
206 /** see if rrset is a duplicate in the answer message */
222 /** add rrset to answer section (no auth, add rrsets yet) */
225 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
229 if(!rrset || !node)
231 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
239 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
247 /** add rrset to authority section (no additional section rrsets yet) */
250 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
253 if(!rrset || !node)
255 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
263 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
271 /** add rrset to additional section */
274 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
276 if(!rrset || !node)
278 if(msg_rrset_duplicate(msg, node->name, node->namelen, rrset->type,
286 auth_packed_rrset_copy_region(z, node, rrset, region, 0)))
356 /** delete auth rrset node */
358 auth_rrset_delete(struct auth_rrset* rrset)
360 if(!rrset) return;
361 free(rrset->data);
362 free(rrset);
650 /** find rrset of given type in the domain */
654 struct auth_rrset* rrset;
656 rrset = n->rrsets;
657 while(rrset) {
658 if(rrset->type == t)
659 return rrset;
660 rrset = rrset->next;
665 /** remove rrset of this type from domain */
669 struct auth_rrset* rrset, *prev;
672 rrset = node->rrsets;
673 while(rrset) {
674 if(rrset->type == rr_type) {
676 if(prev) prev->next = rrset->next;
677 else node->rrsets = rrset->next;
678 auth_rrset_delete(rrset);
681 prev = rrset;
682 rrset = rrset->next;
686 /** find an rrsig index in the rrset. returns true if found */
731 * reallocates the packed rrset for a new one, false on alloc failure */
733 rrset_remove_rr(struct auth_rrset* rrset, size_t index)
735 struct packed_rrset_data* d, *old = rrset->data;
787 free(rrset->data);
788 rrset->data = d;
793 * This reallocates the packed rrset for a new one */
795 rrset_add_rr(struct auth_rrset* rrset, uint32_t rr_ttl, uint8_t* rdata,
798 struct packed_rrset_data* d, *old = rrset->data;
858 rrset->data = d;
863 /** Create new rrset for node with packed rrset with one RR element */
868 struct auth_rrset* rrset = (struct auth_rrset*)calloc(1,
869 sizeof(*rrset));
872 if(!rrset) {
876 rrset->type = rr_type;
878 /* the rrset data structure, with one RR */
883 free(rrset);
887 rrset->data = d;
901 /* insert rrset into linked list for domain */
902 /* find sorted place to link the rrset into the list */
910 rrset->next = p;
911 if(prev) prev->next = rrset;
912 else node->rrsets = rrset;
913 return rrset;
934 /** See if rrsig set has covered sigs for rrset and move them over */
937 struct auth_rrset* rrset, struct auth_rrset* rrsig)
941 struct packed_rrset_data* old = rrset->data;
944 log_assert(rrset->type == rr_type);
952 /* allocate rrset sigsz larger for extra sigs elements, and
990 /* move over the rrsigs to the larger rrset*/
1005 /* put it in and deallocate the old rrset */
1006 rrset->data = d;
1022 * node->rrset structure */
1061 /* put it in and deallocate the old rrset */
1068 /** copy the rrsigs from the rrset to the rrsig rrset, because the rrset
1069 * is going to be deleted. reallocates the RRSIG rrset data. */
1071 rrsigs_copy_from_rrset_to_rrsigset(struct auth_rrset* rrset,
1075 if(rrset->data->rrsig_count == 0)
1080 for(i=rrset->data->count;
1081 i<rrset->data->count+rrset->data->rrsig_count; i++) {
1082 uint8_t* rdata = rrset->data->rr_data[i];
1083 size_t rdatalen = rrset->data->rr_len[i];
1084 time_t rr_ttl = rrset->data->rr_ttl[i];
1101 struct auth_rrset* rrset;
1105 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1107 * to the rrset of the covered data type */
1108 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1112 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 1))
1114 } else if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1115 /* add RRSIG to rrset of type RRSIG */
1116 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1120 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0))
1123 /* create rrset of type RRSIG */
1130 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1132 if(rdata_duplicate(rrset->data, rdata, rdatalen)) {
1136 if(!rrset_add_rr(rrset, rr_ttl, rdata, rdatalen, 0))
1141 if(!(rrset=rrset_create(node, rr_type, rr_ttl, rdata,
1151 rrset, rrsig))
1202 struct auth_rrset* rrset;
1206 if((rrset=az_domain_rrset(node, rr_type))!= NULL) {
1207 if(packed_rrset_find_rr(rrset->data, rdata, rdatalen, &index)) {
1208 if(rrset->data->count == 1 &&
1209 rrset->data->rrsig_count == 0) {
1210 /* last RR, delete the rrset */
1212 } else if(rrset->data->count == 1 &&
1213 rrset->data->rrsig_count != 0) {
1214 /* move RRSIGs to the RRSIG rrset, or
1220 * existing rrset of type RRSIG */
1222 rrset, rrsigset);
1223 /* and then delete the rrset */
1226 /* no rrset of type RRSIG, this
1229 if(!rrset_remove_rr(rrset, index))
1231 rrset->type = LDNS_RR_TYPE_RRSIG;
1232 rrset->data->count = rrset->data->rrsig_count;
1233 rrset->data->rrsig_count = 0;
1236 /* remove the RR from the rrset */
1237 if(!rrset_remove_rr(rrset, index))
1242 /* rr not found in rrset */
1248 if((rrset=az_domain_rrset(node, ctype))!= NULL) {
1249 if(az_rrset_find_rrsig(rrset->data, rdata, rdatalen,
1254 * rrset */
1255 if(!rrset_remove_rr(rrset, index))
1686 /** write rrset to file */
1831 * @param zonemd_rrset: the zonemd rrset to check with the RRs in it.
1904 return 0; /* no RRset or no RRs in rrset */
2005 return 0; /* no RRset or no RRs in rrset */
2023 return 0; /* no RRset or no RRs in rrset */
2379 struct auth_rrset* rrset = n->rrsets;
2381 while(rrset) {
2382 if(rrset->type == LDNS_RR_TYPE_NSEC3) {
2384 } else if(rrset->type != LDNS_RR_TYPE_RRSIG) {
2387 rrset = rrset->next;
2477 * rrset is the closest DNAME or NS rrset that was found.
2482 struct auth_rrset** rrset)
2487 *rrset = NULL;
2515 *rrset = lookrrset;
2523 *rrset = lookrrset;
2540 /** add additional A/AAAA from domain names in rrset rdata (+offset)
2544 struct dns_msg* msg, struct auth_rrset* rrset, size_t offset)
2546 struct packed_rrset_data* d = rrset->data;
2657 /** create synthetic CNAME rrset for in a DNAME answer in region,
2730 struct auth_rrset* rrset)
2734 if(!create_synth_cname(qname, qname_len, region, dname, rrset,
2780 struct auth_rrset* rrset;
2790 while((rrset=az_domain_rrset(*node, LDNS_RR_TYPE_NSEC)) == NULL) {
2794 /* adjust *node for the nsec rrset to find in */
2797 return rrset;
2829 /** Find the NSEC3PARAM rrset (if any) and if true you have the parameters */
2841 return 0; /* no RRset or no RRs in rrset */
3128 struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)
3130 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3132 if(rrset->type == LDNS_RR_TYPE_MX) {
3133 if(!az_add_additionals_from(z, region, msg, rrset, 2))
3135 } else if(rrset->type == LDNS_RR_TYPE_SRV) {
3136 if(!az_add_additionals_from(z, region, msg, rrset, 6))
3138 } else if(rrset->type == LDNS_RR_TYPE_NS) {
3139 if(!az_add_additionals_from(z, region, msg, rrset, 0))
3150 struct auth_rrset* rrset;
3153 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_SOA)) != NULL) {
3154 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3157 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_MX)) != NULL) {
3158 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3161 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_A)) != NULL) {
3162 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3165 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_AAAA)) != NULL) {
3166 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3186 struct auth_rrset* rrset;
3197 if((rrset=az_domain_rrset(node, qtype))!=NULL) {
3199 if(!msg_add_rrset_an(z, region, msg, node, rrset))
3203 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME))==NULL)
3205 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3206 d = rrset->data;
3215 struct auth_data* node, struct auth_rrset* rrset)
3217 if(!msg_add_rrset_an(z, region, msg, node, rrset)) return 0;
3218 if(!rrset) return 1;
3219 if(!follow_cname_chain(z, qinfo->qtype, region, msg, rrset->data))
3229 struct auth_rrset* rrset;
3232 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_NSEC))!=NULL) {
3233 if(!msg_add_rrset_ns(z, region, msg, node, rrset)) return 0;
3247 struct dns_msg* msg, struct auth_data* ce, struct auth_rrset* rrset)
3253 if(!msg_add_rrset_ns(z, region, msg, ce, rrset)) return 0;
3270 if(!az_add_additionals_from(z, region, msg, rrset, 0)) return 0;
3278 struct auth_rrset* rrset)
3282 if(!msg_add_rrset_an(z, region, msg, ce, rrset)) return 0;
3284 msg, ce, rrset)) return 0;
3303 struct auth_rrset* rrset, *nsec;
3305 if((rrset=az_domain_rrset(wildcard, qinfo->qtype)) != NULL) {
3307 if(!msg_add_rrset_an(z, region, msg, wildcard, rrset))
3311 } else if((rrset=az_domain_rrset(wildcard, LDNS_RR_TYPE_CNAME))!=NULL) {
3313 if(!msg_add_rrset_an(z, region, msg, wildcard, rrset))
3318 rrset->data))
3383 struct auth_rrset* rrset;
3384 /* positive answer, rrset we are looking for exists */
3385 if((rrset=az_domain_rrset(node, qinfo->qtype)) != NULL) {
3386 return az_generate_positive_answer(z, region, msg, node, rrset);
3389 if((rrset=az_domain_rrset(node, LDNS_RR_TYPE_CNAME)) != NULL) {
3391 node, rrset);
3406 struct auth_rrset* rrset, struct auth_data* node)
3412 if(ce && rrset && rrset->type == LDNS_RR_TYPE_NS) {
3413 return az_generate_referral_answer(z, region, msg, ce, rrset);
3415 if(ce && rrset && rrset->type == LDNS_RR_TYPE_DNAME) {
3417 rrset);
3439 struct auth_rrset* rrset;
3452 node_exists = az_find_ce(z, qinfo, node, node_exact, &ce, &rrset);
3470 if(rrset) sldns_wire2str_type_buf(rrset->type, rrstr,
3474 "ce %s, rrset %s", zname, qname, tpstr, nname,
3485 ce, rrset, node);
5636 /** add addrs from A or AAAA rrset to the master */
5638 xfr_master_add_addrs(struct auth_master* m, struct ub_packed_rrset_key* rrset,
5643 if(!m || !rrset) return;
5646 data = (struct packed_rrset_data*)rrset->entry.data;
7421 struct auth_rrset* rrset = first;
7423 while(rrset) {
7426 array[num] = rrset;
7428 rrset = rrset->next;
7466 struct auth_rrset* rrset, struct regional* region,
7473 key.entry.data = rrset->data;
7476 key.rk.type = htons(rrset->type);
7492 /** count number of RRSIGs in a domain name rrset list */
7493 static size_t zonemd_simple_count_rrsig(struct auth_rrset* rrset,
7498 if(rrset) {
7500 for(j = 0; j<rrset->data->count; j++) {
7501 if(rrsig_rdata_get_type_covered(rrset->data->
7502 rr_data[j], rrset->data->rr_len[j]) ==
7522 /** allocate sparse rrset data for the number of entries in tepm region */
7559 /* reference the rdata in the rrset, no need to
7569 size_t* done, struct auth_rrset* rrset,
7572 if(rrset) {
7574 for(j = 0; j<rrset->data->count; j++) {
7575 if(rrsig_rdata_get_type_covered(rrset->data->
7576 rr_data[j], rrset->data->rr_len[j]) ==
7582 data->rr_len[*done] = rrset->data->rr_len[j];
7583 data->rr_ttl[*done] = rrset->data->rr_ttl[j];
7584 /* reference the rdata in the rrset, no need to
7587 data->rr_data[*done] = rrset->data->rr_data[j];
7596 struct auth_rrset* rrset, struct auth_rrset** rrlist, size_t rrnum,
7599 /* the rrset pointer can be NULL, this means it is type RRSIG and
7605 * RRSIG RR is stored in an rrset of type RRSIG. The other RRSIGs
7606 * are stored in the rrset entries for the RRs in the rr list for
7607 * the domain node. We need to collate the rrset's data, if any, and
7610 /* build rrsig rrset */
7622 data.count = zonemd_simple_count_rrsig(rrset, rrlist, rrnum, z, node);
7630 /* plus the RRSIGs stored in an rrset of type RRSIG for this node */
7631 add_rrset_into_data(&data, &done, rrset, z, node);
7798 /** ZONEMD, dnssec verify the rrset with the dnskey */
7802 struct auth_rrset* rrset, char** why_bogus, uint8_t* sigalg,
7820 pk.entry.data = rrset->data;
7823 pk.rk.type = htons(rrset->type);
7828 sldns_wire2str_type_buf(rrset->type, typestr, sizeof(typestr));
8125 * verify the zone DNSKEY rrset from the trust anchor
8586 /** Get memory usage of auth rrset */
8588 auth_rrset_get_mem(struct auth_rrset* rrset)
8590 size_t m = sizeof(*rrset) + packed_rrset_sizeof(rrset->data);
8599 struct auth_rrset* rrset;
8600 for(rrset = node->rrsets; rrset; rrset = rrset->next) {
8601 m += auth_rrset_get_mem(rrset);