mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
dig: add the ability to set RA and TC in queries
This commit is contained in:
parent
529d862573
commit
58c103e09c
3
CHANGES
3
CHANGES
@ -1,3 +1,6 @@
|
|||||||
|
4929. [func] Add the ability to set RA and TC in queries made by
|
||||||
|
dig (+[no]raflag, +[no]tcflag). [GL #213]
|
||||||
|
|
||||||
4928. [func] The "dnskey-sig-validity" option allows
|
4928. [func] The "dnskey-sig-validity" option allows
|
||||||
"sig-validity-interval" to be overriden for signatures
|
"sig-validity-interval" to be overriden for signatures
|
||||||
covering DNSKEY RRsets. [GL #145]
|
covering DNSKEY RRsets. [GL #145]
|
||||||
|
@ -205,6 +205,7 @@ help(void) {
|
|||||||
" +padding=### (Set padding block size [0])\n"
|
" +padding=### (Set padding block size [0])\n"
|
||||||
" +[no]qr (Print question before sending)\n"
|
" +[no]qr (Print question before sending)\n"
|
||||||
" +[no]question (Control display of question section)\n"
|
" +[no]question (Control display of question section)\n"
|
||||||
|
" +[no]raflag (Set RA flag in query (+[no]raflag))\n"
|
||||||
" +[no]rdflag (Recursive mode (+[no]recurse))\n"
|
" +[no]rdflag (Recursive mode (+[no]recurse))\n"
|
||||||
" +[no]recurse (Recursive mode (+[no]rdflag))\n"
|
" +[no]recurse (Recursive mode (+[no]rdflag))\n"
|
||||||
" +retry=### (Set number of UDP retries) [2]\n"
|
" +retry=### (Set number of UDP retries) [2]\n"
|
||||||
@ -217,6 +218,7 @@ help(void) {
|
|||||||
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
" +[no]split=## (Split hex/base64 fields into chunks)\n"
|
||||||
" +[no]stats (Control display of statistics)\n"
|
" +[no]stats (Control display of statistics)\n"
|
||||||
" +subnet=addr (Set edns-client-subnet option)\n"
|
" +subnet=addr (Set edns-client-subnet option)\n"
|
||||||
|
" +[no]tcflag (Set TC flag in query (+[no]tcflag))\n"
|
||||||
" +[no]tcp (TCP mode (+[no]vc))\n"
|
" +[no]tcp (TCP mode (+[no]vc))\n"
|
||||||
" +timeout=### (Set query timeout) [5]\n"
|
" +timeout=### (Set query timeout) [5]\n"
|
||||||
" +[no]trace (Trace delegation down from root [+dnssec])\n"
|
" +[no]trace (Trace delegation down from root [+dnssec])\n"
|
||||||
@ -1240,6 +1242,10 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
switch (cmd[1]) {
|
switch (cmd[1]) {
|
||||||
|
case 'a': /* raflag */
|
||||||
|
FULLCHECK("raflag");
|
||||||
|
lookup->raflag = state;
|
||||||
|
break;
|
||||||
case 'd': /* rdflag */
|
case 'd': /* rdflag */
|
||||||
FULLCHECK("rdflag");
|
FULLCHECK("rdflag");
|
||||||
lookup->recurse = state;
|
lookup->recurse = state;
|
||||||
@ -1383,12 +1389,22 @@ plus_option(char *option, isc_boolean_t is_batchfile,
|
|||||||
case 't':
|
case 't':
|
||||||
switch (cmd[1]) {
|
switch (cmd[1]) {
|
||||||
case 'c': /* tcp */
|
case 'c': /* tcp */
|
||||||
|
switch (cmd[2]) {
|
||||||
|
case 'f':
|
||||||
|
FULLCHECK("tcflag");
|
||||||
|
lookup->tcflag = state;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
FULLCHECK("tcp");
|
FULLCHECK("tcp");
|
||||||
if (!is_batchfile) {
|
if (!is_batchfile) {
|
||||||
lookup->tcp_mode = state;
|
lookup->tcp_mode = state;
|
||||||
lookup->tcp_mode_set = ISC_TRUE;
|
lookup->tcp_mode_set = ISC_TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
goto invalid_option;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'i': /* timeout */
|
case 'i': /* timeout */
|
||||||
FULLCHECK("timeout");
|
FULLCHECK("timeout");
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
|
@ -953,6 +953,17 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>+[no]raflag</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Set [do not set] the RA (Recursion Available) bit in
|
||||||
|
the query. The default is +noraflag. This bit should
|
||||||
|
be ignored by the server for QUERY.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]rdflag</option></term>
|
<term><option>+[no]rdflag</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
@ -1096,6 +1107,17 @@
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><option>+[no]tcflag</option></term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Set [do not set] the TC (TrunCation) bit in the query.
|
||||||
|
The default is +notcflag. This bit should be ignored
|
||||||
|
by the server for QUERY.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><option>+[no]tcp</option></term>
|
<term><option>+[no]tcp</option></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
@ -655,6 +655,8 @@ make_empty_lookup(void) {
|
|||||||
looknew->aaonly = ISC_FALSE;
|
looknew->aaonly = ISC_FALSE;
|
||||||
looknew->adflag = ISC_FALSE;
|
looknew->adflag = ISC_FALSE;
|
||||||
looknew->cdflag = ISC_FALSE;
|
looknew->cdflag = ISC_FALSE;
|
||||||
|
looknew->raflag = ISC_FALSE;
|
||||||
|
looknew->tcflag = ISC_FALSE;
|
||||||
looknew->print_unknown_format = ISC_FALSE;
|
looknew->print_unknown_format = ISC_FALSE;
|
||||||
looknew->zflag = ISC_FALSE;
|
looknew->zflag = ISC_FALSE;
|
||||||
looknew->ns_search_only = ISC_FALSE;
|
looknew->ns_search_only = ISC_FALSE;
|
||||||
@ -797,6 +799,8 @@ clone_lookup(dig_lookup_t *lookold, isc_boolean_t servers) {
|
|||||||
looknew->aaonly = lookold->aaonly;
|
looknew->aaonly = lookold->aaonly;
|
||||||
looknew->adflag = lookold->adflag;
|
looknew->adflag = lookold->adflag;
|
||||||
looknew->cdflag = lookold->cdflag;
|
looknew->cdflag = lookold->cdflag;
|
||||||
|
looknew->raflag = lookold->raflag;
|
||||||
|
looknew->tcflag = lookold->tcflag;
|
||||||
looknew->print_unknown_format = lookold->print_unknown_format;
|
looknew->print_unknown_format = lookold->print_unknown_format;
|
||||||
looknew->zflag = lookold->zflag;
|
looknew->zflag = lookold->zflag;
|
||||||
looknew->ns_search_only = lookold->ns_search_only;
|
looknew->ns_search_only = lookold->ns_search_only;
|
||||||
@ -2235,6 +2239,16 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||||||
lookup->sendmsg->flags |= DNS_MESSAGEFLAG_CD;
|
lookup->sendmsg->flags |= DNS_MESSAGEFLAG_CD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lookup->raflag) {
|
||||||
|
debug("RA query");
|
||||||
|
lookup->sendmsg->flags |= DNS_MESSAGEFLAG_RA;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lookup->tcflag) {
|
||||||
|
debug("TC query");
|
||||||
|
lookup->sendmsg->flags |= DNS_MESSAGEFLAG_TC;
|
||||||
|
}
|
||||||
|
|
||||||
if (lookup->zflag) {
|
if (lookup->zflag) {
|
||||||
debug("Z query");
|
debug("Z query");
|
||||||
lookup->sendmsg->flags |= 0x0040U;
|
lookup->sendmsg->flags |= 0x0040U;
|
||||||
|
@ -94,6 +94,8 @@ struct dig_lookup {
|
|||||||
aaonly,
|
aaonly,
|
||||||
adflag,
|
adflag,
|
||||||
cdflag,
|
cdflag,
|
||||||
|
raflag,
|
||||||
|
tcflag,
|
||||||
zflag,
|
zflag,
|
||||||
trace, /*% dig +trace */
|
trace, /*% dig +trace */
|
||||||
trace_root, /*% initial query for either +trace or +nssearch */
|
trace_root, /*% initial query for either +trace or +nssearch */
|
||||||
|
@ -140,6 +140,7 @@ if [ -x ${DIG} ] ; then
|
|||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
status=`expr $status + $ret`
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
n=`expr $n + 1`
|
||||||
echo_i "checking dig +header-only works ($n)"
|
echo_i "checking dig +header-only works ($n)"
|
||||||
ret=0
|
ret=0
|
||||||
$DIG $DIGOPTS +tcp @10.53.0.3 +header-only example > dig.out.test$n || ret=1
|
$DIG $DIGOPTS +tcp @10.53.0.3 +header-only example > dig.out.test$n || ret=1
|
||||||
@ -148,6 +149,24 @@ if [ -x ${DIG} ] ; then
|
|||||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
status=`expr $status + $ret`
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
n=`expr $n + 1`
|
||||||
|
echo_i "checking dig +raflag works ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +tcp @10.53.0.3 +raflag +qr example > dig.out.test$n || ret=1
|
||||||
|
grep "^;; flags: rd ra ad; QUERY: 1, ANSWER: 0," < dig.out.test$n > /dev/null || ret=1
|
||||||
|
grep "^;; flags: qr rd ra; QUERY: 1, ANSWER: 0," < dig.out.test$n > /dev/null || ret=1
|
||||||
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
|
n=`expr $n + 1`
|
||||||
|
echo_i "checking dig +tcflag works ($n)"
|
||||||
|
ret=0
|
||||||
|
$DIG $DIGOPTS +tcp @10.53.0.3 +tcflag +qr example > dig.out.test$n || ret=1
|
||||||
|
grep "^;; flags: tc rd ad; QUERY: 1, ANSWER: 0" < dig.out.test$n > /dev/null || ret=1
|
||||||
|
grep "^;; flags: qr rd ra; QUERY: 1, ANSWER: 0," < dig.out.test$n > /dev/null || ret=1
|
||||||
|
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||||
|
status=`expr $status + $ret`
|
||||||
|
|
||||||
n=`expr $n + 1`
|
n=`expr $n + 1`
|
||||||
echo_i "checking dig +header-only works (with class and type set) ($n)"
|
echo_i "checking dig +header-only works (with class and type set) ($n)"
|
||||||
ret=0
|
ret=0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user