Documentation ¶
Index ¶
- Constants
- func BoolLogic(ctx context.Context, qCtx *handler.Context, fs []handler.Matcher, ...) (matched bool, err error)
- func ExchangeParallel(ctx context.Context, qCtx *handler.Context, upstreams []TrustedUpstream, ...) (r *dns.Msg, err error)
- func GenerateCertificate(dnsName string) (cert tls.Certificate, err error)
- func GetIPFromAddr(addr net.Addr) (ip net.IP)
- func GetMsgBuf(size int) []byte
- func GetMsgBufFor(m *dns.Msg) ([]byte, error)
- func GetMsgKey(m *dns.Msg) (string, error)
- func GetTimer(t time.Duration) *time.Timer
- func LoadCertPool(certs []string) (*x509.CertPool, error)
- func ParseAddr(addr string) (protocol, host string)
- func ReadMsgFromTCP(c io.Reader) (m *dns.Msg, n int, err error)
- func ReadMsgFromUDP(c io.Reader, bufSize int) (m *dns.Msg, n int, err error)
- func ReadUDPMsgFrom(c net.PacketConn, bufSize int) (m *dns.Msg, from net.Addr, n int, err error)
- func ReleaseMsgBuf(buf []byte)
- func ReleaseTimer(timer *time.Timer)
- func RemoveComment(s, symbol string) string
- func ResetAndDrainTimer(timer *time.Timer, d time.Duration)
- func SplitLine(s string) []string
- func TryAddPort(host string, port uint16) string
- func WriteMsgToTCP(c io.Writer, m *dns.Msg) (n int, err error)
- func WriteMsgToUDP(c io.Writer, m *dns.Msg) (n int, err error)
- func WriteRawMsgToTCP(c io.Writer, b []byte) (n int, err error)
- func WriteRawMsgToUDP(c io.Writer, b []byte) (n int, err error)
- func WriteUDPMsgTo(m *dns.Msg, c net.PacketConn, to net.Addr) (n int, err error)
- type Allocator
- type ExchangeSingleFlightGroup
- type LoadOnceCache
- type NetAddr
- type TrustedUpstream
Constants ¶
const ( IPv4UdpMaxPayload = 1472 // MTU 1500 - 20 IPv4 header - 8 udp header IPv6UdpMaxPayload = 1452 // MTU 1500 - 40 IPv6 header - 8 udp header )
Variables ¶
This section is empty.
Functions ¶
func ExchangeParallel ¶ added in v0.25.2
func GenerateCertificate ¶ added in v0.21.0
func GenerateCertificate(dnsName string) (cert tls.Certificate, err error)
GenerateCertificate generates a ecdsa certificate with given dnsName. This should only use in test.
func GetIPFromAddr ¶ added in v0.15.0
GetIPFromAddr returns net.IP from net.Addr. Will return nil if no ip address can be parsed.
func LoadCertPool ¶ added in v0.21.0
LoadCertPool reads and loads certificates in certs.
func ReadMsgFromTCP ¶
ReadMsgFromTCP reads msg from a tcp connection. n represents how many bytes are read from c.
func ReadUDPMsgFrom ¶
func ReleaseMsgBuf ¶
func ReleaseMsgBuf(buf []byte)
func ReleaseTimer ¶
func RemoveComment ¶ added in v0.21.0
RemoveComment removes comment after "symbol".
func TryAddPort ¶ added in v0.15.0
TryAddPort add port to host if host does not has an port suffix.
func WriteMsgToTCP ¶
WriteMsgToTCP writes m to c. n represents how many bytes are wrote to c. This includes 2 bytes tcp header.
func WriteRawMsgToTCP ¶
WriteRawMsgToTCP writes b to c. n represents how many bytes are wrote to c. This includes 2 bytes tcp header.
func WriteUDPMsgTo ¶
Types ¶
type Allocator ¶
type Allocator struct {
// contains filtered or unexported fields
}
func NewAllocator ¶
func NewAllocator() *Allocator
NewAllocator initiates a []byte allocator for dns.Msg less than 65536 bytes, the waste(memory fragmentation) of space allocation is guaranteed to be no more than 50%.
type ExchangeSingleFlightGroup ¶ added in v0.21.0
type ExchangeSingleFlightGroup struct {
singleflight.Group
}
type LoadOnceCache ¶
type LoadOnceCache struct {
// contains filtered or unexported fields
}
func NewCache ¶
func NewCache() *LoadOnceCache
func (*LoadOnceCache) Load ¶
func (c *LoadOnceCache) Load(key string) (interface{}, bool)
func (*LoadOnceCache) LoadFromCacheOrRawDisk ¶
func (c *LoadOnceCache) LoadFromCacheOrRawDisk(file string) (interface{}, []byte, error)
func (*LoadOnceCache) Put ¶
func (c *LoadOnceCache) Put(key string, data interface{}, ttl time.Duration)
func (*LoadOnceCache) Remove ¶
func (c *LoadOnceCache) Remove(key string)
type NetAddr ¶ added in v0.17.1
type NetAddr struct {
// contains filtered or unexported fields
}
NetAddr implements net.Addr interface.