Documentation
¶
Index ¶
- Constants
- Variables
- func AcquireBuf(size uint16) []byte
- func AcquireMsg() *dns.Msg
- func NewNetworkError(err error) *util.EDEError
- func NewNoReachableAuthorityError(message string) *util.EDEError
- func NoReachableAuthAtZone(zone string) *util.EDEError
- func ReleaseBuf(buf []byte)
- func ReleaseConn(co *Conn)
- func ReleaseMsg(req *dns.Msg)
- func SetEDNSKeepalive(msg *dns.Msg, timeout uint16)
- type Conn
- type DNSHandler
- type Resolver
- type SingleflightWrapper
- type State
- type TCPConnPool
- type Tombstone
- type Tombstones
- type TrustAnchor
- type TrustAnchors
Constants ¶
const ( DNSKEYFlagKSK = 0x0001 DNSKEYFlagRevoke = 0x0080 )
Variables ¶
var ErrQuestion = errors.New("dns: response question did not match request")
ErrQuestion is returned by Conn.Exchange when the response's question section does not match the outstanding request. Accepting a mismatched question lets a malicious upstream plant a cache entry under an unrelated name (issue #469).
Functions ¶
func AcquireBuf ¶ added in v1.0.0
AcquireBuf returns a buffer from the appropriate pool.
func AcquireMsg ¶ added in v1.0.0
AcquireMsg returns an empty msg from pool.
func NewNetworkError ¶ added in v1.5.1
NewNetworkError creates a network error with EDE information.
func NewNoReachableAuthorityError ¶ added in v1.5.1
NewNoReachableAuthorityError creates an error for unreachable servers.
func NoReachableAuthAtZone ¶ added in v1.5.1
NoReachableAuthAtZone creates an error with zone context.
func ReleaseBuf ¶ added in v1.0.0
func ReleaseBuf(buf []byte)
ReleaseBuf returns buf to the appropriate pool.
func SetEDNSKeepalive ¶ added in v1.5.0
SetEDNSKeepalive adds EDNS-Keepalive option to a message.
Types ¶
type Conn ¶ added in v1.0.0
type Conn struct {
net.Conn // a net.Conn holding the connection
UDPSize uint16 // minimum receive buffer for UDP messages
}
Conn A Conn represents a connection to a DNS server.
func AcquireConn ¶ added in v1.0.0
func AcquireConn() *Conn
AcquireConn returns an empty conn from pool.
func (*Conn) ReadMsg ¶ added in v1.0.0
(*Conn).ReadMsg readMsg reads a message from the connection co. If the received message contains a TSIG record the transaction signature is verified. This method always tries to return the message, however if an error is returned there are no guarantees that the returned message is a valid representation of the packet read.
type DNSHandler ¶
type DNSHandler struct {
// contains filtered or unexported fields
}
DNSHandler type.
func (*DNSHandler) Name ¶
func (h *DNSHandler) Name() string
(*DNSHandler).Name name return middleware name.
func (*DNSHandler) Purge ¶ added in v1.6.4
func (h *DNSHandler) Purge(q dns.Question)
(*DNSHandler).Purge removes the nameserver cache entry for q under both CD=true and CD=false. Only TypeNS is acted on — purging A/AAAA or other record types is the cache middleware's concern, not the resolver's NS cache. Implements middleware.Purger so the api purge endpoint reaches both stores.
func (*DNSHandler) ServeDNS ¶
func (h *DNSHandler) ServeDNS(ctx context.Context, ch *middleware.Chain)
(*DNSHandler).ServeDNS serveDNS implements the Handle interface.
func (*DNSHandler) SetQueryer ¶ added in v1.6.4
func (h *DNSHandler) SetQueryer(q middleware.Queryer)
(*DNSHandler).SetQueryer installs the sub-pipeline runner used for policy-aware internal lookups (NS A/AAAA, DNAME target). Auto-wired during middleware.Setup via middleware.QueryerSetter.
func (*DNSHandler) SetStore ¶ added in v1.6.4
func (h *DNSHandler) SetStore(s middleware.Store)
(*DNSHandler).SetStore installs the cache store used by subQuery for internal DNSSEC record lookups. Auto-wired during middleware.Setup via middleware.StoreSetter.
func (*DNSHandler) Stop ¶ added in v1.5.0
func (h *DNSHandler) Stop()
(*DNSHandler).Stop stop gracefully shuts down the resolver.
type Resolver ¶
Resolver type.
func (*Resolver) Resolve ¶
func (r *Resolver) Resolve(ctx context.Context, req *dns.Msg, servers *authority.Servers, root bool, depth int, level int, nomin bool, parentDS []dns.RR, extra ...bool) (*dns.Msg, error)
(*Resolver).Resolve resolve starts a DNS resolution - public interface with old signature for compatibility.
type SingleflightWrapper ¶ added in v1.5.1
type SingleflightWrapper struct {
// contains filtered or unexported fields
}
SingleflightWrapper wraps singleflight.Group with timeout tracking.
func NewSingleflightWrapper ¶ added in v1.5.1
func NewSingleflightWrapper() *SingleflightWrapper
NewSingleflightWrapper creates a new wrapper with periodic cleanup.
func (*SingleflightWrapper) DoChan ¶ added in v1.5.1
func (w *SingleflightWrapper) DoChan(key string, fn func() (any, error)) <-chan singleflight.Result
(*SingleflightWrapper).DoChan doChan wraps singleflight.DoChan with timeout tracking.
func (*SingleflightWrapper) Forget ¶ added in v1.5.1
func (w *SingleflightWrapper) Forget(key string)
(*SingleflightWrapper).Forget forget wraps singleflight.Forget and cleans up tracking.
func (*SingleflightWrapper) TimedDoChan ¶ added in v1.5.1
func (w *SingleflightWrapper) TimedDoChan(ctx context.Context, key string, fn func() (any, error)) (val any, shared bool, err error)
(*SingleflightWrapper).TimedDoChan timedDoChan executes a function with built-in timeout handling. The shared return reflects singleflight.Result.Shared — true when the caller received a value that was computed by another goroutine and may therefore be concurrently observed. Callers that mutate or rewrite the value (e.g. set a new message ID) should defensive-copy only when shared is true; uncontended callers can return the value directly.
type State ¶ added in v1.3.3
type State int
State represents the state of a trust anchor in RFC 5011 lifecycle.
type TCPConnPool ¶ added in v1.5.0
type TCPConnPool struct {
// contains filtered or unexported fields
}
TCPConnPool manages persistent TCP connections to DNS servers.
func NewTCPConnPool ¶ added in v1.5.0
func NewTCPConnPool(rootTimeout, tldTimeout time.Duration, maxConns int) *TCPConnPool
NewTCPConnPool creates a new TCP connection pool.
func (*TCPConnPool) Close ¶ added in v1.5.0
func (p *TCPConnPool) Close()
(*TCPConnPool).Close close closes all connections in the pool.
func (*TCPConnPool) Get ¶ added in v1.5.0
func (p *TCPConnPool) Get(server string, isRoot, isTLD bool) *dns.Conn
(*TCPConnPool).Get get retrieves a connection for the given server.
func (*TCPConnPool) Stats ¶ added in v1.5.0
func (p *TCPConnPool) Stats() (hits, misses int64, active int)
(*TCPConnPool).Stats stats returns pool statistics.
type Tombstone ¶ added in v1.6.4
Tombstone records a DNSKEY whose revocation we have observed. Per RFC 5011 §2.1 revocation is "immediate and permanent", so these entries live forever.
type Tombstones ¶ added in v1.6.4
Tombstones are keyed by DNSKEY material fingerprint — never by key tag. Tag-keyed storage would let a future KSK with a colliding 16-bit tag suppress itself against an unrelated tombstone.
type TrustAnchor ¶ added in v1.3.3
TrustAnchor holds a DNSSEC trust anchor with its state and metadata.
type TrustAnchors ¶ added in v1.3.3
type TrustAnchors map[uint16]*TrustAnchor
TrustAnchors maps key tags to their trust anchor data.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package dnssec implements pure DNSSEC verification primitives: RRSIG/DS validation, NSEC and NSEC3 denial-of-existence proofs, and the EDE-coded sentinel errors they return.
|
Package dnssec implements pure DNSSEC verification primitives: RRSIG/DS validation, NSEC and NSEC3 denial-of-existence proofs, and the EDE-coded sentinel errors they return. |