miekg/exdns

How to disable recursion with q?

Opened this issue · 2 comments

The q program in the example has a -rd option to ask for recursion but it is enabled by default. How to disable it?

  -rd
        set RD flag in query (default true)

There is a RD each time;

% ./q  @::1 SOA internautique.fr   
;; opcode: QUERY, status: NOERROR, id: 12804
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0

;; QUESTION SECTION:
;internautique.fr.      IN       SOA

;; ANSWER SECTION:
internautique.fr.       3114    IN      SOA     ns3.bortzmeyer.org. hostmaster.bortzmeyer.org. 2016051200 7200 3600 604800 3600

;; AUTHORITY SECTION:
internautique.fr.       85914   IN      NS      ns3.bortzmeyer.org.
internautique.fr.       85914   IN      NS      ns1.bortzmeyer.org.
internautique.fr.       85914   IN      NS      ns2.bortzmeyer.org.

;; query time: 185 µs, server: [::1]:53(udp), size: 273 bytes

% ./q -rd @::1 SOA internautique.fr
;; opcode: QUERY, status: NOERROR, id: 61230
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 0

;; QUESTION SECTION:
;internautique.fr.      IN       SOA

;; ANSWER SECTION:
internautique.fr.       3112    IN      SOA     ns3.bortzmeyer.org. hostmaster.bortzmeyer.org. 2016051200 7200 3600 604800 3600

;; AUTHORITY SECTION:
internautique.fr.       85912   IN      NS      ns3.bortzmeyer.org.
internautique.fr.       85912   IN      NS      ns1.bortzmeyer.org.
internautique.fr.       85912   IN      NS      ns2.bortzmeyer.org.

;; query time: 146 µs, server: [::1]:53(udp), size: 273 bytes

A possible patch could be as simple as (but may disconcert people used to dig being recursive by default):

diff --git a/q/q.go b/q/q.go
index 11f4051..dd2e155 100644
--- a/q/q.go
+++ b/q/q.go
@@ -45,7 +45,7 @@ func main() {
        aa := flag.Bool("aa", false, "set AA flag in query")
        ad := flag.Bool("ad", false, "set AD flag in query")
        cd := flag.Bool("cd", false, "set CD flag in query")
-       rd := flag.Bool("rd", true, "set RD flag in query")
+       rd := flag.Bool("rd", false, "set RD flag in query")
        fallback := flag.Bool("fallback", false, "fallback to 4096 bytes bufsize and after that TCP")
        tcp := flag.Bool("tcp", false, "TCP mode, multiple queries are asked over the same connection")

        nsid := flag.Bool("nsid", false, "set edns nsid option")
miekg commented

"You must use the -flag=false form to turn off a boolean flag."

See https://godoc.org/flag

[ Quoting notifications@github.com in "Re: [miekg/exdns] How to disable re..." ]

A possible patch could be as simple as (but may disconcert people used to dig being recursive by default):

diff --git a/q/q.go b/q/q.go
index 11f4051..dd2e155 100644
--- a/q/q.go
+++ b/q/q.go
@@ -45,7 +45,7 @@ func main() {
       aa := flag.Bool("aa", false, "set AA flag in query")
       ad := flag.Bool("ad", false, "set AD flag in query")
       cd := flag.Bool("cd", false, "set CD flag in query")
-       rd := flag.Bool("rd", true, "set RD flag in query")
+       rd := flag.Bool("rd", false, "set RD flag in query")
       fallback := flag.Bool("fallback", false, "fallback to 4096 bytes bufsize and after that TCP")
       tcp := flag.Bool("tcp", false, "TCP mode, multiple queries are asked over the same connection")

       nsid := flag.Bool("nsid", false, "set edns nsid option")

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
#2 (comment)
/Miek

Miek Gieben