resolve

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2025 License: LGPL-2.1 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var FixedResponse = transport.FixedResponse
View Source
var SystemClient = &TransportClient{
	HeadlessClient: NewHeadlessClient(NewCache()),
	Transport:      transport.NewLocalTransport(nil),
}

Functions

func CalculateTTL

func CalculateTTL(message *dns.Msg) (ttl uint32)

func EdnsBackwards

func EdnsBackwards(req *dns.Msg, resp *dns.Msg) *dns.Msg

func NewDNSRecordError

func NewDNSRecordError(rcode int) error

func OverwriteTTL

func OverwriteTTL(message *dns.Msg, ttl uint32)

Types

type Cache

type Cache interface {
	LoadOrStore(ctx context.Context, message *dns.Msg,
		constructor func(ctx context.Context, message *dns.Msg) (*dns.Msg, error)) (*dns.Msg, error)
	Store(message *dns.Msg) bool
	Clear() int
}

func NewCache

func NewCache() Cache

func NewCacheSize

func NewCacheSize(opt CacheOptions) (Cache, error)

type CacheEntry

type CacheEntry struct {
	Expire  time.Time
	Message *dns.Msg
}

type CacheOptions

type CacheOptions struct {
	Size   uint32
	MaxTTL uint32
	MinTTL uint32
}

type Client

type Client interface {
	Lookup(ctx context.Context, fqdn string, strategy meta.Strategy) ([]netip.Addr, error)
	Exchange(ctx context.Context, message *dns.Msg) (response *dns.Msg, err error)
}

type Dialer

type Dialer struct {
	// contains filtered or unexported fields
}

func NewResolvDialerWithStrategy added in v0.0.3

func NewResolvDialerWithStrategy(underlay dialer.Dialer, client Client, strategy meta.Strategy) *Dialer

func NewResolveDialer

func NewResolveDialer(underlay dialer.Dialer, client Client) *Dialer

func (*Dialer) DialContext

func (d *Dialer) DialContext(ctx context.Context, network meta.Network, address addrs.Socksaddr) (net.Conn, error)

func (*Dialer) ListenPacket

func (d *Dialer) ListenPacket(ctx context.Context, address addrs.Socksaddr) (net.PacketConn, error)

type HeadlessClient added in v0.0.3

type HeadlessClient struct {
	// contains filtered or unexported fields
}

func NewHeadlessClient added in v0.0.3

func NewHeadlessClient(cache Cache) *HeadlessClient

func (*HeadlessClient) CleanCache added in v0.0.3

func (c *HeadlessClient) CleanCache() int

func (*HeadlessClient) Close added in v0.0.3

func (c *HeadlessClient) Close() error

func (*HeadlessClient) ExchangeTransport added in v0.0.3

func (c *HeadlessClient) ExchangeTransport(ctx context.Context, trans transport.Transport, message *dns.Msg) (response *dns.Msg, err error)

func (*HeadlessClient) LookupTransport added in v0.0.3

func (c *HeadlessClient) LookupTransport(ctx context.Context, trans transport.Transport, fqdn string,
	strategy meta.Strategy,
) (addresses []netip.Addr, err error)

type TransportClient added in v0.0.3

type TransportClient struct {
	*HeadlessClient

	Transport transport.Transport
}

func (*TransportClient) Close added in v0.0.3

func (c *TransportClient) Close() error

func (*TransportClient) Exchange added in v0.0.3

func (c *TransportClient) Exchange(ctx context.Context, message *dns.Msg) (response *dns.Msg, err error)

func (*TransportClient) Lookup added in v0.0.3

func (c *TransportClient) Lookup(ctx context.Context, fqdn string, strategy meta.Strategy) (addresses []netip.Addr, err error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL