diff --git a/dns/main.go b/dns/main.go index a50815bd..2de4225b 100644 --- a/dns/main.go +++ b/dns/main.go @@ -9,16 +9,21 @@ import ( var zone = new(weavedns.ZoneDb) -func handleLocal(w dns.ResponseWriter, r *dns.Msg) { +func makeDNSReply(r *dns.Msg, name string, addr net.IP) *dns.Msg { m := new(dns.Msg) m.SetReply(r) + hdr := dns.RR_Header{Name: name, Rrtype: dns.TypeA, + Class: dns.ClassINET, Ttl: 3600} + a := &dns.A{hdr, addr} + m.Answer = append(m.Answer, a) + return m +} + +func handleLocal(w dns.ResponseWriter, r *dns.Msg) { q := r.Question[0] ip, err := zone.MatchLocal(q.Name) if err == nil { - hdr := dns.RR_Header{Name: q.Name, Rrtype: dns.TypeA, - Class: dns.ClassINET, Ttl: 3600} - a := &dns.A{hdr, net.ParseIP(ip)} - m.Answer = append(m.Answer, a) + m := makeDNSReply(r, q.Name, net.ParseIP(ip)) w.WriteMsg(m) } else { log.Printf("Failed lookup for %s", q.Name)