Documentation ¶
Overview ¶
Package recursive implements a simple recursive DNS resolver.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrMaxDepth is returned when recursive resolving exceeds the maximum // depth limit for this package. ErrMaxDepth = fmt.Errorf("exceeded max depth %d when resolving", maxDepth) // ErrAuthoritativeNoResponses is the error returned when an // authoritative nameserver indicates that there are no responses to // the given query. ErrAuthoritativeNoResponses = errors.New("authoritative server returned no responses") // ErrNoResponses is returned when our resolution process completes // with no valid responses from any nameserver, but no authoritative // server explicitly returned NXDOMAIN. ErrNoResponses = errors.New("no responses to query") )
Functions ¶
This section is empty.
Types ¶
type Resolver ¶
type Resolver struct { // Dialer is used to create outbound connections. If nil, a zero // net.Dialer will be used instead. Dialer netns.Dialer // Logf is the logging function to use; if none is specified, then logs // will be dropped. Logf logger.Logf // NoIPv6, if set, will prevent this package from querying for AAAA // records and will avoid contacting nameservers over IPv6. NoIPv6 bool // contains filtered or unexported fields }
Resolver is a recursive DNS resolver that is designed for looking up A and AAAA records.
func (*Resolver) Resolve ¶
func (r *Resolver) Resolve(ctx context.Context, name string) (addrs []netip.Addr, minTTL time.Duration, err error)
Resolve will perform a recursive DNS resolution for the provided name, starting at a randomly-chosen root DNS server, and return the A and AAAA responses as a slice of netip.Addrs along with the minimum TTL for the returned records.
Click to show internal directories.
Click to hide internal directories.