Fix reflect

This commit is contained in:
Miek Gieben 2011-03-21 22:59:50 +01:00
parent a7a8b616f0
commit a15c82cf28

View File

@ -33,31 +33,27 @@ func reply(c *dns.Conn, in *dns.Msg) []byte {
m.Answer = make([]dns.RR, 1) m.Answer = make([]dns.RR, 1)
m.Extra = make([]dns.RR, 1) m.Extra = make([]dns.RR, 1)
// Copy the question.
m.Question[0] = in.Question[0] m.Question[0] = in.Question[0]
// Some foo to check if we are called trough ip6 or ip4.
// We add the correct reply RR.
var ad net.IP var ad net.IP
if c.UDP != nil { if c.UDP != nil {
ad = c.Addr.(*net.UDPAddr).IP ad = c.Addr.(*net.UDPAddr).IP
} else { } else {
ad = c.Addr.(*net.TCPAddr).IP ad = c.Addr.(*net.TCPAddr).IP
} }
if ad.To4() != nil { if ad.To4() != nil {
r := new(dns.RR_A) r := new(dns.RR_A)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0} r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0}
if c.UDP != nil { r.A = ad
r.A = c.Addr.(*net.UDPAddr).IP
} else {
r.A = c.Addr.(*net.TCPAddr).IP
}
m.Answer[0] = r m.Answer[0] = r
} else { } else {
r := new(dns.RR_AAAA) r := new(dns.RR_AAAA)
r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 0} r.Hdr = dns.RR_Header{Name: "whoami.miek.nl.", Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 0}
if c.UDP != nil { r.AAAA = ad
r.AAAA = c.Addr.(*net.UDPAddr).IP
} else {
r.AAAA = c.Addr.(*net.TCPAddr).IP
}
m.Answer[0] = r m.Answer[0] = r
} }