Lines Matching refs:rrset

2  * services/cache/dns.c - Cache services for DNS using msg and rrset caches.
45 #include "services/cache/rrset.h"
55 /** store rrsets in the rrset cache.
75 /* see if rrset already exists in cache, if not insert it. */
89 /* if deleted rrset, do not copy it */
123 * unnecessary, because the cache gets locked per rrset. */
143 /** find closest NS or DNAME and returns the rrset (locked) */
148 struct ub_packed_rrset_key *rrset;
160 if((rrset = rrset_cache_lookup(env->rrset_cache, qname,
162 return rrset;
174 addr_to_additional(struct ub_packed_rrset_key* rrset, struct regional* region,
178 packed_rrset_copy_region(rrset, region, now))) {
322 struct ub_packed_rrset_key* rrset = rrset_cache_lookup(
325 if(!rrset) {
328 rrset = rrset_cache_lookup(env->rrset_cache, dp->name,
334 if(rrset && nsec_has_type(rrset, LDNS_RR_TYPE_DS)) {
335 lock_rw_unlock(&rrset->entry.lock);
336 rrset = NULL; /* discard wrong NSEC */
339 if(rrset) {
340 /* add it to auth section. This is the second rrset. */
342 packed_rrset_copy_region(rrset, region, now))) {
346 lock_rw_unlock(&rrset->entry.lock);
381 struct ub_packed_rrset_key* rrset, time_t now)
384 packed_rrset_copy_region(rrset, region, now)))
395 /* try to find closest NS rrset */
415 * NS rrset + DS/NSEC rrset +
416 * A rrset for every NS RR
417 * AAAA rrset for every NS RR
451 /* allocate replyinfo struct and rrset key array separately */
517 rrset_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
522 rrset->entry.data;
538 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
546 synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
552 rrset->entry.data;
574 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
577 /* synth CNAME rrset */
578 get_cname_target(rrset, &dtarg, &dtarglen);
581 newlen = q->qname_len + dtarglen - rrset->rk.dname_len;
591 memcpy(newname, q->qname, q->qname_len-rrset->rk.dname_len);
592 memmove(newname+(q->qname_len-rrset->rk.dname_len), dtarg, dtarglen);
593 /* create rest of CNAME rrset */
602 ck->rk.rrset_class = rrset->rk.rrset_class;
643 struct ub_packed_rrset_key* rrset;
668 if( (rrset=find_closest_of_type(env, qname, qnamelen, qclass, now,
671 struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k);
673 lock_rw_unlock(&rrset->entry.lock);
676 lock_rw_unlock(&rrset->entry.lock);
682 (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen,
684 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
686 lock_rw_unlock(&rrset->entry.lock);
689 lock_rw_unlock(&rrset->entry.lock);
692 /* construct DS, DNSKEY, DLV messages from rrset cache. */
695 (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen,
697 /* if the rrset is from the additional section, and the
700 * Forego all rrset data from additional section, because
705 rrset->entry.data;
711 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
713 lock_rw_unlock(&rrset->entry.lock);
717 lock_rw_unlock(&rrset->entry.lock);