+ 795. [func] Add the +multiline option to dig. [RT #1095]
+
794. [func] Implement the "port" and "default-port" statements
in rndc.conf.
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: dig.c,v 1.142 2001/03/14 18:08:16 bwelling Exp $ */
+/* $Id: dig.c,v 1.143 2001/03/28 02:42:49 bwelling Exp $ */
#include <config.h>
#include <stdlib.h>
#include <dns/byaddr.h>
#include <dns/fixedname.h>
+#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
char domainopt[DNS_NAME_MAXTEXT];
isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
- nibble = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE;
+ nibble = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE,
+ multiline = ISC_FALSE;
isc_uint16_t bufsize = 0;
isc_boolean_t forcecomment = ISC_FALSE;
" +rrlimit=### (Limit number of rr's in xfr)\n"
" +namelimit=### (Limit number of names in xfr)\n"
" +[no]dnssec (Request DNSSEC records)\n"
+" +[no]multiline (Print records in an expanded format)\n"
" global d-opts and servers (before host name) affect all queries.\n"
" local d-opts and servers (after host name) affect only that lookup.\n"
, stderr);
dns_messagetextflag_t flags;
isc_buffer_t *buf = NULL;
unsigned int len = OUTPUTBUF;
+ const dns_master_style_t *style;
+
+ if (multiline)
+ style = &dns_master_style_default;
+ else
+ style = &dns_master_style_debug;
if (query->lookup->cmdline[0] != 0) {
fputs(query->lookup->cmdline, stdout);
{
result = dns_message_pseudosectiontotext(msg,
DNS_PSEUDOSECTION_OPT,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE) {
buftoosmall:
len += OUTPUTBUF;
if (!short_form) {
result = dns_message_sectiontotext(msg,
DNS_SECTION_QUESTION,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result, "dns_message_sectiontotext");
if (!short_form) {
result = dns_message_sectiontotext(msg,
DNS_SECTION_ANSWER,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result, "dns_message_sectiontotext");
if (!short_form) {
result = dns_message_sectiontotext(msg,
DNS_SECTION_AUTHORITY,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result, "dns_message_sectiontotext");
if (!short_form) {
result = dns_message_sectiontotext(msg,
DNS_SECTION_ADDITIONAL,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result, "dns_message_sectiontotext");
result = dns_message_pseudosectiontotext(
msg,
DNS_PSEUDOSECTION_TSIG,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result,
result = dns_message_pseudosectiontotext(
msg,
DNS_PSEUDOSECTION_SIG0,
- flags, buf);
+ style, flags, buf);
if (result == ISC_R_NOSPACE)
goto buftoosmall;
check_result(result,
lookup->ignore = ISC_TRUE;
}
break;
+ case 'm': /* multiline */
+ multiline = state;
+ break;
case 'n':
switch (cmd[1]) {
case 'd': /* ndots */
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: nsupdate.c,v 1.84 2001/03/22 00:06:59 bwelling Exp $ */
+/* $Id: nsupdate.c,v 1.85 2001/03/28 02:42:51 bwelling Exp $ */
#include <config.h>
#include <dns/dispatch.h>
#include <dns/events.h>
#include <dns/fixedname.h>
+#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
static FILE *input;
static isc_boolean_t interactive = ISC_TRUE;
static isc_boolean_t seenerror = ISC_FALSE;
+static const dns_master_style_t *style = &dns_master_style_debug;
typedef struct nsu_requestinfo {
dns_message_t *msg;
isc_buffer_free(&buf);
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
- result = dns_message_totext(msg, 0, buf);
+ result = dns_message_totext(msg, style, 0, buf);
bufsz *= 2;
} while (result == ISC_R_NOSPACE);
if (result != ISC_R_SUCCESS) {
isc_buffer_free(&buf);
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
- result = dns_message_totext(rcvmsg, 0, buf);
+ result = dns_message_totext(rcvmsg, style, 0, buf);
bufsz *= 2;
} while (result == ISC_R_NOSPACE);
check_result(result, "dns_message_totext");
}
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
- result = dns_message_totext(rcvmsg, 0, buf);
+ result = dns_message_totext(rcvmsg, style, 0, buf);
} while (result == ISC_R_NOSPACE);
check_result(result, "dns_message_totext");
fprintf(stderr, "Reply from SOA query:\n%.*s\n",
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: sig0_test.c,v 1.7 2001/03/13 02:48:53 bwelling Exp $ */
+/* $Id: sig0_test.c,v 1.8 2001/03/28 02:42:53 bwelling Exp $ */
#include <config.h>
#include <dns/events.h>
#include <dns/fixedname.h>
#include <dns/keyvalues.h>
+#include <dns/masterdump.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdataset.h>
isc_sockaddr_t address;
char output[10 * 1024];
isc_buffer_t outbuf;
+static const dns_master_style_t *style = &dns_master_style_debug;
static void
senddone(isc_task_t *task, isc_event_t *event) {
CHECK("dns_message_parse", result);
isc_buffer_init(&outbuf, output, sizeof(output));
- result = dns_message_totext(response, 0, &outbuf);
+ result = dns_message_totext(response, style, 0, &outbuf);
CHECK("dns_message_totext", result);
printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
(char *)isc_buffer_base(&outbuf));
dns_compress_invalidate(&cctx);
isc_buffer_init(&outbuf, output, sizeof(output));
- result = dns_message_totext(query, 0, &outbuf);
+ result = dns_message_totext(query, style, 0, &outbuf);
CHECK("dns_message_totext", result);
printf("%.*s\n", (int)isc_buffer_usedlength(&outbuf),
(char *)isc_buffer_base(&outbuf));
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: message.h,v 1.96 2001/03/28 00:50:00 gson Exp $ */
+/* $Id: message.h,v 1.97 2001/03/28 02:42:56 bwelling Exp $ */
#ifndef DNS_MESSAGE_H
#define DNS_MESSAGE_H 1
#include <isc/magic.h>
#include <dns/compress.h>
+#include <dns/masterdump.h>
#include <dns/types.h>
#include <dst/dst.h>
isc_result_t
dns_message_sectiontotext(dns_message_t *msg, dns_section_t section,
+ const dns_master_style_t *style,
dns_messagetextflag_t flags,
isc_buffer_t *target);
isc_result_t
dns_message_pseudosectiontotext(dns_message_t *msg,
dns_pseudosection_t section,
+ const dns_master_style_t *style,
dns_messagetextflag_t flags,
isc_buffer_t *target);
/*
*
* 'msg' is a valid message.
*
+ * 'style' is a valid master dump style.
+ *
* 'target' is a valid buffer.
*
* 'section' is a valid section label.
*/
isc_result_t
-dns_message_totext(dns_message_t *msg, dns_messagetextflag_t flags,
- isc_buffer_t *target);
+dns_message_totext(dns_message_t *msg, const dns_master_style_t *style,
+ dns_messagetextflag_t flags, isc_buffer_t *target);
/*
* Convert all sections of message 'msg' to a cleartext representation
*
*
* 'msg' is a valid message.
*
+ * 'style' is a valid master dump style.
+ *
* 'target' is a valid buffer.
*
* Ensures:
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: message.c,v 1.188 2001/03/28 00:58:13 gson Exp $ */
+/* $Id: message.c,v 1.189 2001/03/28 02:42:54 bwelling Exp $ */
/***
*** Imports
isc_result_t
dns_message_sectiontotext(dns_message_t *msg, dns_section_t section,
+ const dns_master_style_t *style,
dns_messagetextflag_t flags,
isc_buffer_t *target) {
dns_name_t *name, empty_name;
ADD_STRING(target, ";");
result = dns_master_questiontotext(name,
rdataset,
- &dns_master_style_debug,
+ style,
target);
} else {
result = dns_master_rdatasettotext(name,
rdataset,
- &dns_master_style_debug,
+ style,
target);
}
if (result != ISC_R_SUCCESS)
isc_result_t
dns_message_pseudosectiontotext(dns_message_t *msg,
dns_pseudosection_t section,
+ const dns_master_style_t *style,
dns_messagetextflag_t flags,
isc_buffer_t *target) {
dns_rdataset_t *ps = NULL;
return (ISC_R_SUCCESS);
if ((flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, ";; TSIG PSEUDOSECTION:\n");
- result = dns_master_rdatasettotext(name, ps,
- &dns_master_style_debug,
- target);
+ result = dns_master_rdatasettotext(name, ps, style, target);
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0 &&
(flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, "\n");
return (ISC_R_SUCCESS);
if ((flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, ";; SIG0 PSEUDOSECTION:\n");
- result = dns_master_rdatasettotext(name, ps,
- &dns_master_style_debug,
- target);
+ result = dns_master_rdatasettotext(name, ps, style, target);
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0 &&
(flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, "\n");
}
isc_result_t
-dns_message_totext(dns_message_t *msg, dns_messagetextflag_t flags,
- isc_buffer_t *target) {
+dns_message_totext(dns_message_t *msg, const dns_master_style_t *style,
+ dns_messagetextflag_t flags, isc_buffer_t *target) {
char buf[sizeof "1234567890"];
isc_result_t result;
}
result = dns_message_pseudosectiontotext(msg,
DNS_PSEUDOSECTION_OPT,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_sectiontotext(msg, DNS_SECTION_QUESTION,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_sectiontotext(msg, DNS_SECTION_ANSWER,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_sectiontotext(msg, DNS_SECTION_AUTHORITY,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_sectiontotext(msg, DNS_SECTION_ADDITIONAL,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_pseudosectiontotext(msg,
DNS_PSEUDOSECTION_TSIG,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);
result = dns_message_pseudosectiontotext(msg,
DNS_PSEUDOSECTION_SIG0,
- flags, target);
+ style, flags, target);
if (result != ISC_R_SUCCESS)
return (result);