Documentation
¶
Index ¶
- Variables
- type ForwardingResolver
- func (r *ForwardingResolver) Lookup(name string, class, t uint16) (Result, error)
- func (r *ForwardingResolver) LookupInCache(name string, class, t uint16) ([]rr.RR, bool)
- func (r *ForwardingResolver) Refresh(name string, class, t uint16)
- func (r *ForwardingResolver) Resolve(message *dns.Message) (Result, error)
- func (r *ForwardingResolver) ResolveRaw(name string, class, t uint16) (Result, error)
- type IterativeResolver
- func (r *IterativeResolver) Lookup(name string, class, t uint16) (rr.RR, error)
- func (r *IterativeResolver) Refresh(name string, class, t uint16)
- func (r *IterativeResolver) Resolve(name string, class, t uint16) (rr.RR, error)
- func (r *IterativeResolver) ResolveQuestion(question dns.Question) (rr.RR, error)
- type RecursiveResolver
- func (r *RecursiveResolver) FindGlue(response *dns.Message, class, t uint16) (netip.Addr, error)
- func (r *RecursiveResolver) Hint() netip.Addr
- func (r *RecursiveResolver) Lookup(name string, class, t uint16) (Result, error)
- func (r *RecursiveResolver) LookupInCache(name string, class, t uint16) ([]rr.RR, bool)
- func (r *RecursiveResolver) Refresh(name string, class, t uint16)
- func (r *RecursiveResolver) Resolve(message *dns.Message) (Result, error)
- func (r *RecursiveResolver) ResolveRaw(name string, class, t uint16) (Result, error)
- type ResolveChain
- type Resolver
- type Result
Constants ¶
This section is empty.
Variables ¶
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 ¶
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) Refresh ¶
func (r *IterativeResolver) Refresh(name string, class, t uint16)
func (*IterativeResolver) Resolve ¶
Resolve resolves a query by answering with a DNS server which is closer to the quried name
func (*IterativeResolver) ResolveQuestion ¶
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 ¶
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 ¶
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 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