mirror of
https://github.com/coredns/coredns.git
synced 2026-07-18 21:50:11 -04:00
25 lines
565 B
Go
25 lines
565 B
Go
|
|
package dnsutil
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/binary"
|
||
|
|
"errors"
|
||
|
|
|
||
|
|
"github.com/miekg/dns"
|
||
|
|
)
|
||
|
|
|
||
|
|
var errRequestRejected = errors.New("dns request rejected")
|
||
|
|
|
||
|
|
// UnpackRequest unpacks a request after applying the default miekg/dns request policy.
|
||
|
|
func UnpackRequest(msg []byte) (*dns.Msg, error) {
|
||
|
|
var header dns.Header
|
||
|
|
if _, err := binary.Decode(msg, binary.BigEndian, &header); err != nil {
|
||
|
|
return nil, dns.ErrBuf
|
||
|
|
}
|
||
|
|
if dns.DefaultMsgAcceptFunc(header) != dns.MsgAccept {
|
||
|
|
return nil, errRequestRejected
|
||
|
|
}
|
||
|
|
|
||
|
|
request := new(dns.Msg)
|
||
|
|
return request, request.Unpack(msg)
|
||
|
|
}
|