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

Lines Matching refs:msg

2  * services/cache/dns.c - Cache services for DNS using msg and rrset caches.
130 /** remove servfail msg cache entry */
177 verbose(VERB_ALGO, "TTL 0: dropped msg from cache");
188 /* store msg in the cache */
229 struct dns_msg* msg, time_t now)
231 if((msg->rep->rrsets[msg->rep->rrset_count] =
233 msg->rep->ar_numrrsets++;
234 msg->rep->rrset_count++;
267 struct dns_msg** msg)
280 if(msg)
281 addr_to_additional(akey, region, *msg, now);
300 if(msg)
301 addr_to_additional(akey, region, *msg, now);
373 /** find and add DS or NSEC to delegation msg */
376 struct dns_msg* msg, struct delegpt* dp, time_t now)
381 msg->qinfo.qclass, 0, now, 0);
386 dp->namelen, LDNS_RR_TYPE_NSEC, msg->qinfo.qclass,
398 if((msg->rep->rrsets[msg->rep->rrset_count] =
400 msg->rep->ns_numrrsets++;
401 msg->rep->rrset_count++;
411 struct dns_msg* msg = (struct dns_msg*)regional_alloc(region,
413 if(!msg)
415 msg->qinfo.qname = regional_alloc_init(region, qname, qnamelen);
416 if(!msg->qinfo.qname)
418 msg->qinfo.qname_len = qnamelen;
419 msg->qinfo.qtype = qtype;
420 msg->qinfo.qclass = qclass;
421 msg->qinfo.local_alias = NULL;
423 msg->rep = (struct reply_info*)regional_alloc_zero(region,
425 if(!msg->rep)
429 msg->rep->flags = BIT_QR; /* with QR, no AA */
430 msg->rep->qdcount = 1;
431 msg->rep->rrsets = (struct ub_packed_rrset_key**)
434 if(!msg->rep->rrsets)
436 return msg;
440 dns_msg_authadd(struct dns_msg* msg, struct regional* region,
443 if(!(msg->rep->rrsets[msg->rep->rrset_count++] =
446 msg->rep->ns_numrrsets++;
451 dns_msg_ansadd(struct dns_msg* msg, struct regional* region,
454 if(!(msg->rep->rrsets[msg->rep->rrset_count++] =
457 msg->rep->an_numrrsets++;
464 struct regional* region, struct dns_msg** msg, time_t now)
484 if(msg) {
490 *msg = dns_msg_create(qname, qnamelen, qtype, qclass, region,
492 if(!*msg || !dns_msg_authadd(*msg, region, nskey, now)) {
502 if(msg)
503 find_add_ds(env, region, *msg, dp, now);
505 if(!find_add_addrs(env, qclass, region, dp, now, msg))
514 struct dns_msg* msg = (struct dns_msg*)regional_alloc(region,
516 if(!msg)
518 memcpy(&msg->qinfo, q, sizeof(struct query_info));
519 msg->qinfo.qname = regional_alloc_init(region, q->qname, q->qname_len);
520 if(!msg->qinfo.qname)
523 msg->rep = (struct reply_info*)regional_alloc(region,
525 if(!msg->rep)
529 msg->rep->rrsets = (struct ub_packed_rrset_key**)
532 if(!msg->rep->rrsets)
534 return msg;
542 struct dns_msg* msg;
562 msg = gen_dns_msg(region, q, r->rrset_count);
563 if(!msg) return NULL;
564 msg->rep->flags = r->flags;
565 msg->rep->qdcount = r->qdcount;
566 msg->rep->ttl = is_expired
570 msg->rep->prefetch_ttl = r->prefetch_ttl - now;
572 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
573 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
574 msg->rep->security = r->security;
575 msg->rep->an_numrrsets = r->an_numrrsets;
576 msg->rep->ns_numrrsets = r->ns_numrrsets;
577 msg->rep->ar_numrrsets = r->ar_numrrsets;
578 msg->rep->rrset_count = r->rrset_count;
579 msg->rep->authoritative = r->authoritative;
586 /* cname chain is now invalid, reconstruct msg */
595 for(i=0; i<msg->rep->rrset_count; i++) {
596 msg->rep->rrsets[i] = packed_rrset_copy_region(r->rrsets[i],
598 if(!msg->rep->rrsets[i]) {
608 return msg;
616 struct dns_msg* msg;
621 msg = gen_dns_msg(region, q, 1); /* only the CNAME (or other) RRset */
622 if(!msg)
624 msg->rep->flags = BIT_QR; /* reply, no AA, no error */
625 msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */
626 msg->rep->qdcount = 1;
627 msg->rep->ttl = d->ttl - now;
628 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
629 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
630 msg->rep->security = sec_status_unchecked;
631 msg->rep->an_numrrsets = 1;
632 msg->rep->ns_numrrsets = 0;
633 msg->rep->ar_numrrsets = 0;
634 msg->rep->rrset_count = 1;
635 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
636 if(!msg->rep->rrsets[0]) /* copy CNAME */
638 return msg;
646 struct dns_msg* msg;
659 msg = gen_dns_msg(region, q, 2); /* DNAME + CNAME RRset */
660 if(!msg)
662 msg->rep->flags = BIT_QR; /* reply, no AA, no error */
663 msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */
664 msg->rep->qdcount = 1;
665 msg->rep->ttl = d->ttl - now;
666 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
667 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
668 msg->rep->security = sec_status_unchecked;
669 msg->rep->an_numrrsets = 1;
670 msg->rep->ns_numrrsets = 0;
671 msg->rep->ar_numrrsets = 0;
672 msg->rep->rrset_count = 1;
673 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
674 if(!msg->rep->rrsets[0]) /* copy DNAME */
682 msg->rep->flags |= LDNS_RCODE_YXDOMAIN;
683 return msg;
698 msg->rep->rrsets[1] = ck;
724 msg->rep->ttl = newd->ttl;
725 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(newd->ttl);
726 msg->rep->serve_expired_ttl = newd->ttl + SERVE_EXPIRED_TTL;
729 msg->rep->an_numrrsets ++;
730 msg->rep->rrset_count ++;
731 return msg;
741 struct dns_msg* msg = NULL;
750 msg = dns_msg_create(qname, qnamelen, qtype, qclass,
752 if(!msg) {
756 msg->rep->flags |= LDNS_RCODE_NOTIMPL;
757 msg->rep->security = sec_status_indeterminate;
758 return msg;
780 /* create msg if none */
781 if(!msg) {
782 msg = dns_msg_create(qname, qnamelen, qtype, qclass,
784 if(!msg) {
791 if(!dns_msg_ansadd(msg, region, rrset, now)) {
797 return msg;
823 struct dns_msg* msg = tomsg(env, &key->key, data, region, now, 0,
825 if(msg) {
827 return msg;
829 /* could be msg==NULL; due to TTL or not all rrsets available */
841 struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k,
843 if(msg) {
852 return msg;
864 * straight up return the msg */
866 return msg;
884 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
885 if(msg) {
887 return msg;
898 * signatures have fallen off, then do not synthesize a msg
911 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
912 if(msg) {
914 return msg;
937 struct dns_msg* msg;
942 && (msg=tomsg(env, &k, data, region, now, 0, scratch))) {
944 msg->qinfo.qname=qname;
945 msg->qinfo.qname_len=qnamelen;
947 msg->rep->security = sec_status_unchecked;
948 iter_scrub_nxdomain(msg);
949 return msg;
971 /* alloc, malloc properly (not in region, like msg is) */
998 /* store msg, and rrsets */
1027 struct msgreply_entry* msg;
1028 msg = msg_cache_lookup(env, qinfo->qname, qinfo->qname_len,
1030 if(msg) {
1031 struct reply_info* rep = (struct reply_info*)msg->entry.data;
1034 lock_rw_unlock(&msg->entry.lock);
1037 lock_rw_unlock(&msg->entry.lock);