Command
hollow inspect
Prints every octet of a reply with the field the decoder read it as. Compression pointers are resolved to their target offset and to the name they expand to. The annotation column comes from the same parser the resolver uses, so a region nobody can name fails a test rather than being skipped over.
Usage
hollow inspect [flags] <name> [type]
hollow inspect --file <message>
Flags
--file <string>read the message from this file instead of sending a query
--hints <string>root hints in named.root format; default is the compiled-in list
--port <uint>default 53
port to query
--server <string>ask this server directly instead of resolving from the root
--tcpquery over TCP instead of falling back to it
--timeout <duration>default 3s
deadline for one exchange with one server
Real output
Captured from the binary, verbatim. Timings and addresses are whatever that particular run returned.
$ hollow inspect example.com;; 72 octets from [2803:f800:50::6ca2:c0a2]:53 over udp in 21.438ms0000 85 ea ID 0x85ea0002 84 00 flags QR=1 opcode=0 AA=1 TC=0 RD=0 RA=0 AD=0 CD=0 rcode=00004 00 01 QDCOUNT 10006 00 02 ANCOUNT 20008 00 00 NSCOUNT 0000a 00 01 ARCOUNT 1000c 07 65 78 61 6d 70 6c 65 QNAME example.com. = "example" "com"0014 03 63 6f 6d 000019 00 01 QTYPE A (1)001b 00 01 QCLASS IN (1)001d c0 0c NAME example.com. = pointer to 0x000c001f 00 01 TYPE A (1)0021 00 01 CLASS IN (1)0023 00 00 01 2c TTL 300 seconds0027 00 04 RDLENGTH 40029 ac 42 93 f3 RDATA address 172.66.147.243002d c0 0c NAME example.com. = pointer to 0x000c002f 00 01 TYPE A (1)0031 00 01 CLASS IN (1)0033 00 00 01 2c TTL 300 seconds0037 00 04 RDLENGTH 40039 68 14 17 9a RDATA address 104.20.23.154003d 00 NAME . = root, one zero octet003e 00 29 TYPE OPT (41)0040 04 d0 UDP size 1232 octets the sender will accept0042 00 00 00 00 extended rcode and flags version 0, DO=00046 00 00 RDLENGTH 0