Lines Matching refs:msg

53 hexdump(const char *msg, const char *msg2, void *base, size_t len) {  in hexdump()  argument
60 printf("*** %s [%s] (%u bytes @ %p)\n", msg, msg2, (unsigned)len, base); in hexdump()
263 newbuffer(dns_message_t *msg, unsigned int size) { in newbuffer() argument
267 isc_buffer_allocate(msg->mctx, &dynbuf, size); in newbuffer()
269 ISC_LIST_APPEND(msg->scratchpad, dynbuf, link); in newbuffer()
274 currentbuffer(dns_message_t *msg) { in currentbuffer() argument
277 dynbuf = ISC_LIST_TAIL(msg->scratchpad); in currentbuffer()
284 releaserdata(dns_message_t *msg, dns_rdata_t *rdata) { in releaserdata() argument
285 ISC_LIST_PREPEND(msg->freerdata, rdata, link); in releaserdata()
289 newrdata(dns_message_t *msg) { in newrdata() argument
293 rdata = ISC_LIST_HEAD(msg->freerdata); in newrdata()
295 ISC_LIST_UNLINK(msg->freerdata, rdata, link); in newrdata()
299 msgblock = ISC_LIST_TAIL(msg->rdatas); in newrdata()
302 msgblock = msgblock_allocate(msg->mctx, sizeof(dns_rdata_t), in newrdata()
308 ISC_LIST_APPEND(msg->rdatas, msgblock, link); in newrdata()
318 releaserdatalist(dns_message_t *msg, dns_rdatalist_t *rdatalist) { in releaserdatalist() argument
319 ISC_LIST_PREPEND(msg->freerdatalist, rdatalist, link); in releaserdatalist()
323 newrdatalist(dns_message_t *msg) { in newrdatalist() argument
327 rdatalist = ISC_LIST_HEAD(msg->freerdatalist); in newrdatalist()
329 ISC_LIST_UNLINK(msg->freerdatalist, rdatalist, link); in newrdatalist()
333 msgblock = ISC_LIST_TAIL(msg->rdatalists); in newrdatalist()
336 msgblock = msgblock_allocate(msg->mctx, sizeof(dns_rdatalist_t), in newrdatalist()
342 ISC_LIST_APPEND(msg->rdatalists, msgblock, link); in newrdatalist()
355 newoffsets(dns_message_t *msg) { in newoffsets() argument
359 msgblock = ISC_LIST_TAIL(msg->offsets); in newoffsets()
362 msgblock = msgblock_allocate(msg->mctx, sizeof(dns_offsets_t), in newoffsets()
368 ISC_LIST_APPEND(msg->offsets, msgblock, link); in newoffsets()
453 msgresetnames(dns_message_t *msg, unsigned int first_section) { in msgresetnames() argument
462 name = ISC_LIST_HEAD(msg->sections[i]); in msgresetnames()
465 ISC_LIST_UNLINK(msg->sections[i], name, link); in msgresetnames()
474 isc_mempool_put(msg->rdspool, rds); in msgresetnames()
477 dns_message_puttempname(msg, &name); in msgresetnames()
484 msgresetopt(dns_message_t *msg) { in msgresetopt() argument
485 if (msg->opt != NULL) { in msgresetopt()
486 if (msg->opt_reserved > 0) { in msgresetopt()
487 dns_message_renderrelease(msg, msg->opt_reserved); in msgresetopt()
488 msg->opt_reserved = 0; in msgresetopt()
490 INSIST(dns_rdataset_isassociated(msg->opt)); in msgresetopt()
491 dns_rdataset_disassociate(msg->opt); in msgresetopt()
492 isc_mempool_put(msg->rdspool, msg->opt); in msgresetopt()
493 msg->opt = NULL; in msgresetopt()
494 msg->cc_ok = 0; in msgresetopt()
495 msg->cc_bad = 0; in msgresetopt()
500 msgresetsigs(dns_message_t *msg, bool replying) { in msgresetsigs() argument
501 if (msg->sig_reserved > 0) { in msgresetsigs()
502 dns_message_renderrelease(msg, msg->sig_reserved); in msgresetsigs()
503 msg->sig_reserved = 0; in msgresetsigs()
505 if (msg->tsig != NULL) { in msgresetsigs()
506 INSIST(dns_rdataset_isassociated(msg->tsig)); in msgresetsigs()
507 INSIST(msg->namepool != NULL); in msgresetsigs()
509 INSIST(msg->querytsig == NULL); in msgresetsigs()
510 msg->querytsig = msg->tsig; in msgresetsigs()
512 dns_rdataset_disassociate(msg->tsig); in msgresetsigs()
513 isc_mempool_put(msg->rdspool, msg->tsig); in msgresetsigs()
514 msg->tsig = NULL; in msgresetsigs()
515 if (msg->querytsig != NULL) { in msgresetsigs()
516 dns_rdataset_disassociate(msg->querytsig); in msgresetsigs()
517 isc_mempool_put(msg->rdspool, msg->querytsig); in msgresetsigs()
518 msg->querytsig = NULL; in msgresetsigs()
521 dns_message_puttempname(msg, &msg->tsigname); in msgresetsigs()
522 msg->tsig = NULL; in msgresetsigs()
523 } else if (msg->querytsig != NULL && !replying) { in msgresetsigs()
524 dns_rdataset_disassociate(msg->querytsig); in msgresetsigs()
525 isc_mempool_put(msg->rdspool, msg->querytsig); in msgresetsigs()
526 msg->querytsig = NULL; in msgresetsigs()
528 if (msg->sig0 != NULL) { in msgresetsigs()
529 INSIST(dns_rdataset_isassociated(msg->sig0)); in msgresetsigs()
530 dns_rdataset_disassociate(msg->sig0); in msgresetsigs()
531 isc_mempool_put(msg->rdspool, msg->sig0); in msgresetsigs()
532 if (msg->sig0name != NULL) { in msgresetsigs()
533 dns_message_puttempname(msg, &msg->sig0name); in msgresetsigs()
535 msg->sig0 = NULL; in msgresetsigs()
536 msg->sig0name = NULL; in msgresetsigs()
545 msgreset(dns_message_t *msg, bool everything) { in msgreset() argument
551 msgresetnames(msg, 0); in msgreset()
552 msgresetopt(msg); in msgreset()
553 msgresetsigs(msg, false); in msgreset()
564 rdata = ISC_LIST_HEAD(msg->freerdata); in msgreset()
566 ISC_LIST_UNLINK(msg->freerdata, rdata, link); in msgreset()
567 rdata = ISC_LIST_HEAD(msg->freerdata); in msgreset()
569 rdatalist = ISC_LIST_HEAD(msg->freerdatalist); in msgreset()
571 ISC_LIST_UNLINK(msg->freerdatalist, rdatalist, link); in msgreset()
572 rdatalist = ISC_LIST_HEAD(msg->freerdatalist); in msgreset()
575 dynbuf = ISC_LIST_HEAD(msg->scratchpad); in msgreset()
583 ISC_LIST_UNLINK(msg->scratchpad, dynbuf, link); in msgreset()
588 msgblock = ISC_LIST_HEAD(msg->rdatas); in msgreset()
595 ISC_LIST_UNLINK(msg->rdatas, msgblock, link); in msgreset()
596 msgblock_free(msg->mctx, msgblock, sizeof(dns_rdata_t)); in msgreset()
604 msgblock = ISC_LIST_HEAD(msg->rdatalists); in msgreset()
611 ISC_LIST_UNLINK(msg->rdatalists, msgblock, link); in msgreset()
612 msgblock_free(msg->mctx, msgblock, sizeof(dns_rdatalist_t)); in msgreset()
616 msgblock = ISC_LIST_HEAD(msg->offsets); in msgreset()
623 ISC_LIST_UNLINK(msg->offsets, msgblock, link); in msgreset()
624 msgblock_free(msg->mctx, msgblock, sizeof(dns_offsets_t)); in msgreset()
628 if (msg->tsigkey != NULL) { in msgreset()
629 dns_tsigkey_detach(&msg->tsigkey); in msgreset()
630 msg->tsigkey = NULL; in msgreset()
633 if (msg->tsigctx != NULL) { in msgreset()
634 dst_context_destroy(&msg->tsigctx); in msgreset()
637 if (msg->query.base != NULL) { in msgreset()
638 if (msg->free_query != 0) { in msgreset()
639 isc_mem_put(msg->mctx, msg->query.base, in msgreset()
640 msg->query.length); in msgreset()
642 msg->query.base = NULL; in msgreset()
643 msg->query.length = 0; in msgreset()
646 if (msg->saved.base != NULL) { in msgreset()
647 if (msg->free_saved != 0) { in msgreset()
648 isc_mem_put(msg->mctx, msg->saved.base, in msgreset()
649 msg->saved.length); in msgreset()
651 msg->saved.base = NULL; in msgreset()
652 msg->saved.length = 0; in msgreset()
658 dynbuf = ISC_LIST_HEAD(msg->cleanup); in msgreset()
661 ISC_LIST_UNLINK(msg->cleanup, dynbuf, link); in msgreset()
670 msginit(msg); in msgreset()
673 ENSURE(isc_mempool_getallocated(msg->namepool) == 0); in msgreset()
674 ENSURE(isc_mempool_getallocated(msg->rdspool) == 0); in msgreset()
766 dns_message_reset(dns_message_t *msg, unsigned int intent) { in dns_message_reset() argument
767 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_reset()
771 msgreset(msg, false); in dns_message_reset()
772 msg->from_to_wire = intent; in dns_message_reset()
776 dns__message_destroy(dns_message_t *msg) { in dns__message_destroy() argument
777 REQUIRE(msg != NULL); in dns__message_destroy()
778 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns__message_destroy()
780 msgreset(msg, true); in dns__message_destroy()
781 isc_mempool_destroy(&msg->namepool); in dns__message_destroy()
782 isc_mempool_destroy(&msg->rdspool); in dns__message_destroy()
783 isc_refcount_destroy(&msg->refcount); in dns__message_destroy()
784 msg->magic = 0; in dns__message_destroy()
785 isc_mem_putanddetach(&msg->mctx, msg, sizeof(dns_message_t)); in dns__message_destroy()
799 dns_message_t *msg = *messagep; in dns_message_detach() local
802 if (isc_refcount_decrement(&msg->refcount) == 1) { in dns_message_detach()
803 dns__message_destroy(msg); in dns_message_detach()
886 getname(dns_name_t *name, isc_buffer_t *source, dns_message_t *msg, in getname() argument
892 scratch = currentbuffer(msg); in getname()
905 result = newbuffer(msg, SCRATCHPAD_SIZE); in getname()
910 scratch = currentbuffer(msg); in getname()
921 getrdata(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, in getrdata() argument
929 scratch = currentbuffer(msg); in getrdata()
962 result = newbuffer(msg, trysize); in getrdata()
967 scratch = currentbuffer(msg); in getrdata()
997 getquestions(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, in getquestions() argument
1008 dns_namelist_t *section = &msg->sections[DNS_SECTION_QUESTION]; in getquestions()
1015 if (msg->counts[DNS_SECTION_QUESTION] > 1) { in getquestions()
1016 isc_ht_init(&name_map, msg->mctx, 1, ISC_HT_CASE_INSENSITIVE); in getquestions()
1019 for (count = 0; count < msg->counts[DNS_SECTION_QUESTION]; count++) { in getquestions()
1021 result = dns_message_gettempname(msg, &name); in getquestions()
1025 name->offsets = (unsigned char *)newoffsets(msg); in getquestions()
1033 result = getname(name, source, msg, dctx); in getquestions()
1071 dns_message_puttempname(msg, &name); in getquestions()
1096 if (msg->rdclass_set == 0) { in getquestions()
1097 msg->rdclass = rdclass; in getquestions()
1098 msg->rdclass_set = 1; in getquestions()
1099 } else if (msg->rdclass != rdclass) { in getquestions()
1107 msg->tkey = 1; in getquestions()
1113 rdatalist = newrdatalist(msg); in getquestions()
1118 rdataset = isc_mempool_get(msg->rdspool); in getquestions()
1149 isc_ht_init(&name->ht, msg->mctx, 1, in getquestions()
1183 isc_mempool_put(msg->rdspool, rdataset); in getquestions()
1186 dns_message_puttempname(msg, &name); in getquestions()
1269 getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, in getsection() argument
1283 dns_namelist_t *section = &msg->sections[sectionid]; in getsection()
1291 if (msg->counts[sectionid] > 1) { in getsection()
1292 isc_ht_init(&name_map, msg->mctx, 1, ISC_HT_CASE_INSENSITIVE); in getsection()
1295 for (count = 0; count < msg->counts[sectionid]; count++) { in getsection()
1307 result = dns_message_gettempname(msg, &name); in getsection()
1311 name->offsets = (unsigned char *)newoffsets(msg); in getsection()
1319 result = getname(name, source, msg, dctx); in getsection()
1341 if (msg->rdclass_set == 0 && in getsection()
1346 msg->rdclass = rdclass; in getsection()
1347 msg->rdclass_set = 1; in getsection()
1354 if (msg->opcode != dns_opcode_update && in getsection()
1360 msg->rdclass != dns_rdataclass_any && in getsection()
1361 msg->rdclass != rdclass) in getsection()
1370 if (msg->opcode != dns_opcode_update && !msg->tkey && in getsection()
1372 msg->rdclass != dns_rdataclass_any && in getsection()
1373 msg->rdclass != rdclass) in getsection()
1388 count != msg->counts[sectionid] - 1) in getsection()
1404 msg->opt != NULL) in getsection()
1422 if ((msg->flags & DNS_MESSAGEFLAG_QR) == 0) { in getsection()
1451 rdata = newrdata(msg); in getsection()
1452 if (msg->opcode == dns_opcode_update && in getsection()
1473 msg->opcode == dns_opcode_update && in getsection()
1476 result = getrdata(source, msg, dctx, msg->rdclass, in getsection()
1479 result = getrdata(source, msg, dctx, rdclass, rdtype, in getsection()
1497 count != msg->counts[sectionid] - 1) in getsection()
1506 if (msg->rdclass != dns_rdataclass_any && in getsection()
1507 msg->rdclass != rdclass) in getsection()
1520 !dns_rdata_checkowner(name, msg->rdclass, rdtype, false)) in getsection()
1531 if (preserve_order || msg->opcode == dns_opcode_update || in getsection()
1561 dns_message_puttempname(msg, &name); in getsection()
1571 rdatalist = newrdatalist(msg); in getsection()
1576 dns_message_gettemprdataset(msg, &rdataset); in getsection()
1598 } else if (preserve_order || msg->opcode == dns_opcode_update || in getsection()
1619 isc_ht_init(&name->ht, msg->mctx, 1, in getsection()
1656 isc_mempool_put(msg->rdspool, rdataset); in getsection()
1711 msg->opt = rdataset; in getsection()
1712 ercode = (dns_rcode_t)((msg->opt->ttl & in getsection()
1715 msg->rcode |= ercode; in getsection()
1716 dns_message_puttempname(msg, &name); in getsection()
1719 msg->sig0 = rdataset; in getsection()
1720 msg->sig0name = name; in getsection()
1721 msg->sigstart = recstart; in getsection()
1724 msg->tsig = rdataset; in getsection()
1725 msg->tsigname = name; in getsection()
1726 msg->sigstart = recstart; in getsection()
1730 msg->tsigname->attributes |= DNS_NAMEATTR_NOCOMPRESS; in getsection()
1737 dns_message_puttempname(msg, &name); in getsection()
1750 msg->opcode == dns_opcode_query && in getsection()
1751 ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) && in getsection()
1752 ((msg->flags & DNS_MESSAGEFLAG_TC) == 0) && !preserve_order && in getsection()
1765 isc_mempool_put(msg->rdspool, rdataset); in getsection()
1768 dns_message_puttempname(msg, &name); in getsection()
1783 dns_message_parse(dns_message_t *msg, isc_buffer_t *source, in dns_message_parse() argument
1793 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_parse()
1795 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTPARSE); in dns_message_parse()
1802 msg->header_ok = 0; in dns_message_parse()
1803 msg->question_ok = 0; in dns_message_parse()
1806 isc_buffer_usedregion(&origsource, &msg->saved); in dns_message_parse()
1808 msg->saved.length = isc_buffer_usedlength(&origsource); in dns_message_parse()
1809 msg->saved.base = isc_mem_get(msg->mctx, msg->saved.length); in dns_message_parse()
1810 memmove(msg->saved.base, isc_buffer_base(&origsource), in dns_message_parse()
1811 msg->saved.length); in dns_message_parse()
1812 msg->free_saved = 1; in dns_message_parse()
1820 msg->id = isc_buffer_getuint16(source); in dns_message_parse()
1822 msg->opcode = ((tmpflags & DNS_MESSAGE_OPCODE_MASK) >> in dns_message_parse()
1824 msg->rcode = (dns_rcode_t)(tmpflags & DNS_MESSAGE_RCODE_MASK); in dns_message_parse()
1825 msg->flags = (tmpflags & DNS_MESSAGE_FLAG_MASK); in dns_message_parse()
1826 msg->counts[DNS_SECTION_QUESTION] = isc_buffer_getuint16(source); in dns_message_parse()
1827 msg->counts[DNS_SECTION_ANSWER] = isc_buffer_getuint16(source); in dns_message_parse()
1828 msg->counts[DNS_SECTION_AUTHORITY] = isc_buffer_getuint16(source); in dns_message_parse()
1829 msg->counts[DNS_SECTION_ADDITIONAL] = isc_buffer_getuint16(source); in dns_message_parse()
1831 msg->header_ok = 1; in dns_message_parse()
1832 msg->state = DNS_SECTION_QUESTION; in dns_message_parse()
1841 ret = getquestions(source, msg, &dctx, options); in dns_message_parse()
1852 msg->question_ok = 1; in dns_message_parse()
1854 ret = getsection(source, msg, &dctx, DNS_SECTION_ANSWER, options); in dns_message_parse()
1866 ret = getsection(source, msg, &dctx, DNS_SECTION_AUTHORITY, options); in dns_message_parse()
1878 ret = getsection(source, msg, &dctx, DNS_SECTION_ADDITIONAL, options); in dns_message_parse()
1910 dns_message_renderbegin(dns_message_t *msg, dns_compress_t *cctx, in dns_message_renderbegin() argument
1914 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderbegin()
1916 REQUIRE(msg->buffer == NULL); in dns_message_renderbegin()
1917 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_renderbegin()
1919 msg->cctx = cctx; in dns_message_renderbegin()
1935 if (r.length - DNS_MESSAGE_HEADERLEN < msg->reserved) { in dns_message_renderbegin()
1944 msg->buffer = buffer; in dns_message_renderbegin()
1950 dns_message_renderchangebuffer(dns_message_t *msg, isc_buffer_t *buffer) { in dns_message_renderchangebuffer() argument
1953 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderchangebuffer()
1955 REQUIRE(msg->buffer != NULL); in dns_message_renderchangebuffer()
1964 isc_buffer_usedregion(msg->buffer, &r); in dns_message_renderchangebuffer()
1973 msg->buffer = buffer; in dns_message_renderchangebuffer()
1979 dns_message_renderrelease(dns_message_t *msg, unsigned int space) { in dns_message_renderrelease() argument
1980 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderrelease()
1981 REQUIRE(space <= msg->reserved); in dns_message_renderrelease()
1983 msg->reserved -= space; in dns_message_renderrelease()
1987 dns_message_renderreserve(dns_message_t *msg, unsigned int space) { in dns_message_renderreserve() argument
1990 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderreserve()
1992 if (msg->buffer != NULL) { in dns_message_renderreserve()
1993 isc_buffer_availableregion(msg->buffer, &r); in dns_message_renderreserve()
1994 if (r.length < (space + msg->reserved)) { in dns_message_renderreserve()
1999 msg->reserved += space; in dns_message_renderreserve()
2061 maybe_clear_ad(dns_message_t *msg, dns_section_t sectionid) { in maybe_clear_ad() argument
2062 if (msg->counts[sectionid] == 0 && in maybe_clear_ad()
2065 msg->counts[DNS_SECTION_ANSWER] == 0))) in maybe_clear_ad()
2067 msg->flags &= ~DNS_MESSAGEFLAG_AD; in maybe_clear_ad()
2072 dns_message_rendersection(dns_message_t *msg, dns_section_t sectionid, in dns_message_rendersection() argument
2085 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_rendersection()
2086 REQUIRE(msg->buffer != NULL); in dns_message_rendersection()
2089 section = &msg->sections[sectionid]; in dns_message_rendersection()
2116 if (msg->buffer->length - msg->buffer->used < msg->reserved) { in dns_message_rendersection()
2119 msg->buffer->length -= msg->reserved; in dns_message_rendersection()
2122 if (msg->reserved == 0 && (options & DNS_MESSAGERENDER_PARTIAL) != 0) { in dns_message_rendersection()
2137 const void *order_arg = &msg->order_arg; in dns_message_rendersection()
2138 st = *(msg->buffer); in dns_message_rendersection()
2142 rdataset, name, msg->cctx, msg->buffer, in dns_message_rendersection()
2143 msg->order, order_arg, rd_options, in dns_message_rendersection()
2147 rdataset, name, msg->cctx, msg->buffer, in dns_message_rendersection()
2148 msg->order, order_arg, rd_options, in dns_message_rendersection()
2153 msg->flags |= DNS_MESSAGEFLAG_TC; in dns_message_rendersection()
2154 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2155 msg->counts[sectionid] += total; in dns_message_rendersection()
2159 msg->flags |= DNS_MESSAGEFLAG_TC; in dns_message_rendersection()
2163 dns_compress_rollback(msg->cctx, in dns_message_rendersection()
2165 *(msg->buffer) = st; /* rollback */ in dns_message_rendersection()
2166 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2167 msg->counts[sectionid] += total; in dns_message_rendersection()
2177 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2178 msg->counts[sectionid] += total; in dns_message_rendersection()
2204 st = *(msg->buffer); in dns_message_rendersection()
2209 rdataset, name, msg->cctx, in dns_message_rendersection()
2210 msg->buffer, msg->order, in dns_message_rendersection()
2211 &msg->order_arg, rd_options, in dns_message_rendersection()
2215 rdataset, name, msg->cctx, in dns_message_rendersection()
2216 msg->buffer, msg->order, in dns_message_rendersection()
2217 &msg->order_arg, rd_options, in dns_message_rendersection()
2237 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2238 msg->counts[sectionid] += total; in dns_message_rendersection()
2244 msg->cctx, (uint16_t)st.used); in dns_message_rendersection()
2245 *(msg->buffer) = st; /* rollback */ in dns_message_rendersection()
2246 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2247 msg->counts[sectionid] += total; in dns_message_rendersection()
2248 maybe_clear_ad(msg, sectionid); in dns_message_rendersection()
2260 msg->flags &= ~DNS_MESSAGEFLAG_AD; in dns_message_rendersection()
2263 msg->flags &= ~DNS_MESSAGEFLAG_AD; in dns_message_rendersection()
2277 msg->buffer->length += msg->reserved; in dns_message_rendersection()
2278 msg->counts[sectionid] += total; in dns_message_rendersection()
2284 dns_message_renderheader(dns_message_t *msg, isc_buffer_t *target) { in dns_message_renderheader() argument
2288 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderheader()
2294 isc_buffer_putuint16(target, msg->id); in dns_message_renderheader()
2296 tmp = ((msg->opcode << DNS_MESSAGE_OPCODE_SHIFT) & in dns_message_renderheader()
2298 tmp |= (msg->rcode & DNS_MESSAGE_RCODE_MASK); in dns_message_renderheader()
2299 tmp |= (msg->flags & DNS_MESSAGE_FLAG_MASK); in dns_message_renderheader()
2301 INSIST(msg->counts[DNS_SECTION_QUESTION] < 65536 && in dns_message_renderheader()
2302 msg->counts[DNS_SECTION_ANSWER] < 65536 && in dns_message_renderheader()
2303 msg->counts[DNS_SECTION_AUTHORITY] < 65536 && in dns_message_renderheader()
2304 msg->counts[DNS_SECTION_ADDITIONAL] < 65536); in dns_message_renderheader()
2308 (uint16_t)msg->counts[DNS_SECTION_QUESTION]); in dns_message_renderheader()
2309 isc_buffer_putuint16(target, (uint16_t)msg->counts[DNS_SECTION_ANSWER]); in dns_message_renderheader()
2311 (uint16_t)msg->counts[DNS_SECTION_AUTHORITY]); in dns_message_renderheader()
2313 (uint16_t)msg->counts[DNS_SECTION_ADDITIONAL]); in dns_message_renderheader()
2317 dns_message_renderend(dns_message_t *msg) { in dns_message_renderend() argument
2323 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderend()
2324 REQUIRE(msg->buffer != NULL); in dns_message_renderend()
2326 if ((msg->rcode & ~DNS_MESSAGE_RCODE_MASK) != 0 && msg->opt == NULL) { in dns_message_renderend()
2339 if ((msg->tsigkey != NULL || msg->sig0key != NULL || msg->opt) && in dns_message_renderend()
2340 (msg->flags & DNS_MESSAGEFLAG_TC) != 0) in dns_message_renderend()
2344 msgresetnames(msg, DNS_SECTION_ANSWER); in dns_message_renderend()
2345 buf = msg->buffer; in dns_message_renderend()
2346 dns_message_renderreset(msg); in dns_message_renderend()
2347 msg->buffer = buf; in dns_message_renderend()
2348 isc_buffer_clear(msg->buffer); in dns_message_renderend()
2349 isc_buffer_add(msg->buffer, DNS_MESSAGE_HEADERLEN); in dns_message_renderend()
2350 dns_compress_rollback(msg->cctx, 0); in dns_message_renderend()
2351 result = dns_message_rendersection(msg, DNS_SECTION_QUESTION, in dns_message_renderend()
2361 if (msg->opt != NULL) { in dns_message_renderend()
2362 dns_message_renderrelease(msg, msg->opt_reserved); in dns_message_renderend()
2363 msg->opt_reserved = 0; in dns_message_renderend()
2368 msg->opt->ttl &= ~DNS_MESSAGE_EDNSRCODE_MASK; in dns_message_renderend()
2369 msg->opt->ttl |= (((dns_ttl_t)(msg->rcode) << 20) & in dns_message_renderend()
2375 result = renderset(msg->opt, dns_rootname, msg->cctx, in dns_message_renderend()
2376 msg->buffer, msg->reserved, 0, &count); in dns_message_renderend()
2377 msg->counts[DNS_SECTION_ADDITIONAL] += count; in dns_message_renderend()
2389 if (msg->padding_off > 0) { in dns_message_renderend()
2390 unsigned char *cp = isc_buffer_used(msg->buffer); in dns_message_renderend()
2407 used = isc_buffer_usedlength(msg->buffer); in dns_message_renderend()
2408 if (msg->padding != 0) { in dns_message_renderend()
2409 padsize = ((uint16_t)used + msg->reserved) % in dns_message_renderend()
2410 msg->padding; in dns_message_renderend()
2413 padsize = msg->padding - padsize; in dns_message_renderend()
2416 remaining = isc_buffer_availablelength(msg->buffer); in dns_message_renderend()
2421 isc_buffer_add(msg->buffer, padsize); in dns_message_renderend()
2425 cp -= msg->padding_off; in dns_message_renderend()
2436 if (msg->tsigkey != NULL) { in dns_message_renderend()
2437 dns_message_renderrelease(msg, msg->sig_reserved); in dns_message_renderend()
2438 msg->sig_reserved = 0; in dns_message_renderend()
2439 result = dns_tsig_sign(msg); in dns_message_renderend()
2444 result = renderset(msg->tsig, msg->tsigname, msg->cctx, in dns_message_renderend()
2445 msg->buffer, msg->reserved, 0, &count); in dns_message_renderend()
2446 msg->counts[DNS_SECTION_ADDITIONAL] += count; in dns_message_renderend()
2455 if (msg->sig0key != NULL) { in dns_message_renderend()
2456 dns_message_renderrelease(msg, msg->sig_reserved); in dns_message_renderend()
2457 msg->sig_reserved = 0; in dns_message_renderend()
2458 result = dns_dnssec_signmessage(msg, msg->sig0key); in dns_message_renderend()
2468 result = renderset(msg->sig0, dns_rootname, msg->cctx, in dns_message_renderend()
2469 msg->buffer, msg->reserved, 0, &count); in dns_message_renderend()
2470 msg->counts[DNS_SECTION_ADDITIONAL] += count; in dns_message_renderend()
2476 isc_buffer_usedregion(msg->buffer, &r); in dns_message_renderend()
2479 dns_message_renderheader(msg, &tmpbuf); in dns_message_renderend()
2481 msg->buffer = NULL; /* forget about this buffer only on success XXX */ in dns_message_renderend()
2487 dns_message_renderreset(dns_message_t *msg) { in dns_message_renderreset() argument
2496 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_renderreset()
2497 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_renderreset()
2499 msg->buffer = NULL; in dns_message_renderreset()
2502 msg->cursors[i] = NULL; in dns_message_renderreset()
2503 msg->counts[i] = 0; in dns_message_renderreset()
2504 for (name = ISC_LIST_HEAD(msg->sections[i]); name != NULL; in dns_message_renderreset()
2514 if (msg->tsigname != NULL) { in dns_message_renderreset()
2515 dns_message_puttempname(msg, &msg->tsigname); in dns_message_renderreset()
2517 if (msg->tsig != NULL) { in dns_message_renderreset()
2518 dns_rdataset_disassociate(msg->tsig); in dns_message_renderreset()
2519 dns_message_puttemprdataset(msg, &msg->tsig); in dns_message_renderreset()
2521 if (msg->sig0 != NULL) { in dns_message_renderreset()
2522 dns_rdataset_disassociate(msg->sig0); in dns_message_renderreset()
2523 dns_message_puttemprdataset(msg, &msg->sig0); in dns_message_renderreset()
2528 dns_message_firstname(dns_message_t *msg, dns_section_t section) { in dns_message_firstname() argument
2529 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_firstname()
2532 msg->cursors[section] = ISC_LIST_HEAD(msg->sections[section]); in dns_message_firstname()
2534 if (msg->cursors[section] == NULL) { in dns_message_firstname()
2542 dns_message_nextname(dns_message_t *msg, dns_section_t section) { in dns_message_nextname() argument
2543 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_nextname()
2545 REQUIRE(msg->cursors[section] != NULL); in dns_message_nextname()
2547 msg->cursors[section] = ISC_LIST_NEXT(msg->cursors[section], link); in dns_message_nextname()
2549 if (msg->cursors[section] == NULL) { in dns_message_nextname()
2557 dns_message_currentname(dns_message_t *msg, dns_section_t section, in dns_message_currentname() argument
2559 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_currentname()
2562 REQUIRE(msg->cursors[section] != NULL); in dns_message_currentname()
2564 *name = msg->cursors[section]; in dns_message_currentname()
2568 dns_message_findname(dns_message_t *msg, dns_section_t section, in dns_message_findname() argument
2581 REQUIRE(msg != NULL); in dns_message_findname()
2592 result = findname(&foundname, target, &msg->sections[section]); in dns_message_findname()
2620 dns_message_addname(dns_message_t *msg, dns_name_t *name, in dns_message_addname() argument
2622 REQUIRE(msg != NULL); in dns_message_addname()
2623 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_addname()
2627 ISC_LIST_APPEND(msg->sections[section], name, link); in dns_message_addname()
2631 dns_message_removename(dns_message_t *msg, dns_name_t *name, in dns_message_removename() argument
2633 REQUIRE(msg != NULL); in dns_message_removename()
2634 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_removename()
2638 ISC_LIST_UNLINK(msg->sections[section], name, link); in dns_message_removename()
2642 dns_message_gettempname(dns_message_t *msg, dns_name_t **item) { in dns_message_gettempname() argument
2645 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettempname()
2648 fn = isc_mempool_get(msg->namepool); in dns_message_gettempname()
2658 dns_message_gettemprdata(dns_message_t *msg, dns_rdata_t **item) { in dns_message_gettemprdata() argument
2659 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettemprdata()
2662 *item = newrdata(msg); in dns_message_gettemprdata()
2671 dns_message_gettemprdataset(dns_message_t *msg, dns_rdataset_t **item) { in dns_message_gettemprdataset() argument
2672 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettemprdataset()
2675 *item = isc_mempool_get(msg->rdspool); in dns_message_gettemprdataset()
2685 dns_message_gettemprdatalist(dns_message_t *msg, dns_rdatalist_t **item) { in dns_message_gettemprdatalist() argument
2686 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettemprdatalist()
2689 *item = newrdatalist(msg); in dns_message_gettemprdatalist()
2698 dns_message_puttempname(dns_message_t *msg, dns_name_t **itemp) { in dns_message_puttempname() argument
2701 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_puttempname()
2718 dns_name_free(item, msg->mctx); in dns_message_puttempname()
2726 isc_mempool_put(msg->namepool, item); in dns_message_puttempname()
2730 dns_message_puttemprdata(dns_message_t *msg, dns_rdata_t **item) { in dns_message_puttemprdata() argument
2731 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_puttemprdata()
2734 releaserdata(msg, *item); in dns_message_puttemprdata()
2739 dns_message_puttemprdataset(dns_message_t *msg, dns_rdataset_t **item) { in dns_message_puttemprdataset() argument
2740 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_puttemprdataset()
2744 isc_mempool_put(msg->rdspool, *item); in dns_message_puttemprdataset()
2749 dns_message_puttemprdatalist(dns_message_t *msg, dns_rdatalist_t **item) { in dns_message_puttemprdatalist() argument
2750 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_puttemprdatalist()
2753 releaserdatalist(msg, *item); in dns_message_puttemprdatalist()
2789 dns_message_reply(dns_message_t *msg, bool want_question_section) { in dns_message_reply() argument
2793 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_reply()
2794 REQUIRE((msg->flags & DNS_MESSAGEFLAG_QR) == 0); in dns_message_reply()
2796 if (!msg->header_ok) { in dns_message_reply()
2799 if (msg->opcode != dns_opcode_query && msg->opcode != dns_opcode_notify) in dns_message_reply()
2803 if (msg->opcode == dns_opcode_update) { in dns_message_reply()
2806 if (!msg->question_ok) { in dns_message_reply()
2813 msg->from_to_wire = DNS_MESSAGE_INTENTRENDER; in dns_message_reply()
2814 msgresetnames(msg, clear_from); in dns_message_reply()
2815 msgresetopt(msg); in dns_message_reply()
2816 msgresetsigs(msg, true); in dns_message_reply()
2817 msginitprivate(msg); in dns_message_reply()
2822 if (msg->opcode == dns_opcode_query) { in dns_message_reply()
2823 msg->flags &= DNS_MESSAGE_REPLYPRESERVE; in dns_message_reply()
2825 msg->flags = 0; in dns_message_reply()
2827 msg->flags |= DNS_MESSAGEFLAG_QR; in dns_message_reply()
2833 if (msg->tsigkey != NULL) { in dns_message_reply()
2835 msg->querytsigstatus = msg->tsigstatus; in dns_message_reply()
2836 msg->tsigstatus = dns_rcode_noerror; in dns_message_reply()
2837 if (msg->querytsigstatus == dns_tsigerror_badtime) { in dns_message_reply()
2840 msg->sig_reserved = spacefortsig(msg->tsigkey, otherlen); in dns_message_reply()
2841 result = dns_message_renderreserve(msg, msg->sig_reserved); in dns_message_reply()
2843 msg->sig_reserved = 0; in dns_message_reply()
2847 if (msg->saved.base != NULL) { in dns_message_reply()
2848 msg->query.base = msg->saved.base; in dns_message_reply()
2849 msg->query.length = msg->saved.length; in dns_message_reply()
2850 msg->free_query = msg->free_saved; in dns_message_reply()
2851 msg->saved.base = NULL; in dns_message_reply()
2852 msg->saved.length = 0; in dns_message_reply()
2853 msg->free_saved = 0; in dns_message_reply()
2860 dns_message_getopt(dns_message_t *msg) { in dns_message_getopt() argument
2865 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_getopt()
2867 return (msg->opt); in dns_message_getopt()
2871 dns_message_setopt(dns_message_t *msg, dns_rdataset_t *opt) { in dns_message_setopt() argument
2893 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setopt()
2895 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_setopt()
2896 REQUIRE(msg->state == DNS_SECTION_ANY); in dns_message_setopt()
2898 msgresetopt(msg); in dns_message_setopt()
2905 msg->opt_reserved = 11 + rdata.length; in dns_message_setopt()
2906 result = dns_message_renderreserve(msg, msg->opt_reserved); in dns_message_setopt()
2908 msg->opt_reserved = 0; in dns_message_setopt()
2912 msg->opt = opt; in dns_message_setopt()
2918 dns_message_puttemprdataset(msg, &opt); in dns_message_setopt()
2923 dns_message_gettsig(dns_message_t *msg, const dns_name_t **owner) { in dns_message_gettsig() argument
2928 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettsig()
2932 *owner = msg->tsigname; in dns_message_gettsig()
2934 return (msg->tsig); in dns_message_gettsig()
2938 dns_message_settsigkey(dns_message_t *msg, dns_tsigkey_t *key) { in dns_message_settsigkey() argument
2945 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_settsigkey()
2947 if (key == NULL && msg->tsigkey != NULL) { in dns_message_settsigkey()
2948 if (msg->sig_reserved != 0) { in dns_message_settsigkey()
2949 dns_message_renderrelease(msg, msg->sig_reserved); in dns_message_settsigkey()
2950 msg->sig_reserved = 0; in dns_message_settsigkey()
2952 dns_tsigkey_detach(&msg->tsigkey); in dns_message_settsigkey()
2955 REQUIRE(msg->tsigkey == NULL && msg->sig0key == NULL); in dns_message_settsigkey()
2956 dns_tsigkey_attach(key, &msg->tsigkey); in dns_message_settsigkey()
2957 if (msg->from_to_wire == DNS_MESSAGE_INTENTRENDER) { in dns_message_settsigkey()
2958 msg->sig_reserved = spacefortsig(msg->tsigkey, 0); in dns_message_settsigkey()
2959 result = dns_message_renderreserve(msg, in dns_message_settsigkey()
2960 msg->sig_reserved); in dns_message_settsigkey()
2962 dns_tsigkey_detach(&msg->tsigkey); in dns_message_settsigkey()
2963 msg->sig_reserved = 0; in dns_message_settsigkey()
2972 dns_message_gettsigkey(dns_message_t *msg) { in dns_message_gettsigkey() argument
2977 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettsigkey()
2979 return (msg->tsigkey); in dns_message_gettsigkey()
2983 dns_message_setquerytsig(dns_message_t *msg, isc_buffer_t *querytsig) { in dns_message_setquerytsig() argument
2991 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setquerytsig()
2992 REQUIRE(msg->querytsig == NULL); in dns_message_setquerytsig()
2998 result = dns_message_gettemprdata(msg, &rdata); in dns_message_setquerytsig()
3003 result = dns_message_gettemprdatalist(msg, &list); in dns_message_setquerytsig()
3007 result = dns_message_gettemprdataset(msg, &set); in dns_message_setquerytsig()
3013 isc_buffer_allocate(msg->mctx, &buf, r.length); in dns_message_setquerytsig()
3018 dns_message_takebuffer(msg, &buf); in dns_message_setquerytsig()
3025 msg->querytsig = set; in dns_message_setquerytsig()
3031 dns_message_puttemprdata(msg, &rdata); in dns_message_setquerytsig()
3034 dns_message_puttemprdatalist(msg, &list); in dns_message_setquerytsig()
3037 dns_message_puttemprdataset(msg, &set); in dns_message_setquerytsig()
3043 dns_message_getquerytsig(dns_message_t *msg, isc_mem_t *mctx, in dns_message_getquerytsig() argument
3049 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_getquerytsig()
3053 if (msg->tsig == NULL) { in dns_message_getquerytsig()
3057 result = dns_rdataset_first(msg->tsig); in dns_message_getquerytsig()
3061 dns_rdataset_current(msg->tsig, &rdata); in dns_message_getquerytsig()
3070 dns_message_getsig0(dns_message_t *msg, const dns_name_t **owner) { in dns_message_getsig0() argument
3075 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_getsig0()
3078 if (msg->sig0 != NULL && owner != NULL) { in dns_message_getsig0()
3083 if (msg->sig0name == NULL) { in dns_message_getsig0()
3086 *owner = msg->sig0name; in dns_message_getsig0()
3089 return (msg->sig0); in dns_message_getsig0()
3093 dns_message_setsig0key(dns_message_t *msg, dst_key_t *key) { in dns_message_setsig0key() argument
3121 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setsig0key()
3122 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER); in dns_message_setsig0key()
3123 REQUIRE(msg->state == DNS_SECTION_ANY); in dns_message_setsig0key()
3126 REQUIRE(msg->sig0key == NULL && msg->tsigkey == NULL); in dns_message_setsig0key()
3130 msg->sig_reserved = 0; in dns_message_setsig0key()
3133 msg->sig_reserved = 27 + r.length + x; in dns_message_setsig0key()
3134 result = dns_message_renderreserve(msg, msg->sig_reserved); in dns_message_setsig0key()
3136 msg->sig_reserved = 0; in dns_message_setsig0key()
3139 msg->sig0key = key; in dns_message_setsig0key()
3145 dns_message_getsig0key(dns_message_t *msg) { in dns_message_getsig0key() argument
3150 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_getsig0key()
3152 return (msg->sig0key); in dns_message_getsig0key()
3156 dns_message_takebuffer(dns_message_t *msg, isc_buffer_t **buffer) { in dns_message_takebuffer() argument
3157 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_takebuffer()
3161 ISC_LIST_APPEND(msg->cleanup, *buffer, link); in dns_message_takebuffer()
3166 dns_message_signer(dns_message_t *msg, dns_name_t *signer) { in dns_message_signer() argument
3170 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_signer()
3172 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTPARSE); in dns_message_signer()
3174 if (msg->tsig == NULL && msg->sig0 == NULL) { in dns_message_signer()
3178 if (msg->verify_attempted == 0) { in dns_message_signer()
3184 isc_buffer_allocate(msg->mctx, &dynbuf, 512); in dns_message_signer()
3186 dns_message_takebuffer(msg, &dynbuf); in dns_message_signer()
3189 if (msg->sig0 != NULL) { in dns_message_signer()
3192 result = dns_rdataset_first(msg->sig0); in dns_message_signer()
3194 dns_rdataset_current(msg->sig0, &rdata); in dns_message_signer()
3201 if (msg->verified_sig && msg->sig0status == dns_rcode_noerror) { in dns_message_signer()
3212 result = dns_rdataset_first(msg->tsig); in dns_message_signer()
3214 dns_rdataset_current(msg->tsig, &rdata); in dns_message_signer()
3218 if (msg->verified_sig && msg->tsigstatus == dns_rcode_noerror && in dns_message_signer()
3222 } else if ((!msg->verified_sig) || in dns_message_signer()
3223 (msg->tsigstatus != dns_rcode_noerror)) in dns_message_signer()
3232 if (msg->tsigkey == NULL) { in dns_message_signer()
3241 identity = dns_tsigkey_identity(msg->tsigkey); in dns_message_signer()
3246 identity = &msg->tsigkey->name; in dns_message_signer()
3256 dns_message_resetsig(dns_message_t *msg) { in dns_message_resetsig() argument
3257 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_resetsig()
3258 msg->verified_sig = 0; in dns_message_resetsig()
3259 msg->verify_attempted = 0; in dns_message_resetsig()
3260 msg->tsigstatus = dns_rcode_noerror; in dns_message_resetsig()
3261 msg->sig0status = dns_rcode_noerror; in dns_message_resetsig()
3262 msg->timeadjust = 0; in dns_message_resetsig()
3263 if (msg->tsigkey != NULL) { in dns_message_resetsig()
3264 dns_tsigkey_detach(&msg->tsigkey); in dns_message_resetsig()
3265 msg->tsigkey = NULL; in dns_message_resetsig()
3270 dns_message_rechecksig(dns_message_t *msg, dns_view_t *view) { in dns_message_rechecksig() argument
3271 dns_message_resetsig(msg); in dns_message_rechecksig()
3272 return (dns_message_checksig(msg, view)); in dns_message_rechecksig()
3277 dns_message_dumpsig(dns_message_t *msg, char *txt1) { in dns_message_dumpsig() argument
3282 if (msg->tsig != NULL) { in dns_message_dumpsig()
3283 result = dns_rdataset_first(msg->tsig); in dns_message_dumpsig()
3285 dns_rdataset_current(msg->tsig, &querytsigrdata); in dns_message_dumpsig()
3291 if (msg->querytsig != NULL) { in dns_message_dumpsig()
3292 result = dns_rdataset_first(msg->querytsig); in dns_message_dumpsig()
3294 dns_rdataset_current(msg->querytsig, &querytsigrdata); in dns_message_dumpsig()
3304 dns_message_checksig(dns_message_t *msg, dns_view_t *view) { in dns_message_checksig() argument
3307 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_checksig()
3309 if (msg->tsigkey == NULL && msg->tsig == NULL && msg->sig0 == NULL) { in dns_message_checksig()
3313 INSIST(msg->saved.base != NULL); in dns_message_checksig()
3314 isc_buffer_init(&msgb, msg->saved.base, msg->saved.length); in dns_message_checksig()
3315 isc_buffer_add(&msgb, msg->saved.length); in dns_message_checksig()
3316 if (msg->tsigkey != NULL || msg->tsig != NULL) { in dns_message_checksig()
3318 dns_message_dumpsig(msg, "dns_message_checksig#1"); in dns_message_checksig()
3321 return (dns_view_checksig(view, &msgb, msg)); in dns_message_checksig()
3323 return (dns_tsig_verify(&msgb, msg, NULL, NULL)); in dns_message_checksig()
3331 result = dns_rdataset_first(msg->sig0); in dns_message_checksig()
3333 dns_rdataset_current(msg->sig0, &rdata); in dns_message_checksig()
3394 result = dns_dnssec_verifymessage(&msgb, msg, key); in dns_message_checksig()
3420 for (__i = 0; __i < msg->indent.count; __i++) { \
3421 ADD_STRING(target, msg->indent.string); \
3426 dns_message_sectiontotext(dns_message_t *msg, dns_section_t section, in dns_message_sectiontotext() argument
3436 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_sectiontotext()
3440 saved_count = msg->indent.count; in dns_message_sectiontotext()
3442 if (ISC_LIST_EMPTY(msg->sections[section])) { in dns_message_sectiontotext()
3450 if (msg->opcode != dns_opcode_update) { in dns_message_sectiontotext()
3458 if (msg->opcode != dns_opcode_update) { in dns_message_sectiontotext()
3467 result = dns_message_firstname(msg, section); in dns_message_sectiontotext()
3472 msg->indent.count++; in dns_message_sectiontotext()
3476 dns_message_currentname(msg, section, &name); in dns_message_sectiontotext()
3505 name, rdataset, style, &msg->indent, in dns_message_sectiontotext()
3512 result = dns_message_nextname(msg, section); in dns_message_sectiontotext()
3515 msg->indent.count--; in dns_message_sectiontotext()
3529 msg->indent.count = saved_count; in dns_message_sectiontotext()
3638 dns_message_pseudosectiontoyaml(dns_message_t *msg, dns_pseudosection_t section, in dns_message_pseudosectiontoyaml() argument
3654 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_pseudosectiontoyaml()
3658 saved_count = msg->indent.count; in dns_message_pseudosectiontoyaml()
3662 ps = dns_message_getopt(msg); in dns_message_pseudosectiontoyaml()
3669 msg->indent.count++; in dns_message_pseudosectiontoyaml()
3673 indent = ++msg->indent.count; in dns_message_pseudosectiontoyaml()
3720 msg->indent.count = indent; in dns_message_pseudosectiontoyaml()
3819 msg->indent.count++; in dns_message_pseudosectiontoyaml()
3906 if (msg->cc_ok && optlen >= 16) { in dns_message_pseudosectiontoyaml()
3913 if (msg->cc_ok && optlen < 16) { in dns_message_pseudosectiontoyaml()
3920 if (msg->cc_bad) { in dns_message_pseudosectiontoyaml()
3964 msg->indent.count = indent; in dns_message_pseudosectiontoyaml()
3968 ps = dns_message_gettsig(msg, &name); in dns_message_pseudosectiontoyaml()
3976 &msg->indent, target); in dns_message_pseudosectiontoyaml()
3980 ps = dns_message_getsig0(msg, &name); in dns_message_pseudosectiontoyaml()
3988 &msg->indent, target); in dns_message_pseudosectiontoyaml()
4000 msg->indent.count = saved_count; in dns_message_pseudosectiontoyaml()
4005 dns_message_pseudosectiontotext(dns_message_t *msg, dns_pseudosection_t section, in dns_message_pseudosectiontotext() argument
4019 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_pseudosectiontotext()
4024 return (dns_message_pseudosectiontoyaml(msg, section, style, in dns_message_pseudosectiontotext()
4030 ps = dns_message_getopt(msg); in dns_message_pseudosectiontotext()
4264 if (msg->cc_ok && optlen >= 16) { in dns_message_pseudosectiontotext()
4271 if (msg->cc_ok && optlen < 16) { in dns_message_pseudosectiontotext()
4278 if (msg->cc_bad) { in dns_message_pseudosectiontotext()
4323 ps = dns_message_gettsig(msg, &name); in dns_message_pseudosectiontotext()
4332 &msg->indent, target); in dns_message_pseudosectiontotext()
4340 ps = dns_message_getsig0(msg, &name); in dns_message_pseudosectiontotext()
4349 &msg->indent, target); in dns_message_pseudosectiontotext()
4363 dns_message_headertotext(dns_message_t *msg, const dns_master_style_t *style, in dns_message_headertotext() argument
4368 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_headertotext()
4378 ADD_STRING(target, opcodetext[msg->opcode]); in dns_message_headertotext()
4382 result = dns_rcode_totext(msg->rcode, target); in dns_message_headertotext()
4389 snprintf(buf, sizeof(buf), "%u", msg->id); in dns_message_headertotext()
4394 if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) { in dns_message_headertotext()
4397 if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) { in dns_message_headertotext()
4400 if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) { in dns_message_headertotext()
4403 if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) { in dns_message_headertotext()
4406 if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) { in dns_message_headertotext()
4409 if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) { in dns_message_headertotext()
4412 if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) { in dns_message_headertotext()
4419 if ((msg->flags & 0x0040U) != 0) { in dns_message_headertotext()
4424 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4432 msg->counts[DNS_SECTION_QUESTION]); in dns_message_headertotext()
4435 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4443 msg->counts[DNS_SECTION_ANSWER]); in dns_message_headertotext()
4446 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4454 msg->counts[DNS_SECTION_AUTHORITY]); in dns_message_headertotext()
4460 msg->counts[DNS_SECTION_ADDITIONAL]); in dns_message_headertotext()
4466 ADD_STRING(target, opcodetext[msg->opcode]); in dns_message_headertotext()
4468 result = dns_rcode_totext(msg->rcode, target); in dns_message_headertotext()
4473 snprintf(buf, sizeof(buf), "%6u", msg->id); in dns_message_headertotext()
4478 if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) { in dns_message_headertotext()
4481 if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) { in dns_message_headertotext()
4484 if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) { in dns_message_headertotext()
4487 if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) { in dns_message_headertotext()
4490 if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) { in dns_message_headertotext()
4493 if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) { in dns_message_headertotext()
4496 if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) { in dns_message_headertotext()
4502 if ((msg->flags & 0x0040U) != 0) { in dns_message_headertotext()
4506 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4514 msg->counts[DNS_SECTION_QUESTION]); in dns_message_headertotext()
4516 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4522 msg->counts[DNS_SECTION_ANSWER]); in dns_message_headertotext()
4524 if (msg->opcode != dns_opcode_update) { in dns_message_headertotext()
4530 msg->counts[DNS_SECTION_AUTHORITY]); in dns_message_headertotext()
4534 msg->counts[DNS_SECTION_ADDITIONAL]); in dns_message_headertotext()
4544 dns_message_totext(dns_message_t *msg, const dns_master_style_t *style, in dns_message_totext() argument
4548 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_totext()
4551 result = dns_message_headertotext(msg, style, flags, target); in dns_message_totext()
4556 result = dns_message_pseudosectiontotext(msg, DNS_PSEUDOSECTION_OPT, in dns_message_totext()
4562 result = dns_message_sectiontotext(msg, DNS_SECTION_QUESTION, style, in dns_message_totext()
4568 result = dns_message_sectiontotext(msg, DNS_SECTION_ANSWER, style, in dns_message_totext()
4574 result = dns_message_sectiontotext(msg, DNS_SECTION_AUTHORITY, style, in dns_message_totext()
4580 result = dns_message_sectiontotext(msg, DNS_SECTION_ADDITIONAL, style, in dns_message_totext()
4586 result = dns_message_pseudosectiontotext(msg, DNS_PSEUDOSECTION_TSIG, in dns_message_totext()
4592 result = dns_message_pseudosectiontotext(msg, DNS_PSEUDOSECTION_SIG0, in dns_message_totext()
4598 dns_message_getrawmessage(dns_message_t *msg) { in dns_message_getrawmessage() argument
4599 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_getrawmessage()
4600 return (&msg->saved); in dns_message_getrawmessage()
4604 dns_message_setsortorder(dns_message_t *msg, dns_rdatasetorderfunc_t order, in dns_message_setsortorder() argument
4607 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setsortorder()
4611 msg->order = order; in dns_message_setsortorder()
4612 msg->order_arg.env = env; in dns_message_setsortorder()
4613 msg->order_arg.acl = acl; in dns_message_setsortorder()
4614 msg->order_arg.element = elem; in dns_message_setsortorder()
4618 dns_message_settimeadjust(dns_message_t *msg, int timeadjust) { in dns_message_settimeadjust() argument
4619 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_settimeadjust()
4620 msg->timeadjust = timeadjust; in dns_message_settimeadjust()
4624 dns_message_gettimeadjust(dns_message_t *msg) { in dns_message_gettimeadjust() argument
4625 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_gettimeadjust()
4626 return (msg->timeadjust); in dns_message_gettimeadjust()
4823 dns_message_setclass(dns_message_t *msg, dns_rdataclass_t rdclass) { in dns_message_setclass() argument
4824 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setclass()
4825 REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTPARSE); in dns_message_setclass()
4826 REQUIRE(msg->state == DNS_SECTION_ANY); in dns_message_setclass()
4827 REQUIRE(msg->rdclass_set == 0); in dns_message_setclass()
4829 msg->rdclass = rdclass; in dns_message_setclass()
4830 msg->rdclass_set = 1; in dns_message_setclass()
4834 dns_message_setpadding(dns_message_t *msg, uint16_t padding) { in dns_message_setpadding() argument
4835 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_setpadding()
4841 msg->padding = padding; in dns_message_setpadding()
4845 dns_message_clonebuffer(dns_message_t *msg) { in dns_message_clonebuffer() argument
4846 REQUIRE(DNS_MESSAGE_VALID(msg)); in dns_message_clonebuffer()
4848 if (msg->free_saved == 0 && msg->saved.base != NULL) { in dns_message_clonebuffer()
4849 msg->saved.base = in dns_message_clonebuffer()
4850 memmove(isc_mem_get(msg->mctx, msg->saved.length), in dns_message_clonebuffer()
4851 msg->saved.base, msg->saved.length); in dns_message_clonebuffer()
4852 msg->free_saved = 1; in dns_message_clonebuffer()
4854 if (msg->free_query == 0 && msg->query.base != NULL) { in dns_message_clonebuffer()
4855 msg->query.base = in dns_message_clonebuffer()
4856 memmove(isc_mem_get(msg->mctx, msg->query.length), in dns_message_clonebuffer()
4857 msg->query.base, msg->query.length); in dns_message_clonebuffer()
4858 msg->free_query = 1; in dns_message_clonebuffer()