Move DNS utils into their own file
This commit is contained in:
1 parent
a5869e2090
commit
5bb6c85565
2 files changed
+30
-24
No files matched your search
@@ -0,0 +1,30 @@
|
||||
package weavedns
|
||||
|
||||
import (
|
||||
"github.com/miekg/dns"
|
||||
"net"
|
||||
)
|
||||
|
||||
const (
|
||||
localTTL uint32 = 300 // somewhat arbitrary; we don't expect anyone
|
||||
// downstream to cache results
|
||||
)
|
||||
|
||||
func makeDNSReply(r *dns.Msg, name string, qtype uint16, addrs []net.IP) *dns.Msg {
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
m.RecursionAvailable = true
|
||||
hdr := dns.RR_Header{Name: name, Rrtype: qtype, Class: dns.ClassINET, Ttl: localTTL}
|
||||
for _, addr := range addrs {
|
||||
if qtype == dns.TypeA {
|
||||
if ip4 := addr.To4(); ip4 != nil {
|
||||
m.Answer = append(m.Answer, &dns.A{hdr, addr})
|
||||
}
|
||||
} else if qtype == dns.TypeAAAA {
|
||||
if ip4 := addr.To4(); ip4 == nil {
|
||||
m.Answer = append(m.Answer, &dns.AAAA{hdr, addr})
|
||||
}
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
@@ -11,11 +11,6 @@ type MDNSServer struct {
|
||||
zone Zone
|
||||
}
|
||||
|
||||
const (
|
||||
localTTL uint32 = 300 // somewhat arbitrary; we don't expect anyone
|
||||
// downstream to cache results
|
||||
)
|
||||
|
||||
func NewMDNSServer(zone Zone) (*MDNSServer, error) {
|
||||
// This is a bit of a kludge - per the RFC we should send responses from 5353, but that doesn't seem to work
|
||||
sendconn, err := net.ListenUDP("udp4", &net.UDPAddr{IP: net.IPv4zero, Port: 0})
|
||||
@@ -27,25 +22,6 @@ func NewMDNSServer(zone Zone) (*MDNSServer, error) {
|
||||
return retval, nil
|
||||
}
|
||||
|
||||
func makeDNSReply(r *dns.Msg, name string, qtype uint16, addrs []net.IP) *dns.Msg {
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
m.RecursionAvailable = true
|
||||
hdr := dns.RR_Header{Name: name, Rrtype: qtype, Class: dns.ClassINET, Ttl: localTTL}
|
||||
for _, addr := range addrs {
|
||||
if qtype == dns.TypeA {
|
||||
if ip4 := addr.To4(); ip4 != nil {
|
||||
m.Answer = append(m.Answer, &dns.A{hdr, addr})
|
||||
}
|
||||
} else if qtype == dns.TypeAAAA {
|
||||
if ip4 := addr.To4(); ip4 == nil {
|
||||
m.Answer = append(m.Answer, &dns.AAAA{hdr, addr})
|
||||
}
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
// Return true if testaddr is a UDP address with IP matching my local i/f
|
||||
func (s *MDNSServer) addrIsLocal(testaddr net.Addr) bool {
|
||||
if udpaddr, ok := testaddr.(*net.UDPAddr); ok {
|
||||
|
||||
Reference in new issue
Block a user