EDNS: return error on wrong version. (#95)

Split up the previous changes a bit. This PR only returns the expected
error when the received packet has the wrong EDNS version.

EDNS0 handling in the middleware needs a nicer abstraction, like
ReflectEdns() or something.
This commit is contained in:
Miek Gieben
2016-04-09 11:13:04 +01:00
parent 16c035731c
commit db3d689a8a
5 changed files with 99 additions and 23 deletions

37
middleware/edns_test.go Normal file
View File

@@ -0,0 +1,37 @@
package middleware
import (
"testing"
"github.com/miekg/dns"
)
func TestEdns0Version(t *testing.T) {
m := ednsMsg()
m.Extra[0].(*dns.OPT).SetVersion(2)
_, err := Edns0Version(m)
if err == nil {
t.Errorf("expected wrong version, but got OK")
}
}
func TestEdns0VersionNoEdns(t *testing.T) {
m := ednsMsg()
m.Extra = nil
_, err := Edns0Version(m)
if err != nil {
t.Errorf("expected no error, but got one: %s", err)
}
}
func ednsMsg() *dns.Msg {
m := new(dns.Msg)
m.SetQuestion("example.com.", dns.TypeA)
o := new(dns.OPT)
o.Hdr.Name = "."
o.Hdr.Rrtype = dns.TypeOPT
m.Extra = append(m.Extra, o)
return m
}