break;
case 'q':
switch (cmd[1]) {
+ case 'i': /* qid */
+ FULLCHECK("qid");
+ if (!state) {
+ lookup->setqid = false;
+ lookup->qid = 0;
+ break;
+ }
+ if (value == NULL) {
+ goto need_value;
+ }
+ result = parse_uint(&num, value, MAXQID, "qid");
+ if (result != ISC_R_SUCCESS) {
+ warn("Couldn't parse qid");
+ goto exit_or_usage;
+ }
+ lookup->setqid = true;
+ lookup->qid = num;
+ break;
case 'r': /* qr */
FULLCHECK("qr");
lookup->qr = state;
mandatory. Responses to padded queries may also be padded, but only
if the query uses TCP or DNS COOKIE.
+``+qid=value``
+
+ Specify the query ID to use when sending queries.
+
``+[no]qr``
Toggles the display of the query message as it is sent. By default, the query
is not printed.
looknew->tcflag = false;
looknew->print_unknown_format = false;
looknew->zflag = false;
+ looknew->setqid = false;
+ looknew->qid = 0;
looknew->ns_search_only = false;
looknew->origin = NULL;
looknew->tsigctx = NULL;
looknew->tcflag = lookold->tcflag;
looknew->print_unknown_format = lookold->print_unknown_format;
looknew->zflag = lookold->zflag;
+ looknew->setqid = lookold->setqid;
+ looknew->qid = lookold->qid;
looknew->ns_search_only = lookold->ns_search_only;
looknew->tcp_mode = lookold->tcp_mode;
looknew->tcp_mode_set = lookold->tcp_mode_set;
lookup->sendmsg->flags |= 0x0040U;
}
+ if (lookup->setqid) {
+ debug("set QID");
+ lookup->sendmsg->id = lookup->qid;
+ }
+
dns_message_addname(lookup->sendmsg, lookup->name,
DNS_SECTION_QUESTION);
#define MAXPORT 0xffff
/*% Max serial number */
#define MAXSERIAL 0xffffffff
+/*% Max query ID */
+#define MAXQID 0xffff
/*% Default TCP Timeout */
#define TCP_TIMEOUT 10
tcp_keepalive, header_only, ednsneg, mapped,
print_unknown_format, multiline, nottl, noclass, onesoa,
use_usec, nocrypto, ttlunits, idnin, idnout, expandaaaa, qr,
- accept_reply_unexpected_src; /*% print replies from
+ accept_reply_unexpected_src, /*% print replies from
* unexpected
* sources. */
+ setqid; /*% use a speciied query ID */
char textname[MXNAME]; /*% Name we're going to be
* looking up */
char cmdline[MXNAME];
dns_opcode_t opcode;
int rrcomments;
unsigned int eoferr;
+ uint16_t qid;
};
/*% The dig_query structure */
lookup->aaonly = aaonly;
lookup->retries = tries;
lookup->udpsize = 0;
+ lookup->setqid = false;
+ lookup->qid = 0;
lookup->comments = comments;
if (lookup->rdtype == dns_rdatatype_any && !tcpmode_set) {
lookup->tcp_mode = true;