Documentation ¶
Overview ¶
Package request abstracts a client's request so that all plugin 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 // Optional lowercased zone of this query. Zone string // contains filtered or unexported fields }
Request contains some connection state and is useful in plugin.
func (*Request) Class ¶
Class returns the class of the question in the request. If the request is malformed the empty string is returned.
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. If the request is malformed the root zone is returned.
func (*Request) NewWithQuestion ¶
NewWithQuestion returns a new request based on the old, but with a new question section in the request.
func (*Request) QClass ¶
QClass returns the class of the question in the request. If the request is malformed 0 returned.
func (*Request) QName ¶
QName returns the name of the question in the request. If the request is malformed the root zone is returned.
func (*Request) QType ¶
QType returns the type of the question as an uint16. If the request is malformed 0 is returned.
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 does not fit, the answer will be cleared and 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.