third_party: mdns: merge upstream logging changes
Change-Id: Id01653a2f6e0480b64dfbc6ba54fde85ef3a7e3d
MultiPart: 2/2
diff --git a/go/src/github.com/presotto/go-mdns-sd/README.google b/go/src/github.com/presotto/go-mdns-sd/README.google
index c6f348e..24025eb 100644
--- a/go/src/github.com/presotto/go-mdns-sd/README.google
+++ b/go/src/github.com/presotto/go-mdns-sd/README.google
@@ -1,5 +1,5 @@
-URL: https://github.com/presotto/go-mdns-sd/archive/80bc955e5588ac81a340d3a3fa9aacc2a1414d64.zip
-Version: 80bc955e5588ac81a340d3a3fa9aacc2a1414d64
+URL: https://github.com/presotto/go-mdns-sd/archive/343772046ec1b3840b8591799a7bbcc68ea47b4b.zip
+Version: 343772046ec1b3840b8591799a7bbcc68ea47b4b
License: New BSD
License File: LICENSE
diff --git a/go/src/github.com/presotto/go-mdns-sd/go_dns/README.google b/go/src/github.com/presotto/go-mdns-sd/go_dns/README.google
index d1c5de9..41e5f69 100644
--- a/go/src/github.com/presotto/go-mdns-sd/go_dns/README.google
+++ b/go/src/github.com/presotto/go-mdns-sd/go_dns/README.google
@@ -1,10 +1,11 @@
URL: https://code.google.com/p/go/source/browse/src/pkg/net?r=01acf1dbe91f
-Version: 01acf1dbe91f
+Version: 01acf1dbe91f
License: BSD-like
License File: LICENSE
Description:
- Go dns code
+Go dns code
Local Modifications:
- Extracted from package net into its own package.
+None beyond those done when extracting this code from the net package into its
+own package (github.com/presotto/go-mdns-sd/go_dns)
diff --git a/go/src/github.com/presotto/go-mdns-sd/mdns.go b/go/src/github.com/presotto/go-mdns-sd/mdns.go
index 70b08c4..f2be961 100644
--- a/go/src/github.com/presotto/go-mdns-sd/mdns.go
+++ b/go/src/github.com/presotto/go-mdns-sd/mdns.go
@@ -79,7 +79,7 @@
ifc: ifc,
addr: addr,
addresses: addresses,
- cache: newRRCache(mdns.debug),
+ cache: newRRCache(mdns.logLevel),
mdns: mdns,
ipver: ipver,
}
@@ -145,16 +145,20 @@
// Send a message on a multicast net and cache it locally.
func (m *multicastIfc) sendMessage(msg *dns.Msg) {
- if m.mdns.debug {
+ if m.mdns.logLevel >= 2 {
log.Printf("sending message %v\n", msg)
}
buf, ok := msg.Pack()
if !ok {
- log.Printf("can't pack address message\n")
+ if m.mdns.logLevel >= 1 {
+ log.Printf("can't pack address message\n")
+ }
return
}
if _, err := m.conn.WriteTo(buf, m.addr); err != nil {
- log.Printf("WriteTo failed %v %v", m.addr, err)
+ if m.mdns.logLevel >= 1 {
+ log.Printf("WriteTo failed %v %v", m.addr, err)
+ }
}
// Cache these RRs in case we ask about ourself.
@@ -250,7 +254,9 @@
// TTL to use for outgoing RRs.
ttl uint32
- debug bool
+ // TODO: Use a "real" leveled logging module, e.g.
+ // https://github.com/golang/glog.
+ logLevel int
loopback bool
}
@@ -307,7 +313,7 @@
}
// Create a new MDNS service.
-func NewMDNS(host, v4addr, v6addr string, loopback, debug bool) (s *MDNS, err error) {
+func NewMDNS(host, v4addr, v6addr string, loopback bool, logLevel int) (s *MDNS, err error) {
s = new(MDNS)
if v4addr == "" {
v4addr = "224.0.0.251:5353"
@@ -321,7 +327,7 @@
if s.v6addr, err = net.ResolveUDPAddr("udp", v6addr); err != nil {
return nil, err
}
- s.debug = debug
+ s.logLevel = logLevel
s.loopback = loopback
s.ttl = 120
@@ -400,7 +406,9 @@
for _, ifc := range ifcs {
addresses, addrErr := ifc.Addrs()
if addrErr != nil {
- log.Printf("Addrs() failed: %s", addrErr)
+ if s.logLevel >= 1 {
+ log.Printf("Addrs() failed: %s", addrErr)
+ }
continue
}
@@ -419,7 +427,9 @@
case *net.IPNet:
// We either use loopback or non-loopback interfaces (generally loopback is for testing).
if (address.IP.IsLoopback() && !s.loopback) || (!address.IP.IsLoopback() && s.loopback) {
- log.Printf("skipping ifc %d %s %s\n", ifc.Index, ifc.Name, address)
+ if s.logLevel >= 1 {
+ log.Printf("skipping ifc %d %s %s\n", ifc.Index, ifc.Name, address)
+ }
continue
}
@@ -452,7 +462,9 @@
}
}
m.stop()
- log.Printf("removing ifc %s", m)
+ if s.logLevel >= 1 {
+ log.Printf("removing ifc %s", m)
+ }
delete(s.mifcs, k)
}
@@ -463,14 +475,20 @@
}
conn, err := net.ListenMulticastUDP("udp", &newm.ifc, newm.addr)
if err != nil {
- log.Printf("ListenMulticastUDP %s: %v\n", newm, err)
+ if s.logLevel >= 1 {
+ log.Printf("ListenMulticastUDP %s: %v\n", newm, err)
+ }
continue
}
if err := SetMulticastTTL(conn, newm.ipver, 255); err != nil {
- log.Printf("SetMulticastTTL %s: %v\n", newm, err)
+ if s.logLevel >= 1 {
+ log.Printf("SetMulticastTTL %s: %v\n", newm, err)
+ }
}
if err := SetMulticastLoopback(conn, newm.ipver, true); err != nil {
- log.Printf("SetMulticastLoopback %s: %v\n", newm, err)
+ if s.logLevel >= 1 {
+ log.Printf("SetMulticastLoopback %s: %v\n", newm, err)
+ }
}
newm.conn = conn
s.mifcs[k] = newm
@@ -497,19 +515,25 @@
// A go routine to listen for packets on a network. Pass to the main loop with sufficient information to
// answer on the same interface.
func (s *MDNS) udpListener(ifc *multicastIfc) {
- log.Printf("MDNS listening on %s with %v", ifc, ifc.addresses)
+ if s.logLevel >= 1 {
+ log.Printf("MDNS listening on %s with %v", ifc, ifc.addresses)
+ }
b := make([]byte, 2048)
for ifc.run() && s.run() {
n, a, err := ifc.conn.ReadFromUDP(b)
if err != nil {
- log.Printf("error reading from udp: %v", err)
+ if s.logLevel >= 1 {
+ log.Printf("error reading from udp: %v", err)
+ }
}
// convert to dns packet
msg := new(dns.Msg)
if !msg.Unpack(b[0:n]) {
- log.Printf("couldn't unpack %d byte dns msg from %v", n, a)
+ if s.logLevel >= 1 {
+ log.Printf("couldn't unpack %d byte dns msg from %v", n, a)
+ }
} else {
s.fromNet <- &msgFromNet{ifc, a, msg}
}
@@ -701,11 +725,13 @@
case m := <-s.fromNet:
if m.msg.Response {
// Cache the information.
- if s.debug {
+ if s.logLevel >= 2 {
log.Printf("%s: response %v\n", s.hostName, m.msg)
}
if s.isDoppelGanger(m.msg.Answer) {
- log.Printf("%s: name collision, %s also claims to be %s\n", s.hostName, m.sender, s.hostFQDN)
+ if s.logLevel >= 1 {
+ log.Printf("%s: name collision, %s also claims to be %s\n", s.hostName, m.sender, s.hostFQDN)
+ }
continue
}
for _, rr := range m.msg.Answer {
@@ -718,7 +744,7 @@
if s.hostName == "" {
break
}
- if s.debug {
+ if s.logLevel >= 2 {
log.Printf("%s: question %v\n", s.hostName, m.msg)
}
s.answerQuestionFromNet(m)
@@ -731,7 +757,9 @@
s.services[req.service] = set
}
set[hostport(req.host, req.port)] = req
- log.Printf("adding service %s %s %d\n", req.service, req.host, req.port)
+ if s.logLevel >= 1 {
+ log.Printf("adding service %s %s %d\n", req.service, req.host, req.port)
+ }
// Tell all the networks about the name
for _, mifc := range s.mifcs {
@@ -746,7 +774,9 @@
if len(set) == 0 {
delete(s.services, req.service)
}
- log.Printf("removing service %s %s %d\n", req.service, req.host, req.port)
+ if s.logLevel >= 1 {
+ log.Printf("removing service %s %s %d\n", req.service, req.host, req.port)
+ }
// Tell all the networks about the goodbye
for _, mifc := range s.mifcs {
@@ -1078,7 +1108,7 @@
default:
return
}
- if s.debug {
+ if s.logLevel >= 2 {
log.Printf("%s: changed %v\n", s.hostName, rr)
}
s.watchedLock.RLock()
diff --git a/go/src/github.com/presotto/go-mdns-sd/mdns_test.go b/go/src/github.com/presotto/go-mdns-sd/mdns_test.go
index 2712a0c..1877d3c 100644
--- a/go/src/github.com/presotto/go-mdns-sd/mdns_test.go
+++ b/go/src/github.com/presotto/go-mdns-sd/mdns_test.go
@@ -16,7 +16,7 @@
var (
// common options
- debugFlag = flag.Bool("debug", false, "turn on debugging")
+ logLevelFlag = flag.Int("v", 0, "log level")
)
type instance struct {
@@ -26,7 +26,7 @@
}
func createInstance(service string, inst instance) *MDNS {
- s, err := NewMDNS(inst.host, "224.0.0.254:9999", "[FF02::FF]:9998", true, *debugFlag)
+ s, err := NewMDNS(inst.host, "224.0.0.254:9999", "[FF02::FF]:9998", true, *logLevelFlag)
if err != nil {
log.Fatal("can't translate address: %v", err)
}
diff --git a/go/src/github.com/presotto/go-mdns-sd/rrcache.go b/go/src/github.com/presotto/go-mdns-sd/rrcache.go
index f57c0c9..0b40d45 100644
--- a/go/src/github.com/presotto/go-mdns-sd/rrcache.go
+++ b/go/src/github.com/presotto/go-mdns-sd/rrcache.go
@@ -22,14 +22,14 @@
// The first key is the domain name and the second is the RR type
cache map[string]map[uint16][]*rrCacheEntry
- debug bool
+ logLevel int
}
// Create a new rr cache. Make sure at least the top level map exists.
-func newRRCache(debug bool) *rrCache {
+func newRRCache(logLevel int) *rrCache {
rrcache := new(rrCache)
rrcache.cache = make(map[string]map[uint16][]*rrCacheEntry, 0)
- rrcache.debug = debug
+ rrcache.logLevel = logLevel
return rrcache
}
@@ -50,7 +50,7 @@
// Remove all rr's matching this one's type if a cache flush is requested.
if rr.Header().Class&0x8000 == 0x8000 {
- if c.debug {
+ if c.logLevel >= 2 {
log.Printf("cache flush for %v\n", rr)
}
dnmap[rr.Header().Rrtype] = make([]*rrCacheEntry, 0)
@@ -126,7 +126,7 @@
}
}
if same {
- if c.debug {
+ if c.logLevel >= 2 {
log.Printf("replacing cached entry for %v with %v\n", rrslice[i].rr, rr)
}
rrslice[i] = entry
@@ -137,13 +137,13 @@
if firstnil >= 0 {
// Fill in a hole.
rrslice[firstnil] = entry
- if c.debug {
+ if c.logLevel >= 2 {
log.Printf("adding cached entry for %v (in a hole)\n", rr)
}
} else {
// Append to the end of the list.
dnmap[rr.Header().Rrtype] = append(rrslice, entry)
- if c.debug {
+ if c.logLevel >= 2 {
log.Printf("adding cached entry for %v (append)\n", rr)
}
}
diff --git a/go/src/github.com/presotto/go-mdns-sd/rrcache_test.go b/go/src/github.com/presotto/go-mdns-sd/rrcache_test.go
index 2a926e6..ade40e3 100644
--- a/go/src/github.com/presotto/go-mdns-sd/rrcache_test.go
+++ b/go/src/github.com/presotto/go-mdns-sd/rrcache_test.go
@@ -81,7 +81,7 @@
}
func TestRRCache(t *testing.T) {
- cache := newRRCache(*debugFlag)
+ cache := newRRCache(*logLevelFlag)
// Cache a number of RRs with short TTLs.
for _, rr := range short {
cache.Add(rr)