Lines Matching defs:msg

2  * services/cache/dns.c - Cache services for DNS using msg and rrset caches.
178 verbose(VERB_ALGO, "TTL 0: dropped msg from cache");
180 /* if the message is in the cache, remove that msg,
196 /* store msg in the cache */
270 struct dns_msg* msg, time_t now)
272 if((msg->rep->rrsets[msg->rep->rrset_count] =
274 msg->rep->ar_numrrsets++;
275 msg->rep->rrset_count++;
308 struct dns_msg** msg)
321 if(msg)
322 addr_to_additional(akey, region, *msg, now);
341 if(msg)
342 addr_to_additional(akey, region, *msg, now);
431 /** find and add DS or NSEC to delegation msg */
434 struct dns_msg* msg, struct delegpt* dp, time_t now)
439 msg->qinfo.qclass, 0, now, 0);
444 dp->namelen, LDNS_RR_TYPE_NSEC, msg->qinfo.qclass,
456 if((msg->rep->rrsets[msg->rep->rrset_count] =
458 msg->rep->ns_numrrsets++;
459 msg->rep->rrset_count++;
469 struct dns_msg* msg = (struct dns_msg*)regional_alloc(region,
471 if(!msg)
473 msg->qinfo.qname = regional_alloc_init(region, qname, qnamelen);
474 if(!msg->qinfo.qname)
476 msg->qinfo.qname_len = qnamelen;
477 msg->qinfo.qtype = qtype;
478 msg->qinfo.qclass = qclass;
479 msg->qinfo.local_alias = NULL;
481 msg->rep = (struct reply_info*)regional_alloc_zero(region,
483 if(!msg->rep)
487 msg->rep->flags = BIT_QR; /* with QR, no AA */
488 msg->rep->qdcount = 1;
489 msg->rep->reason_bogus = LDNS_EDE_NONE;
490 msg->rep->rrsets = (struct ub_packed_rrset_key**)
493 if(!msg->rep->rrsets)
495 return msg;
499 dns_msg_authadd(struct dns_msg* msg, struct regional* region,
502 if(!(msg->rep->rrsets[msg->rep->rrset_count++] =
505 msg->rep->ns_numrrsets++;
510 dns_msg_ansadd(struct dns_msg* msg, struct regional* region,
513 if(!(msg->rep->rrsets[msg->rep->rrset_count++] =
516 msg->rep->an_numrrsets++;
523 struct regional* region, struct dns_msg** msg, time_t now,
544 if(msg) {
550 *msg = dns_msg_create(qname, qnamelen, qtype, qclass, region,
552 if(!*msg || !dns_msg_authadd(*msg, region, nskey, now)) {
562 if(msg)
563 find_add_ds(env, region, *msg, dp, now);
565 if(!find_add_addrs(env, qclass, region, dp, now, msg))
574 struct dns_msg* msg = (struct dns_msg*)regional_alloc(region,
576 if(!msg)
578 memcpy(&msg->qinfo, q, sizeof(struct query_info));
579 msg->qinfo.qname = regional_alloc_init(region, q->qname, q->qname_len);
580 if(!msg->qinfo.qname)
583 msg->rep = (struct reply_info*)regional_alloc(region,
585 if(!msg->rep)
587 msg->rep->reason_bogus = LDNS_EDE_NONE;
588 msg->rep->reason_bogus_str = NULL;
591 msg->rep->rrsets = (struct ub_packed_rrset_key**)
594 if(!msg->rep->rrsets)
596 return msg;
604 struct dns_msg* msg;
632 msg = gen_dns_msg(region, q, r->rrset_count);
633 if(!msg) return NULL;
634 msg->rep->flags = r->flags;
635 msg->rep->qdcount = r->qdcount;
636 msg->rep->ttl = is_expired
640 msg->rep->prefetch_ttl = r->prefetch_ttl - now;
642 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
643 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
644 msg->rep->security = r->security;
645 msg->rep->an_numrrsets = r->an_numrrsets;
646 msg->rep->ns_numrrsets = r->ns_numrrsets;
647 msg->rep->ar_numrrsets = r->ar_numrrsets;
648 msg->rep->rrset_count = r->rrset_count;
649 msg->rep->authoritative = r->authoritative;
650 msg->rep->reason_bogus = r->reason_bogus;
652 msg->rep->reason_bogus_str = regional_strdup(region, r->reason_bogus_str);
661 /* cname chain is now invalid, reconstruct msg */
670 for(i=0; i<msg->rep->rrset_count; i++) {
671 msg->rep->rrsets[i] = packed_rrset_copy_region(r->rrsets[i],
673 if(!msg->rep->rrsets[i]) {
683 return msg;
713 struct dns_msg* msg;
718 msg = gen_dns_msg(region, q, 1); /* only the CNAME (or other) RRset */
719 if(!msg)
721 msg->rep->flags = BIT_QR; /* reply, no AA, no error */
722 msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */
723 msg->rep->qdcount = 1;
724 msg->rep->ttl = d->ttl - now;
725 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
726 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
727 msg->rep->security = sec_status_unchecked;
728 msg->rep->an_numrrsets = 1;
729 msg->rep->ns_numrrsets = 0;
730 msg->rep->ar_numrrsets = 0;
731 msg->rep->rrset_count = 1;
732 msg->rep->reason_bogus = LDNS_EDE_NONE;
733 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
734 if(!msg->rep->rrsets[0]) /* copy CNAME */
736 return msg;
744 struct dns_msg* msg;
757 msg = gen_dns_msg(region, q, 2); /* DNAME + CNAME RRset */
758 if(!msg)
760 msg->rep->flags = BIT_QR; /* reply, no AA, no error */
761 msg->rep->authoritative = 0; /* reply stored in cache can't be authoritative */
762 msg->rep->qdcount = 1;
763 msg->rep->ttl = d->ttl - now;
764 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl);
765 msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL;
766 msg->rep->security = sec_status_unchecked;
767 msg->rep->an_numrrsets = 1;
768 msg->rep->ns_numrrsets = 0;
769 msg->rep->ar_numrrsets = 0;
770 msg->rep->rrset_count = 1;
771 msg->rep->reason_bogus = LDNS_EDE_NONE;
772 msg->rep->rrsets[0] = packed_rrset_copy_region(rrset, region, now);
773 if(!msg->rep->rrsets[0]) /* copy DNAME */
781 msg->rep->flags |= LDNS_RCODE_YXDOMAIN;
782 return msg;
797 msg->rep->rrsets[1] = ck;
823 msg->rep->ttl = newd->ttl;
824 msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(newd->ttl);
825 msg->rep->serve_expired_ttl = newd->ttl + SERVE_EXPIRED_TTL;
828 msg->rep->an_numrrsets ++;
829 msg->rep->rrset_count ++;
830 return msg;
840 struct dns_msg* msg = NULL;
849 msg = dns_msg_create(qname, qnamelen, qtype, qclass,
851 if(!msg) {
855 msg->rep->flags |= LDNS_RCODE_NOTIMPL;
856 msg->rep->security = sec_status_indeterminate;
857 return msg;
879 /* create msg if none */
880 if(!msg) {
881 msg = dns_msg_create(qname, qnamelen, qtype, qclass,
883 if(!msg) {
890 if(!dns_msg_ansadd(msg, region, rrset, now)) {
896 return msg;
922 struct dns_msg* msg = tomsg(env, &key->key, data, region, now, 0,
924 if(msg) {
926 return msg;
928 /* could be msg==NULL; due to TTL or not all rrsets available */
940 struct dns_msg* msg = synth_dname_msg(rrset, region, now, &k,
942 if(msg) {
951 return msg;
963 * straight up return the msg */
965 return msg;
983 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
984 if(msg) {
986 return msg;
997 * signatures have fallen off, then do not synthesize a msg
1010 struct dns_msg* msg = rrset_msg(rrset, region, now, &k);
1011 if(msg) {
1013 return msg;
1039 struct dns_msg* msg;
1044 && (msg=tomsg(env, &k, data, region, now, 0, scratch))) {
1046 msg->qinfo.qname=qname;
1047 msg->qinfo.qname_len=qnamelen;
1049 msg->rep->security = sec_status_unchecked;
1050 iter_scrub_nxdomain(msg);
1051 return msg;
1073 /* alloc, malloc properly (not in region, like msg is) */
1099 /* store msg, and rrsets */
1128 struct msgreply_entry* msg;
1129 msg = msg_cache_lookup(env, qinfo->qname, qinfo->qname_len,
1131 if(msg) {
1132 struct reply_info* rep = (struct reply_info*)msg->entry.data;
1135 lock_rw_unlock(&msg->entry.lock);
1138 lock_rw_unlock(&msg->entry.lock);