Lines Matching defs:rrset
79 * Allocate new rrset in region, fill with data.
113 /** See if next rrset is nsec at zone apex */
158 /** Calculate rrset flags */
185 /** create partial dname hash for rrset hash */
197 /** create a rrset hash from a partial dname hash */
270 msgparse_bucket_remove(struct msg_parse* msg, struct rrset_parse* rrset)
273 p = &msg->hashtable[ rrset->hash & (PARSE_TABLE_SIZE-1) ];
275 if(*p == rrset) {
276 *p = rrset->rrset_bucket_next;
283 /** change section of rrset from previous to current section */
285 change_section(struct msg_parse* msg, struct rrset_parse* rrset,
290 if(section == rrset->section)
295 if(p == rrset) {
298 if(msg->rrset_last == rrset)
306 switch(rrset->section) {
313 rrset->rrset_all_next = 0;
315 msg->rrset_last->rrset_all_next = rrset;
316 else msg->rrset_first = rrset;
317 msg->rrset_last = rrset;
324 rrset->section = section;
327 /** see if rrset of type RRSIG contains sig over given type */
329 rrset_has_sigover(sldns_buffer* pkt, struct rrset_parse* rrset, uint16_t type,
333 struct rr_parse* rr = rrset->rr_first;
334 log_assert( rrset->type == LDNS_RR_TYPE_RRSIG );
393 /** change an rrsig rrset for use as data rrset */
405 /* need to make new rrset to hold data type */
424 /* changeover the type of the rrset to data set */
446 /** Find rrset. If equal to previous it is fast. hash if not so.
453 * @param hash: hash value is returned if the rrset could not be found.
454 * @param rrset_flags: is returned if the rrset could not be found.
712 sig_is_double(sldns_buffer* pkt, struct rrset_parse* rrset, uint8_t* ttldata)
727 sig = rrset->rrsig_first;
752 /** Add rr (from packet here) to rrset, skips rr */
754 add_rr_to_rrset(struct rrset_parse* rrset, sldns_buffer* pkt,
759 /* check section of rrset. */
760 if(rrset->section != section && type != LDNS_RR_TYPE_RRSIG &&
761 rrset->type != LDNS_RR_TYPE_RRSIG) {
768 verbose(VERB_QUERY, "Packet contains rrset data in "
780 && sig_is_double(pkt, rrset, sldns_buffer_current(pkt))) {
792 if(type == LDNS_RR_TYPE_RRSIG && rrset->type != LDNS_RR_TYPE_RRSIG) {
793 if(rrset->rrsig_last)
794 rrset->rrsig_last->next = rr;
795 else rrset->rrsig_first = rr;
796 rrset->rrsig_last = rr;
797 rrset->rrsig_count++;
799 if(rrset->rr_last)
800 rrset->rr_last->next = rr;
801 else rrset->rr_first = rr;
802 rrset->rr_last = rr;
803 rrset->rr_count++;
809 rrset->size += rr->size;
837 struct rrset_parse* rrset = NULL;
883 &prev_dnamelen, &prev_type, &prev_dclass, &rrset,
886 if(!rrset) {
889 rrset = new_rrset(msg, dname, dnamelen, type, dclass,
891 if(!rrset)
896 dname_print(stderr, pkt, rrset->dname);
898 sldns_rr_descript(rrset->type)?
899 sldns_rr_descript(rrset->type)->_name: "??",
900 (int)rrset->type);
902 /* add to rrset. */
903 if((r=add_rr_to_rrset(rrset, pkt, msg, region, section,
1157 struct rrset_parse* rrset = msg->rrset_first;
1165 while(rrset) {
1166 if(rrset->type == LDNS_RR_TYPE_OPT) {
1171 found = rrset;
1173 prev = rrset;
1174 rrset = rrset->rrset_all_next;
1340 /** remove RR from msgparse RRset, return true if rrset is entirely bad */
1342 msgparse_rrset_remove_rr(const char* str, sldns_buffer* pkt, struct rrset_parse* rrset,
1345 if(verbosity >= VERB_QUERY && rrset->dname_len <= LDNS_MAX_DOMAINLEN && str) {
1347 dname_pkt_copy(pkt, buf, rrset->dname);
1351 rrset->type, ntohs(rrset->rrset_class));
1355 else rrset->rr_first = rr->next;
1356 if(rrset->rr_last == rr)
1357 rrset->rr_last = prev;
1358 rrset->rr_count --;
1359 rrset->size -= rr->size;
1362 return rrset->rr_count == 0;