dns

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2018 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Provider

type Provider struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Provider is a store for DNS resolved addresses. It provides a way to resolve addresses and obtain them.

func NewProvider

func NewProvider(resolver Resolver, logger log.Logger) *Provider

NewProvider returns a new empty Provider. If resolver is nil, the default resolver will be used.

func NewProviderWithResolver

func NewProviderWithResolver(logger log.Logger) *Provider

NewProviderWithResolver returns a new empty provider with a default resolver.

func (*Provider) Addresses

func (p *Provider) Addresses() []string

Addresses returns the latest addresses present in the Provider.

func (*Provider) Resolve

func (p *Provider) Resolve(ctx context.Context, addrs []string) error

Resolve stores a list of provided addresses or their DNS records if requested. Addresses prefixed with `dns+` or `dnssrv+` will be resolved through respective DNS lookup (A/AAAA or SRV). defaultPort is used for non-SRV records when a port is not supplied.

type Resolver

type Resolver interface {
	// Resolve performs a DNS lookup and returns a list of records.
	// name is the domain name to be resolved.
	// qtype is the query type. Accepted values are `dns` for A/AAAA lookup and `dnssrv` for SRV lookup.
	// If qtype is `dns`, the domain name to be resolved requires a port or an error will be returned.
	// TODO(ivan): probably use custom type or an enum for qtype.
	Resolve(ctx context.Context, name string, qtype string) ([]string, error)
}

func NewResolver

func NewResolver(resolver *net.Resolver) Resolver

NewResolver provides a resolver with a specific net.Resolver. If resolver is nil, the default resolver will be used.

Jump to

Keyboard shortcuts

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