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

Lines Matching refs:rrset

2  * services/cache/dns.c - Cache services for DNS using msg and rrset caches.
47 #include "services/cache/rrset.h"
58 /** store rrsets in the rrset cache.
78 /* see if rrset already exists in cache, if not insert it. */
92 /* if deleted rrset, do not copy it */
171 * unnecessary, because the cache gets locked per rrset. */
197 /** find closest NS or DNAME and returns the rrset (locked) */
202 struct ub_packed_rrset_key *rrset;
214 if((rrset = rrset_cache_lookup(env->rrset_cache, qname,
216 return rrset;
228 addr_to_additional(struct ub_packed_rrset_key* rrset, struct regional* region,
232 packed_rrset_copy_region(rrset, region, now))) {
379 struct ub_packed_rrset_key* rrset = rrset_cache_lookup(
382 if(!rrset) {
385 rrset = rrset_cache_lookup(env->rrset_cache, dp->name,
391 if(rrset && nsec_has_type(rrset, LDNS_RR_TYPE_DS)) {
392 lock_rw_unlock(&rrset->entry.lock);
393 rrset = NULL; /* discard wrong NSEC */
396 if(rrset) {
397 /* add it to auth section. This is the second rrset. */
399 packed_rrset_copy_region(rrset, region, now))) {
403 lock_rw_unlock(&rrset->entry.lock);
441 struct ub_packed_rrset_key* rrset, time_t now)
444 packed_rrset_copy_region(rrset, region, now)))
452 struct ub_packed_rrset_key* rrset, time_t now)
455 packed_rrset_copy_region(rrset, region, now)))
466 /* try to find closest NS rrset */
486 * NS rrset + DS/NSEC rrset +
487 * A rrset for every NS RR
488 * AAAA rrset for every NS RR
522 /* allocate replyinfo struct and rrset key array separately */
613 rrset_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
618 rrset->entry.data;
635 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
643 synth_dname_msg(struct ub_packed_rrset_key* rrset, struct regional* region,
649 rrset->entry.data;
673 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
676 /* synth CNAME rrset */
677 get_cname_target(rrset, &dtarg, &dtarglen);
680 newlen = q->qname_len + dtarglen - rrset->rk.dname_len;
690 memcpy(newname, q->qname, q->qname_len-rrset->rk.dname_len);
691 memmove(newname+(q->qname_len-rrset->rk.dname_len), dtarg, dtarglen);
692 /* create rest of CNAME rrset */
701 ck->rk.rrset_class = rrset->rk.rrset_class;
763 struct ub_packed_rrset_key* rrset = rrset_cache_lookup(
767 if(!rrset)
770 /* only if rrset from answer section */
771 d = (struct packed_rrset_data*)rrset->entry.data;
776 lock_rw_unlock(&rrset->entry.lock);
785 lock_rw_unlock(&rrset->entry.lock);
791 if(!dns_msg_ansadd(msg, region, rrset, now)) {
792 lock_rw_unlock(&rrset->entry.lock);
795 lock_rw_unlock(&rrset->entry.lock);
810 struct ub_packed_rrset_key* rrset;
837 (rrset=find_closest_of_type(env, qname, qnamelen, qclass, now,
841 struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k,
845 lock_rw_unlock(&rrset->entry.lock);
846 /* now, after unlocking the DNAME rrset lock,
869 lock_rw_unlock(&rrset->entry.lock);
876 (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen,
880 /* if the rrset is not a wildcard expansion, with wcname */
881 /* because, if we return that CNAME rrset on its own, it is
883 if(!(val_rrset_wildcard(rrset, &wc, &wl) && wc != NULL)) {
884 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
886 lock_rw_unlock(&rrset->entry.lock);
890 lock_rw_unlock(&rrset->entry.lock);
893 /* construct DS, DNSKEY messages from rrset cache. */
895 (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen,
897 /* if the rrset is from the additional section, and the
900 * Forego all rrset data from additional section, because
905 rrset->entry.data;
911 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
913 lock_rw_unlock(&rrset->entry.lock);
917 lock_rw_unlock(&rrset->entry.lock);