mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Allow nsupdate to report which types it knows the internal structure to.
This commit is contained in:
parent
a26e1cacef
commit
f5b7359c57
@ -934,11 +934,14 @@ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) {
|
|||||||
INSIST(count == 1);
|
INSIST(count == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PARSE_ARGS_FMT "dDML:y:ghlovk:p:rR::t:u:"
|
#define PARSE_ARGS_FMT "dDML:y:ghlovk:p:PrR::t:Tu:"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pre_parse_args(int argc, char **argv) {
|
pre_parse_args(int argc, char **argv) {
|
||||||
|
dns_rdatatype_t t;
|
||||||
int ch;
|
int ch;
|
||||||
|
char buf[100];
|
||||||
|
isc_boolean_t doexit = ISC_FALSE;
|
||||||
|
|
||||||
while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) {
|
while ((ch = isc_commandline_parse(argc, argv, PARSE_ARGS_FMT)) != -1) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@ -960,10 +963,34 @@ pre_parse_args(int argc, char **argv) {
|
|||||||
"[-v] [filename]\n");
|
"[-v] [filename]\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
||||||
|
case 'P':
|
||||||
|
for (t = 0xff00; t <= 0xfffe; t++) {
|
||||||
|
if (dns_rdatatype_ismeta(t))
|
||||||
|
continue;
|
||||||
|
dns_rdatatype_format(t, buf, sizeof(buf));
|
||||||
|
if (strncmp(buf, "TYPE", 4) != 0)
|
||||||
|
fprintf(stdout, "%s\n", buf);
|
||||||
|
}
|
||||||
|
doexit = ISC_TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'T':
|
||||||
|
for (t = 1; t <= 0xfeff; t++) {
|
||||||
|
if (dns_rdatatype_ismeta(t))
|
||||||
|
continue;
|
||||||
|
dns_rdatatype_format(t, buf, sizeof(buf));
|
||||||
|
if (strncmp(buf, "TYPE", 4) != 0)
|
||||||
|
fprintf(stdout, "%s\n", buf);
|
||||||
|
}
|
||||||
|
doexit = ISC_TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (doexit)
|
||||||
|
exit(0);
|
||||||
isc_commandline_reset = ISC_TRUE;
|
isc_commandline_reset = ISC_TRUE;
|
||||||
isc_commandline_index = 1;
|
isc_commandline_index = 1;
|
||||||
}
|
}
|
||||||
|
@ -71,6 +71,8 @@
|
|||||||
<arg><option>-r <replaceable class="parameter">udpretries</replaceable></option></arg>
|
<arg><option>-r <replaceable class="parameter">udpretries</replaceable></option></arg>
|
||||||
<arg><option>-R <replaceable class="parameter">randomdev</replaceable></option></arg>
|
<arg><option>-R <replaceable class="parameter">randomdev</replaceable></option></arg>
|
||||||
<arg><option>-v</option></arg>
|
<arg><option>-v</option></arg>
|
||||||
|
<arg><option>-T</option></arg>
|
||||||
|
<arg><option>-P</option></arg>
|
||||||
<arg>filename</arg>
|
<arg>filename</arg>
|
||||||
</cmdsynopsis>
|
</cmdsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
@ -237,6 +239,21 @@
|
|||||||
<filename>keyboard</filename> indicates that keyboard input
|
<filename>keyboard</filename> indicates that keyboard input
|
||||||
should be used. This option may be specified multiple times.
|
should be used. This option may be specified multiple times.
|
||||||
</para>
|
</para>
|
||||||
|
<para>
|
||||||
|
The <option>-T</option> and <option>-P</option> print out a
|
||||||
|
lists of non-meta types for which the type specific presentation
|
||||||
|
format is known. <option>-T</option> prints out the list of
|
||||||
|
assigned types. <option>-P</option> prints out the list of
|
||||||
|
private types. These options may be combined. nsupdate will
|
||||||
|
exit after the lists are printed.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Other types can be entered using "TYPEXXXXX" where "XXXXX" is the
|
||||||
|
decimal value of the type with no leading zeros. The rdata,
|
||||||
|
if present, will be parsed using the UNKNOWN rdata format,
|
||||||
|
(<backslash> <hash> <space> <length>
|
||||||
|
<space> <hexstring>).
|
||||||
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
|
@ -36,3 +36,4 @@ rm -f ns3/K*
|
|||||||
rm -f dig.out.*
|
rm -f dig.out.*
|
||||||
rm -f jp.out.ns3.*
|
rm -f jp.out.ns3.*
|
||||||
rm -f Kxxx.*
|
rm -f Kxxx.*
|
||||||
|
rm -f typelist.out.*
|
||||||
|
@ -461,5 +461,25 @@ if [ $ret -ne 0 ]; then
|
|||||||
status=1
|
status=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
n=`expr $n + 1`
|
||||||
|
ret=0
|
||||||
|
echo "I:check type list options ($n)"
|
||||||
|
$NSUPDATE -T > typelist.out.T.${n} || { ret=1; echo "I: nsupdate -T failed"; }
|
||||||
|
$NSUPDATE -P > typelist.out.P.${n} || { ret=1; echo "I: nsupdate -P failed"; }
|
||||||
|
$NSUPDATE -TP > typelist.out.TP.${n} || { ret=1; echo "I: nsupdate -TP failed"; }
|
||||||
|
grep ANY typelist.out.T.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-T)"; }
|
||||||
|
grep ANY typelist.out.P.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-P)"; }
|
||||||
|
grep ANY typelist.out.TP.${n} > /dev/null && { ret=1; echo "I: failed: ANY found (-TP)"; }
|
||||||
|
grep KEYDATA typelist.out.T.${n} > /dev/null && { ret=1; echo "I: failed: KEYDATA found (-T)"; }
|
||||||
|
grep KEYDATA typelist.out.P.${n} > /dev/null || { ret=1; echo "I: failed: KEYDATA not found (-P)"; }
|
||||||
|
grep KEYDATA typelist.out.TP.${n} > /dev/null || { ret=1; echo "I: failed: KEYDATA not found (-TP)"; }
|
||||||
|
grep AAAA typelist.out.T.${n} > /dev/null || { ret=1; echo "I: failed: AAAA not found (-T)"; }
|
||||||
|
grep AAAA typelist.out.P.${n} > /dev/null && { ret=1; echo "I: failed: AAAA found (-P)"; }
|
||||||
|
grep AAAA typelist.out.TP.${n} > /dev/null || { ret=1; echo "I: failed: AAAA not found (-TP)"; }
|
||||||
|
if [ $ret -ne 0 ]; then
|
||||||
|
echo "I:failed"
|
||||||
|
status=1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "I:exit status: $status"
|
echo "I:exit status: $status"
|
||||||
exit $status
|
exit $status
|
||||||
|
Loading…
x
Reference in New Issue
Block a user