plugin/hosts: fix for ipv4-in-ipv6 (#2506)

* fix for ipv4-in-ipv6

* update comment as requested
This commit is contained in:
Thomas Mangin 2019-01-28 16:36:34 +00:00 committed by Miek Gieben
parent d571fbe046
commit e343556687
2 changed files with 18 additions and 2 deletions

View file

@ -44,6 +44,12 @@ var hostsTestCases = []test.Case{
test.A("example.org. 3600 IN A 10.0.0.1"),
},
},
{
Qname: "example.com.", Qtype: dns.TypeA,
Answer: []dns.RR{
test.A("example.com. 3600 IN A 10.0.0.2"),
},
},
{
Qname: "localhost.", Qtype: dns.TypeAAAA,
Answer: []dns.RR{
@ -56,6 +62,12 @@ var hostsTestCases = []test.Case{
test.PTR("1.0.0.10.in-addr.arpa. 3600 PTR example.org."),
},
},
{
Qname: "2.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR,
Answer: []dns.RR{
test.PTR("2.0.0.10.in-addr.arpa. 3600 PTR example.com."),
},
},
{
Qname: "1.0.0.127.in-addr.arpa.", Qtype: dns.TypePTR,
Answer: []dns.RR{
@ -76,4 +88,6 @@ var hostsTestCases = []test.Case{
const hostsExample = `
127.0.0.1 localhost localhost.domain
::1 localhost localhost.domain
10.0.0.1 example.org`
10.0.0.1 example.org
::FFFF:10.0.0.2 example.com
`

View file

@ -185,8 +185,10 @@ func (h *Hostsfile) parse(r io.Reader, override *hostsMap) *hostsMap {
}
// ipVersion returns what IP version was used textually
// For why the string is parsed end to start,
// see IPv4-Compatible IPv6 addresses - RFC 4291 section 2.5.5
func ipVersion(s string) int {
for i := 0; i < len(s); i++ {
for i := len(s) - 1; i >= 0; i-- {
switch s[i] {
case '.':
return 4