Documentation ¶
Index ¶
Constants ¶
const MinCacheCapacity = 1000
const NameCollision = "127.0.53.53"
ICANN specifies that DNS servers should return the special value 127.0.53.53 for A record queries of TLDs that have recently entered the root zone, that have a high likelyhood of colliding with private DNS names. The record returned is a notice to network administrators to adjust their DNS configuration. https://www.icann.org/resources/pages/name-collision-2013-12-06-en#127.0.53.53
Variables ¶
var ( Timeout = 2000 * time.Millisecond TypicalResponseTime = 100 * time.Millisecond MaxRecursion = 10 MaxNameservers = 2 MaxIPs = 2 )
DNS Resolution configuration.
var ( NXDOMAIN = fmt.Errorf("NXDOMAIN") ErrMaxRecursion = fmt.Errorf("maximum recursion depth reached: %d", MaxRecursion) ErrMaxIPs = fmt.Errorf("maximum name server IPs queried: %d", MaxIPs) ErrNoARecords = fmt.Errorf("no A records found for name server") ErrNoResponse = fmt.Errorf("no responses received") ErrTimeout = fmt.Errorf("timeout expired") // TODO: Timeouter interface? e.g. func (e) Timeout() bool { return true } )
Resolver errors.
var DebugLogger io.Writer
DebugLogger will receive writes of DNS resolution traces if not nil.
Functions ¶
This section is empty.
Types ¶
type ContextDialer ¶
type ContextDialer interface {
DialContext(ctx context.Context, network, addr string) (net.Conn, error)
}
A ContextDialer implements the DialContext method, e.g. net.Dialer.
type Option ¶
type Option func(*Resolver)
Option specifies a configuration option for a Resolver.
func WithExpiry ¶
func WithExpiry() Option
WithExpiry specifies that the Resolver will delete stale cache entries.
func WithTCPRetry ¶
func WithTCPRetry() Option
WithTCPRetry specifies that requests should be retried with TCP if responses are truncated. The retry must still complete within the timeout or context deadline.
func WithTimeout ¶
WithTimeout specifies the timeout for network operations. The default value is Timeout.
type Resolver ¶
type Resolver struct {
// contains filtered or unexported fields
}
Resolver implements a primitive, non-recursive, caching DNS resolver.
func New ¶
New initializes a Resolver with the specified cache size. Deprecated: use NewResolver with Option(s) instead.
func NewExpiring ¶
NewExpiring initializes an expiring Resolver with the specified cache size. Deprecated: use NewResolver with Option(s) instead.
func NewExpiringWithTimeout ¶
NewExpiringWithTimeout initializes an expiring Resolved with the specified cache size and timeout. Deprecated: use NewResolver with Option(s) instead.
func NewResolver ¶
NewResolver returns an initialized Resolver with options. By default, the returned Resolver will have cache capacity 0 and the default network timeout (Timeout).
func NewWithTimeout ¶
NewWithTimeout initializes a Resolver with the specified cache size and timeout. Deprecated: use NewResolver with Option(s) instead.
func (*Resolver) Resolve ¶
Resolve calls ResolveErr to find DNS records of type qtype for the domain qname. For nonexistent domains (NXDOMAIN), it will return an empty, non-nil slice.
func (*Resolver) ResolveContext ¶
ResolveContext finds DNS records of type qtype for the domain qname using the supplied context. Requests may time out earlier if timeout is shorter than a deadline set in ctx. For nonexistent domains, it will return an NXDOMAIN error. Specify an empty string in qtype to receive any DNS records found (currently A, AAAA, NS, CNAME, SOA, and TXT).
func (*Resolver) ResolveCtx ¶
ResolveCtx finds DNS records of type qtype for the domain qname using the supplied context. Requests may time out earlier if timeout is shorter than a deadline set in ctx. For nonexistent domains, it will return an NXDOMAIN error. Specify an empty string in qtype to receive any DNS records found (currently A, AAAA, NS, CNAME, SOA, and TXT). Deprecated: use ResolveContext.
func (*Resolver) ResolveErr ¶
ResolveErr finds DNS records of type qtype for the domain qname. For nonexistent domains, it will return an NXDOMAIN error. Specify an empty string in qtype to receive any DNS records found (currently A, AAAA, NS, CNAME, SOA, and TXT).