net icon indicating copy to clipboard operation
net copied to clipboard

dns: add TypeDNAME.

Open fbzhong opened this issue 6 years ago • 2 comments

Add TypeDNAME = 39 support, refer to rfc6672 .

The reason of this PR is I encountered an error unpacking Answer: invalid resource type: W while using dnsmessage.Message to unpack the response of api.smoot.apple.cn.

And the response of api.smoot.apple.cn is:

; <<>> DiG 9.10.6 <<>> @8.8.8.8 api.smoot.apple.cn
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48335
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;api.smoot.apple.cn.		IN	A

;; ANSWER SECTION:
smoot.apple.cn.		21436	IN	DNAME	smoot.apple.com.
api.smoot.apple.cn.	21436	IN	CNAME	api.smoot.apple.com.
api.smoot.apple.com.	3436	IN	CNAME	api-glb.smoot.apple.com.
api-glb.smoot.apple.com. 136	IN	A	17.252.201.246

;; Query time: 43 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Feb 18 23:12:48 CST 2020
;; MSG SIZE  rcvd: 147

Since there is no api to ignore unsupported resource type, I add a little bit code to implement it, and the string of message is:

dnsmessage.Message{Header: dnsmessage.Header{ID: 36331, Response: true, OpCode: 0, Authoritative: false, Truncated: false, RecursionDesired: true, RecursionAvailable: true, RCode: dnsmessage.RCodeSuccess}, 
    Questions: []dnsmessage.Question{
        dnsmessage.Question{Name: dnsmessage.MustNewName("api.smoot.apple.cn."), Type: dnsmessage.TypeA, Class: dnsmessage.ClassINET}
    }, 
    Answers: []dnsmessage.Resource{
        dnsmessage.Resource{
            Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("smoot.apple.cn."), Type: dnsmessage.TypeDNAME, Class: dnsmessage.ClassINET, TTL: 75, Length: 17}, 
            Body: &dnsmessage.DNAMEResource{DNAME: dnsmessage.MustNewName("smoot.apple.com.")}
        }, 
        dnsmessage.Resource{
            Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("api.smoot.apple.cn."), Type: dnsmessage.TypeCNAME, Class: dnsmessage.ClassINET, TTL: 75, Length: 6}, 
            Body: &dnsmessage.CNAMEResource{CNAME: dnsmessage.MustNewName("api.smoot.apple.com.")}
        }, 
        dnsmessage.Resource{
                Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("api.smoot.apple.com."), Type: dnsmessage.TypeCNAME, Class: dnsmessage.ClassINET, TTL: 75, Length: 10},
                Body: &dnsmessage.CNAMEResource{CNAME: dnsmessage.MustNewName("api-glb.smoot.apple.com.")}
        }, 
        dnsmessage.Resource{
                Header: dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName("api-glb.smoot.apple.com."), Type: dnsmessage.TypeA, Class: dnsmessage.ClassINET, TTL: 75, Length: 4}, 
                Body: &dnsmessage.AResource{A: [4]byte{17, 252, 201, 246}}
        }
    }, 
    Authorities: []dnsmessage.Resource{}, 
    Additionals: []dnsmessage.Resource{}
}

fbzhong avatar Feb 18 '20 15:02 fbzhong

This PR (HEAD: 221a808ae6b2361a73547c811e5af8dbf769b948) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/net/+/219839 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off) See the Wiki page for more info

gopherbot avatar Feb 18 '20 15:02 gopherbot

This PR (HEAD: ec33b19b22334b396b96be76b8104ef90325bdee) has been imported to Gerrit for code review.

Please visit https://go-review.googlesource.com/c/net/+/219839 to see it.

Tip: You can toggle comments from me using the comments slash command (e.g. /comments off) See the Wiki page for more info

gopherbot avatar Mar 04 '20 17:03 gopherbot