Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dns: add TypeDNAME. #63

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

dns: add TypeDNAME. #63

wants to merge 1 commit into from

Conversation

fbzhong
Copy link

@fbzhong fbzhong commented Feb 18, 2020

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{}
}

@gopherbot
Copy link
Contributor

This PR (HEAD: 221a808) 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
Copy link
Contributor

This PR (HEAD: ec33b19) 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants