the Meta struct can be used in responder but it is not mandatory

This commit is contained in:
Miek Gieben 2011-01-18 19:14:26 +01:00
parent eea816967b
commit 514381d98d
2 changed files with 22 additions and 14 deletions

34
dns.go
View File

@ -54,20 +54,20 @@ func (e *Error) String() string {
// Meta data when querying
type Meta struct {
QLen int // query length in bytes
RLen int // reply length in bytes
QueryStart int64 // start of query in nanoseconds epoch
QueryEnd int64 // end of query in nanosecond epoch
QLen int // query length in bytes
RLen int // reply length in bytes
QueryStart int64 // start of query in nanoseconds epoch
QueryEnd int64 // end of query in nanosecond epoch
}
func (m *Meta) String() string {
s := ";; Query time: " + strconv.Itoa(int(m.QueryEnd - m.QueryStart)) + " nsec"
s += "\n;; MSG SIZE rcvd: " + strconv.Itoa(m.RLen) + ", sent: " + strconv.Itoa(m.QLen)
rf := float32(m.RLen)
qf := float32(m.QLen)
s += " (" + strconv.Ftoa32(rf/qf, 'f', 2) + ":1)"
// WHEN??
return s
s := ";; Query time: " + strconv.Itoa(int(m.QueryEnd-m.QueryStart)) + " nsec"
s += "\n;; MSG SIZE rcvd: " + strconv.Itoa(m.RLen) + ", sent: " + strconv.Itoa(m.QLen)
rf := float32(m.RLen)
qf := float32(m.QLen)
s += " (" + strconv.Ftoa32(rf/qf, 'f', 2) + ":1)"
// WHEN??
return s
}
type RR interface {
@ -88,9 +88,15 @@ func (r RRset) Ok() bool {
name := r[0].Header().Name
class := r[0].Header().Class
for _, rr := range r[1:] {
if rr.Header().Ttl != ttl { return false }
if rr.Header().Name != name { return false }
if rr.Header().Class != class { return false }
if rr.Header().Ttl != ttl {
return false
}
if rr.Header().Name != name {
return false
}
if rr.Header().Class != class {
return false
}
}
return true
}

View File

@ -38,6 +38,8 @@ func (s *myserv) ResponderUDP(c *net.UDPConn, a net.Addr, in []byte) {
inmsg.Unpack(in)
out := createpkg(inmsg.MsgHdr.Id, false, a)
SendUDP(out, c, a)
// Meta.QLen/RLen/QueryStart/QueryEnd can be filled in at
// this point for logging purposses or anything else
}
func (s *myserv) ResponderTCP(c *net.TCPConn, in []byte) {