Merge pull request #39 from abh/edns-use-sourcenetmask

Use SourceNetmask to truncate IP addresses in EDNS-CLIENT-SUBNET packets
This commit is contained in:
Miek Gieben 2013-05-08 01:05:59 -07:00
commit 0c698b9463

11
edns.go
View File

@ -227,6 +227,11 @@ func (e *EDNS0_SUBNET) pack() ([]byte, error) {
} }
ip[i] = a[i] ip[i] = a[i]
} }
needLength := e.SourceNetmask / 8
if e.SourceNetmask%8 > 0 {
needLength++
}
ip = ip[:needLength]
b = append(b, ip...) b = append(b, ip...)
case 2: case 2:
if e.SourceNetmask > net.IPv6len*8 { if e.SourceNetmask > net.IPv6len*8 {
@ -240,7 +245,11 @@ func (e *EDNS0_SUBNET) pack() ([]byte, error) {
} }
ip[i] = a[i] ip[i] = a[i]
} }
// chop off ip a SourceNetmask/8: ip = ip[:e.SourceNetmask/8] ? needLength := e.SourceNetmask / 8
if e.SourceNetmask%8 > 0 {
needLength++
}
ip = ip[:needLength]
b = append(b, ip...) b = append(b, ip...)
default: default:
return nil, errors.New("dns: bad address family") return nil, errors.New("dns: bad address family")