dns

package
v3.23.2+incompatible Latest Latest
Warning

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

Go to latest
Published: May 28, 2018 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package dns is an implementation of core.DNS feature.

Index

Constants

View Source
const (
	QueryTimeout = time.Second * 8
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ARecord

type ARecord struct {
	IPs    []net.IP
	Expire time.Time
}

type Config

type Config struct {
	// Nameservers used by this DNS. Only traditional UDP servers are support at the moment.
	// A special value 'localhost' as a domain address can be set to use DNS on local system.
	NameServers []*net.Endpoint `protobuf:"bytes,1,rep,name=NameServers" json:"NameServers,omitempty"`
	// Static hosts. Domain to IP.
	Hosts                map[string]*net.IPOrDomain `` /* 130-byte string literal not displayed */
	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
	XXX_unrecognized     []byte                     `json:"-"`
	XXX_sizecache        int32                      `json:"-"`
}

func (*Config) Descriptor

func (*Config) Descriptor() ([]byte, []int)

func (*Config) GetHosts

func (m *Config) GetHosts() map[string]*net.IPOrDomain

func (*Config) GetInternalHosts

func (c *Config) GetInternalHosts() map[string]net.IP

func (*Config) GetNameServers

func (m *Config) GetNameServers() []*net.Endpoint

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) Reset

func (m *Config) Reset()

func (*Config) String

func (m *Config) String() string

func (*Config) XXX_DiscardUnknown

func (m *Config) XXX_DiscardUnknown()

func (*Config) XXX_Marshal

func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Config) XXX_Merge

func (dst *Config) XXX_Merge(src proto.Message)

func (*Config) XXX_Size

func (m *Config) XXX_Size() int

func (*Config) XXX_Unmarshal

func (m *Config) XXX_Unmarshal(b []byte) error

type DomainRecord

type DomainRecord struct {
	IP         []net.IP
	Expire     time.Time
	LastAccess time.Time
}

func (*DomainRecord) Expired

func (r *DomainRecord) Expired() bool

type LocalNameServer

type LocalNameServer struct {
}

func (*LocalNameServer) QueryA

func (*LocalNameServer) QueryA(domain string) <-chan *ARecord

type NameServer

type NameServer interface {
	QueryA(domain string) <-chan *ARecord
}

type PendingRequest

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

type Server

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

func New

func New(ctx context.Context, config *Config) (*Server, error)

func (*Server) Close

func (s *Server) Close() error

Close implements common.Closable.

func (*Server) GetCached

func (s *Server) GetCached(domain string) []net.IP

func (*Server) LookupIP

func (s *Server) LookupIP(domain string) ([]net.IP, error)

func (*Server) Start

func (s *Server) Start() error

Start implements common.Runnable.

type UDPNameServer

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

func NewUDPNameServer

func NewUDPNameServer(address net.Destination, dispatcher core.Dispatcher) *UDPNameServer

func (*UDPNameServer) AssignUnusedID

func (s *UDPNameServer) AssignUnusedID(response chan<- *ARecord) uint16

func (*UDPNameServer) Cleanup

func (s *UDPNameServer) Cleanup() error

func (*UDPNameServer) HandleResponse

func (s *UDPNameServer) HandleResponse(payload *buf.Buffer)

func (*UDPNameServer) QueryA

func (s *UDPNameServer) QueryA(domain string) <-chan *ARecord

Jump to

Keyboard shortcuts

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