diff --git a/bin/tests/Makefile.in b/bin/tests/Makefile.in index 1ca426ec78..8b402f2349 100644 --- a/bin/tests/Makefile.in +++ b/bin/tests/Makefile.in @@ -119,7 +119,6 @@ XSRCS = adb_test.c \ mempool_test.c \ name_test.c \ nsecify.c \ - printmsg.c \ ratelimiter_test.c \ rbt_test.c \ rdata_test.c \ @@ -248,8 +247,8 @@ rwlock_test@EXEEXT@: rwlock_test.@O@ ${ISCDEPLIBS} ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ rwlock_test.@O@ \ ${ISCLIBS} ${LIBS} -wire_test@EXEEXT@: wire_test.@O@ printmsg.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} - ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ wire_test.@O@ printmsg.@O@ \ +wire_test@EXEEXT@: wire_test.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} + ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ wire_test.@O@ \ ${DNSLIBS} ${ISCLIBS} ${LIBS} master_test@EXEEXT@: master_test.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} diff --git a/bin/tests/printmsg.c b/bin/tests/printmsg.c deleted file mode 100644 index f872af9cdd..0000000000 --- a/bin/tests/printmsg.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright (C) 2004, 2007, 2011, 2015 Internet Systems Consortium, Inc. ("ISC") - * Copyright (C) 1998-2001 Internet Software Consortium. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include "printmsg.h" - -static isc_result_t -printsection(dns_message_t *msg, dns_section_t sectionid, - const char *section_name) -{ - dns_name_t *name, *print_name; - dns_rdataset_t *rdataset; - isc_buffer_t target; - isc_result_t result; - isc_region_t r; - dns_name_t empty_name; - char t[65536]; -#ifdef USEINITALWS - isc_boolean_t first; -#endif - isc_boolean_t no_rdata; - - if (sectionid == DNS_SECTION_QUESTION) - no_rdata = ISC_TRUE; - else - no_rdata = ISC_FALSE; - - printf(";; %s SECTION:\n", section_name); - - dns_name_init(&empty_name, NULL); - - result = dns_message_firstname(msg, sectionid); - if (result == ISC_R_NOMORE) - return (ISC_R_SUCCESS); - else if (result != ISC_R_SUCCESS) - return (result); - - for (;;) { - name = NULL; - dns_message_currentname(msg, sectionid, &name); - - isc_buffer_init(&target, t, sizeof(t)); -#ifdef USEINITALWS - first = ISC_TRUE; -#endif - print_name = name; - - for (rdataset = ISC_LIST_HEAD(name->list); - rdataset != NULL; - rdataset = ISC_LIST_NEXT(rdataset, link)) { - result = dns_rdataset_totext(rdataset, - print_name, - ISC_FALSE, - no_rdata, - &target); - if (result != ISC_R_SUCCESS) - return (result); -#ifdef USEINITALWS - if (first) { - print_name = &empty_name; - first = ISC_FALSE; - } -#endif - } - isc_buffer_usedregion(&target, &r); - printf("%.*s", (int)r.length, (char *)r.base); - - result = dns_message_nextname(msg, sectionid); - if (result == ISC_R_NOMORE) - break; - else if (result != ISC_R_SUCCESS) - return (result); - } - - return (ISC_R_SUCCESS); -} - -static isc_result_t -printrdata(dns_message_t *msg, dns_rdataset_t *rdataset, dns_name_t *owner, - const char *set_name) -{ - isc_buffer_t target; - isc_result_t result; - isc_region_t r; - char t[65536]; - - UNUSED(msg); - printf(";; %s SECTION:\n", set_name); - - isc_buffer_init(&target, t, sizeof(t)); - - result = dns_rdataset_totext(rdataset, owner, ISC_FALSE, ISC_FALSE, - &target); - if (result != ISC_R_SUCCESS) - return (result); - isc_buffer_usedregion(&target, &r); - printf("%.*s", (int)r.length, (char *)r.base); - - return (ISC_R_SUCCESS); -} - -isc_result_t -printmessage(dns_message_t *msg) { - isc_result_t result; - dns_rdataset_t *opt, *tsig; - dns_name_t *tsigname; - char opcode[64], rcode[64]; - isc_buffer_t b; - - result = ISC_R_SUCCESS; - - isc_buffer_init(&b, opcode, sizeof(opcode)); - dns_opcode_totext(msg->opcode, &b); - isc_buffer_putuint8(&b, 0); - - isc_buffer_init(&b, rcode, sizeof(rcode)); - dns_rcode_totext(msg->rcode, &b); - isc_buffer_putuint8(&b, 0); - - printf(";; ->>HEADER<<- opcode: %s, status: %s, id: %u\n", - opcode, rcode, msg->id); - - printf(";; flags:"); - if ((msg->flags & DNS_MESSAGEFLAG_QR) != 0) - printf(" qr"); - if ((msg->flags & DNS_MESSAGEFLAG_AA) != 0) - printf(" aa"); - if ((msg->flags & DNS_MESSAGEFLAG_TC) != 0) - printf(" tc"); - if ((msg->flags & DNS_MESSAGEFLAG_RD) != 0) - printf(" rd"); - if ((msg->flags & DNS_MESSAGEFLAG_RA) != 0) - printf(" ra"); - if ((msg->flags & DNS_MESSAGEFLAG_AD) != 0) - printf(" ad"); - if ((msg->flags & DNS_MESSAGEFLAG_CD) != 0) - printf(" cd"); - printf("; QUERY: %u, ANSWER: %u, AUTHORITY: %u, ADDITIONAL: %u\n", - msg->counts[DNS_SECTION_QUESTION], - msg->counts[DNS_SECTION_ANSWER], - msg->counts[DNS_SECTION_AUTHORITY], - msg->counts[DNS_SECTION_ADDITIONAL]); - opt = dns_message_getopt(msg); - if (opt != NULL) - printf(";; EDNS: version: %u, udp=%u\n", - (unsigned int)((opt->ttl & 0x00ff0000) >> 16), - (unsigned int)opt->rdclass); - - tsigname = NULL; - tsig = dns_message_gettsig(msg, &tsigname); - if (tsig != NULL) - printf(";; PSEUDOSECTIONS: TSIG\n"); - if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_QUESTION])) { - printf("\n"); - result = printsection(msg, DNS_SECTION_QUESTION, "QUESTION"); - if (result != ISC_R_SUCCESS) - return (result); - } - if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_ANSWER])) { - printf("\n"); - result = printsection(msg, DNS_SECTION_ANSWER, "ANSWER"); - if (result != ISC_R_SUCCESS) - return (result); - } - if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_AUTHORITY])) { - printf("\n"); - result = printsection(msg, DNS_SECTION_AUTHORITY, "AUTHORITY"); - if (result != ISC_R_SUCCESS) - return (result); - } - if (! ISC_LIST_EMPTY(msg->sections[DNS_SECTION_ADDITIONAL])) { - printf("\n"); - result = printsection(msg, DNS_SECTION_ADDITIONAL, - "ADDITIONAL"); - if (result != ISC_R_SUCCESS) - return (result); - } - if (tsig != NULL) { - printf("\n"); - result = printrdata(msg, tsig, tsigname, - "PSEUDOSECTION TSIG"); - if (result != ISC_R_SUCCESS) - return (result); - } - printf("\n"); - - return (result); -} diff --git a/bin/tests/printmsg.h b/bin/tests/printmsg.h deleted file mode 100644 index c91856157d..0000000000 --- a/bin/tests/printmsg.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC") - * Copyright (C) 1998-2001 Internet Software Consortium. - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* $Id: printmsg.h,v 1.12 2007/06/19 23:46:59 tbox Exp $ */ - -#ifndef TEST_PRINTMSG_H -#define TEST_PRINTMSG_H - -#include - -isc_result_t printmessage(dns_message_t *message); - -#endif /* TEST_PRINTMSG_H */ diff --git a/bin/tests/wire_test.c b/bin/tests/wire_test.c index a5c9006d81..e40bf79c4d 100644 --- a/bin/tests/wire_test.c +++ b/bin/tests/wire_test.c @@ -15,8 +15,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: wire_test.c,v 1.67 2007/06/19 23:46:59 tbox Exp $ */ - #include #include @@ -28,10 +26,9 @@ #include #include +#include #include -#include "printmsg.h" - int parseflags = 0; isc_mem_t *mctx; isc_boolean_t printmemstats = ISC_FALSE; @@ -40,6 +37,9 @@ isc_boolean_t dorender = ISC_FALSE; static void process_message(isc_buffer_t *source); +static isc_result_t +printmessage(dns_message_t *msg); + static inline void CHECKRESULT(isc_result_t result, const char *msg) { if (result != ISC_R_SUCCESS) { @@ -74,6 +74,36 @@ usage(void) { fprintf(stderr, "\t-t\tTCP mode - ignore the first 2 bytes\n"); } +static isc_result_t +printmessage(dns_message_t *msg) { + isc_buffer_t b; + char *buf = NULL; + int len = 1024; + isc_result_t result = ISC_R_SUCCESS; + + do { + buf = isc_mem_get(mctx, len); + if (buf == NULL) { + result = ISC_R_NOMEMORY; + break; + } + + isc_buffer_init(&b, buf, len); + result = dns_message_totext(msg, &dns_master_style_debug, + 0, &b); + if (result == ISC_R_NOSPACE) { + isc_mem_put(mctx, buf, len); + len *= 2; + } else if (result == ISC_R_SUCCESS) + printf("%.*s\n", (int) isc_buffer_usedlength(&b), buf); + } while (result == ISC_R_NOSPACE); + + if (buf != NULL) + isc_mem_put(mctx, buf, len); + + return (result); +} + int main(int argc, char *argv[]) { char *rp, *wp;