resolver

package
v0.0.0-...-5abfbfe Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFatal    = errors.New("resolver: fatal error")
	ErrNoAnswer = errors.New("resolver: no answer")
)

Functions

This section is empty.

Types

type ForwardingResolver

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

func NewForwardingResolver

func NewForwardingResolver(cfg config.ResolverOptions, c cache.Cache, l *logger.Logger) *ForwardingResolver

NewForwardingResolver returns a new forwarding resolver

func (*ForwardingResolver) Lookup

func (r *ForwardingResolver) Lookup(name string, class, t uint16) (Result, error)

func (*ForwardingResolver) LookupInCache

func (r *ForwardingResolver) LookupInCache(name string, class, t uint16) ([]rr.RR, bool)

LookupInCache is a convenience function which abstracts the lookup of a domain name in the cache

func (*ForwardingResolver) Refresh

func (r *ForwardingResolver) Refresh(name string, class, t uint16)

func (*ForwardingResolver) Resolve

func (r *ForwardingResolver) Resolve(message *dns.Message) (Result, error)

Resolve resolves a query by forwarding it to the upstream DNS server

func (*ForwardingResolver) ResolveRaw

func (r *ForwardingResolver) ResolveRaw(name string, class, t uint16) (Result, error)

type IterativeResolver

type IterativeResolver struct {
	// Client is a DNS client which sends queries to
	// external DNS servers
	Client client.Client

	Cache cache.Cache
}

func NewIterativeResolver

func NewIterativeResolver() *IterativeResolver

NewIterativeResolver returns a new iterative resolver

func (*IterativeResolver) Lookup

func (r *IterativeResolver) Lookup(name string, class, t uint16) (rr.RR, error)

func (*IterativeResolver) Refresh

func (r *IterativeResolver) Refresh(name string, class, t uint16)

func (*IterativeResolver) Resolve

func (r *IterativeResolver) Resolve(name string, class, t uint16) (rr.RR, error)

Resolve resolves a query by answering with a DNS server which is closer to the quried name

func (*IterativeResolver) ResolveQuestion

func (r *IterativeResolver) ResolveQuestion(question dns.Question) (rr.RR, error)

type RecursiveResolver

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

func NewRecursiveResolver

func NewRecursiveResolver(cfg config.ResolverOptions, c cache.Cache, l *logger.Logger) *RecursiveResolver

NewRecursiveResolver returns a new recursive resolver

func (*RecursiveResolver) FindGlue

func (r *RecursiveResolver) FindGlue(response *dns.Message, class, t uint16) (netip.Addr, error)

NOTE (Techassi): Should we be able to return multiple IPs here? FindGlue tries to find glue records for provided authoriative DNS servers

func (*RecursiveResolver) Hint

func (r *RecursiveResolver) Hint() netip.Addr

Hint returns a root hint

func (*RecursiveResolver) Lookup

func (r *RecursiveResolver) Lookup(name string, class, t uint16) (Result, error)

func (*RecursiveResolver) LookupInCache

func (r *RecursiveResolver) LookupInCache(name string, class, t uint16) ([]rr.RR, bool)

LookupInCache is a convenience function which abstracts the lookup of a domain name in the cache

func (*RecursiveResolver) Refresh

func (r *RecursiveResolver) Refresh(name string, class, t uint16)

func (*RecursiveResolver) Resolve

func (r *RecursiveResolver) Resolve(message *dns.Message) (Result, error)

Resolve recursivly resolves a query

func (*RecursiveResolver) ResolveRaw

func (r *RecursiveResolver) ResolveRaw(name string, class, t uint16) (Result, error)

TODO (Techassi): We have duplicate code. That's meh... Fix it future me!

type ResolveChain

type ResolveChain struct {
	QueryName string
}

TODO (Techassi): Figure this out

type Resolver

type Resolver interface {
	// Resolve resolves a query of a DNS message by first looking up the
	// request in the cache and if not found will continue to lookup via
	// the Lookup function
	Resolve(*dns.Message) (Result, error)

	ResolveRaw(string, uint16, uint16) (Result, error)

	// Lookup looks up a query either iteratively, recursively or by
	// forwarding it to a upstream DNS server
	Lookup(string, uint16, uint16) (Result, error)

	// Refresh refreshes a cached record by looking it up again
	Refresh(string, uint16, uint16)
}

Resolver describes a DNS resolver which can resolve DNS queries (of unknown / external names) iteratively or recursively

type Result

type Result struct {
	Answer     []rr.RR
	Authority  []rr.RR
	Additional []rr.RR
}

func NewResult

func NewResult(message *dns.Message) Result

Jump to

Keyboard shortcuts

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