Documentation ¶
Overview ¶
Package request abstracts a client's request so that all middleware will handle them in an unified way.
Index ¶
- func Proto(w dns.ResponseWriter) string
- type Request
- func (r *Request) Class() string
- func (r *Request) Clear()
- func (r *Request) Do() bool
- func (r *Request) ErrorMessage(rcode int) *dns.Msg
- func (r *Request) Family() int
- func (r *Request) IP() string
- func (r *Request) Len() int
- func (r *Request) Name() string
- func (r *Request) NewWithQuestion(name string, typ uint16) Request
- func (r *Request) Port() string
- func (r *Request) Proto() string
- func (r *Request) QClass() uint16
- func (r *Request) QName() string
- func (r *Request) QType() uint16
- func (r *Request) RemoteAddr() string
- func (r *Request) Scrub(reply *dns.Msg) (*dns.Msg, Result)
- func (r *Request) Size() int
- func (r *Request) SizeAndDo(m *dns.Msg) bool
- func (r *Request) Type() string
- type Result
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Proto ¶
func Proto(w dns.ResponseWriter) string
Proto gets the protocol used as the transport. This will be udp or tcp.
Types ¶
type Request ¶
type Request struct { Req *dns.Msg W dns.ResponseWriter // contains filtered or unexported fields }
Request contains some connection state and is useful in middleware.
func (*Request) ErrorMessage ¶
ErrorMessage returns an error message suitable for sending back to the client.
func (*Request) Name ¶
Name returns the name of the question in the request. Note this name will always have a closing dot and will be lower cased. After a call Name the value will be cached. To clear this caching call Clear.
func (*Request) NewWithQuestion ¶
NewWithQuestion returns a new request based on the old, but with a new question section in the request.
func (*Request) RemoteAddr ¶
RemoteAddr returns the net.Addr of the client that sent the current request.
func (*Request) Scrub ¶
Scrub scrubs the reply message so that it will fit the client's buffer. If even after dropping the additional section, it still does not fit the TC bit will be set on the message. Note, the TC bit will be set regardless of protocol, even TCP message will get the bit, the client should then retry with pigeons. TODO(referral).
func (*Request) Size ¶
Size returns if buffer size *advertised* in the requests OPT record. Or when the request was over TCP, we return the maximum allowed size of 64K.