diff --git a/server.go b/server.go index a514ad09..ca497b23 100644 --- a/server.go +++ b/server.go @@ -21,6 +21,8 @@ type Handler interface { // A ResponseWriter interface is used by an DNS handler to // construct an DNS response. type ResponseWriter interface { + // LocalAddr returns the net.Addr of the server + LocalAddr() net.Addr // RemoteAddr returns the net.Addr of the client that sent the current request. RemoteAddr() net.Addr // WriteMsg writes a reply back to the client. @@ -483,6 +485,15 @@ func (w *response) Write(m []byte) (int, error) { panic("not reached") } +// LocalAddr implements the ResponseWriter.LocalAddr method. +func (w *response) LocalAddr() net.Addr { + if w.tcp != nil { + return w.tcp.LocalAddr() + } else { + return w.udp.LocalAddr() + } +} + // RemoteAddr implements the ResponseWriter.RemoteAddr method. func (w *response) RemoteAddr() net.Addr { return w.remoteAddr }