From 7888cd96b8285295d67cf85c2d0315efa250cf20 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Thu, 6 Jan 2011 15:06:06 +0100 Subject: [PATCH] edns ala dig use the OPT pseudo header for NSID, ala bind --- edns.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/edns.go b/edns.go index e53f993e..98f3e9d3 100644 --- a/edns.go +++ b/edns.go @@ -2,6 +2,7 @@ package dns import ( "strconv" + "encoding/hex" ) // EDNS0 Options and Do bit @@ -40,18 +41,26 @@ func (rr *RR_OPT) Header() *RR_Header { } func (rr *RR_OPT) String() string { - s := ";; EDNS: version " + strconv.Itoa(int(rr.Version())) + "; " + s := "\n;; OPT PSEUDOSECTION:\n; EDNS: version " + strconv.Itoa(int(rr.Version())) + "; " if rr.Do() { s += "flags: do; " } else { s += "flags: ; " } - s += "udp: " + strconv.Itoa(int(rr.UDPSize())) + ";" + s += "udp: " + strconv.Itoa(int(rr.UDPSize())) for _, o := range rr.Option { switch o.Code { case OptionCodeNSID: - s += " nsid: " + o.Data + ";" + s += "\n; NSID: " + o.Data + h, e := hex.DecodeString(o.Data) + var r string + if e == nil { + for _, c := range h { + r += " (" + string(c) + ")" + } + s += " " + r + } } } return s