Categorygithub.com/miekg/dns
modulepackage
1.1.63
Repository: https://github.com/miekg/dns.git
Documentation: pkg.go.dev

# README

Build Status Code Coverage Go Report Card

Alternative (more granular) approach to a DNS library

Less is more.

Complete and usable DNS library. All Resource Records are supported, including the DNSSEC types. It follows a lean and mean philosophy. If there is stuff you should know as a DNS programmer there isn't a convenience function for it. Server side and client side programming is supported, i.e. you can build servers and resolvers with it.

We try to keep the "master" branch as sane as possible and at the bleeding edge of standards, avoiding breaking changes wherever reasonable. We support the last two versions of Go.

Goals

  • KISS;
  • Fast;
  • Small API. If it's easy to code in Go, don't make a function for it.

Users

A not-so-up-to-date-list-that-may-be-actually-current:

Send pull request if you want to be listed here.

Features

  • UDP/TCP queries, IPv4 and IPv6
  • RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported
  • Fast
  • Server side programming (mimicking the net/http package)
  • Client side programming
  • DNSSEC: signing, validating and key generation for DSA, RSA, ECDSA and Ed25519
  • EDNS0, NSID, Cookies
  • AXFR/IXFR
  • TSIG, SIG(0)
  • DNS over TLS (DoT): encrypted connection between client and server over TCP
  • DNS name compression

Have fun!

Miek Gieben - 2010-2012 - [email protected] DNS Authors 2012-

Building

This library uses Go modules and uses semantic versioning. Building is done with the go tool, so the following should work:

go get github.com/miekg/dns
go build github.com/miekg/dns

Examples

A short "how to use the API" is at the beginning of doc.go (this also will show when you call godoc github.com/miekg/dns).

Example programs can be found in the github.com/miekg/exdns repository.

Supported RFCs

all of them

  • 103{4,5} - DNS standard
  • 1183 - ISDN, X25 and other deprecated records
  • 1348 - NSAP record (removed the record)
  • 1982 - Serial Arithmetic
  • 1876 - LOC record
  • 1995 - IXFR
  • 1996 - DNS notify
  • 2136 - DNS Update (dynamic updates)
  • 2181 - RRset definition - there is no RRset type though, just []RR
  • 2537 - RSAMD5 DNS keys
  • 2065 - DNSSEC (updated in later RFCs)
  • 2671 - EDNS record
  • 2782 - SRV record
  • 2845 - TSIG record
  • 2915 - NAPTR record
  • 2929 - DNS IANA Considerations
  • 3110 - RSASHA1 DNS keys
  • 3123 - APL record
  • 3225 - DO bit (DNSSEC OK)
  • 340{1,2,3} - NAPTR record
  • 3445 - Limiting the scope of (DNS)KEY
  • 3596 - AAAA record
  • 3597 - Unknown RRs
  • 4025 - A Method for Storing IPsec Keying Material in DNS
  • 403{3,4,5} - DNSSEC + validation functions
  • 4255 - SSHFP record
  • 4343 - Case insensitivity
  • 4408 - SPF record
  • 4509 - SHA256 Hash in DS
  • 4592 - Wildcards in the DNS
  • 4635 - HMAC SHA TSIG
  • 4701 - DHCID
  • 4892 - id.server
  • 5001 - NSID
  • 5155 - NSEC3 record
  • 5205 - HIP record
  • 5702 - SHA2 in the DNS
  • 5936 - AXFR
  • 5966 - TCP implementation recommendations
  • 6605 - ECDSA
  • 6725 - IANA Registry Update
  • 6742 - ILNP DNS
  • 6840 - Clarifications and Implementation Notes for DNS Security
  • 6844 - CAA record
  • 6891 - EDNS0 update
  • 6895 - DNS IANA considerations
  • 6944 - DNSSEC DNSKEY Algorithm Status
  • 6975 - Algorithm Understanding in DNSSEC
  • 7043 - EUI48/EUI64 records
  • 7314 - DNS (EDNS) EXPIRE Option
  • 7477 - CSYNC RR
  • 7828 - edns-tcp-keepalive EDNS0 Option
  • 7553 - URI record
  • 7858 - DNS over TLS: Initiation and Performance Considerations
  • 7871 - EDNS0 Client Subnet
  • 7873 - Domain Name System (DNS) Cookies
  • 8080 - EdDSA for DNSSEC
  • 8499 - DNS Terminology
  • 8659 - DNS Certification Authority Authorization (CAA) Resource Record
  • 8777 - DNS Reverse IP Automatic Multicast Tunneling (AMT) Discovery
  • 8914 - Extended DNS Errors
  • 8976 - Message Digest for DNS Zones (ZONEMD RR)
  • 9460 - Service Binding and Parameter Specification via the DNS
  • 9461 - Service Binding Mapping for DNS Servers
  • 9462 - Discovery of Designated Resolvers

Loosely Based Upon

# Packages

Package dnsutil contains higher-level methods useful with the dns package.

# Functions

ActivateAndServe activates a server with a listener from systemd, l and p should not both be non-nil.
CanonicalName returns the domain name in canonical form.
CertificateToDANE converts a certificate to a hex string as used in the TLSA or SMIMEA records.
ClientConfigFromFile parses a resolv.conf(5) like file and returns a *ClientConfig.
ClientConfigFromReader works like ClientConfigFromFile but takes an io.Reader as argument.
CompareDomainName compares the names s1 and s2 and returns how many labels they have in common starting from the *right*.
Copy returns a new RR which is a deep-copy of r.
CountLabel counts the number of labels in the string s.
Dedup removes identical RRs from rrs.
Dial connects to the address on the named network.
DialTimeout acts like Dial but takes a timeout.
DialTimeoutWithTLS acts like DialWithTLS but takes a timeout.
DialWithTLS connects to the address on the named network with TLS.
Exchange performs a synchronous UDP query.
ExchangeConn performs a synchronous query.
ExchangeContext performs a synchronous UDP query, like Exchange.
Field returns the rdata field i as a string.
Fqdn return the fully qualified domain name from s.
Handle registers the handler with the given pattern in the DefaultServeMux.
HandleFailed returns a HandlerFunc that returns SERVFAIL for every request it gets.
HandleFunc registers the handler function with the given pattern in the DefaultServeMux.
HandleRemove deregisters the handle with the given pattern in the DefaultServeMux.
HashName hashes a string (label) according to RFC 5155.
IsDomainName checks if s is a valid domain name, it returns the number of labels and true, when a domain name is valid.
IsDuplicate checks of r1 and r2 are duplicates of each other, excluding the TTL.
IsFqdn checks if a domain name is fully qualified.
IsMsg sanity checks buf and returns an error if it isn't a valid DNS packet.
IsRRset reports whether a set of RRs is a valid RRset as defined by RFC 2181.
IsSubDomain checks if child is indeed a child of the parent.
Len returns the length (in octets) of the uncompressed RR in wire format.
ListenAndServe Starts a server on address and network specified Invoke handler for incoming queries.
ListenAndServeTLS acts like http.ListenAndServeTLS, more information in http://golang.org/pkg/net/http/#ListenAndServeTLS.
NewRR reads a string s and returns the first RR.
NewServeMux allocates and returns a new ServeMux.
NewZoneParser returns an RFC 1035 style zonefile parser that reads from r.
NextLabel returns the index of the start of the next label in the string s starting at offset.
NumField returns the number of rdata fields r has.
PackDomainName packs a domain name s into msg[off:].
PackRR packs a resource record rr into msg[off:].
PrevLabel returns the index of the label when starting from the right and jumping n labels to the left.
PrivateHandle registers a private resource record type.
PrivateHandleRemove removes definitions required to support private RR type.
ReadFromSessionUDP acts just like net.UDPConn.ReadFrom(), but returns a session object instead of a net.UDPAddr.
ReadRR reads the RR contained in r.
ReverseAddr returns the in-addr.arpa.
SMIMEAName returns the ownername of a SMIMEA resource record as per the format specified in RFC 'draft-ietf-dane-smime-12' Section 2 and 3.
Split splits a name s into its label indexes.
SplitDomainName splits a name string into it's labels.
StringToTime translates the RRSIG's incep.
TimeToString translates the RRSIG's incep.
TLSAName returns the ownername of a TLSA resource record as per the rules specified in RFC 6698, Section 3.
TsigGenerate fills out the TSIG record attached to the message.
TsigGenerateWithProvider is similar to TsigGenerate, but allows for a custom TsigProvider.
TsigVerify verifies the TSIG on a message.
TsigVerifyWithProvider is similar to TsigVerify, but allows for a custom TsigProvider.
UnpackDomainName unpacks a domain name into a string.
UnpackRR unpacks msg[off:] into an RR.
UnpackRRWithHeader unpacks the record type specific payload given an existing RR_Header.
WriteToSessionUDP acts just like net.UDPConn.WriteTo(), but uses a *SessionUDP instead of a net.Addr.

# Constants

Used in AMTRELAY https://datatracker.ietf.org/doc/html/rfc8777#section-4.2.3.
Used in AMTRELAY https://datatracker.ietf.org/doc/html/rfc8777#section-4.2.3.
Used in AMTRELAY https://datatracker.ietf.org/doc/html/rfc8777#section-4.2.3.
Used in AMTRELAY https://datatracker.ietf.org/doc/html/rfc8777#section-4.2.3.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Different Certificate Types, see RFC 4398, Section 2.1.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
valid Question.Qclass.
Wire constants and supported types.
DefaultMsgSize is the standard default for messages larger than 512 bytes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
EDNS0 Cookie.
DNSSEC Algorithm Understood.
DS Hash Understood.
EDNS0 extended DNS errors (See RFC 8914).
ENUM Source-URI draft: https://datatracker.ietf.org/doc/html/draft-kaplan-enum-source-uri-00.
EDNS0 expire.
long lived queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01.
End of range reserved for local/experimental use (See RFC 6891).
Beginning of range reserved for local/experimental use (See RFC 6891).
NSEC3 Hash Understood.
nsid (See RFC 5001).
EDNS0 padding (See RFC 7830).
client-subnet (See RFC 7871).
EDNS0 tcp keep alive (See RFC 7828).
update lease draft: http://files.dns-sd.org/draft-sekar-dns-ul.txt.
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
Extended DNS Error Codes (RFC 8914).
RFC 5933.
Deprecated: HmacMD5 is no longer supported.
HMAC hashing codes.
HMAC hashing codes.
HMAC hashing codes.
HMAC hashing codes.
HMAC hashing codes.
DNSSEC encryption algorithm codes.
Used in IPSEC https://datatracker.ietf.org/doc/html/rfc4025#section-2.3.
Used in IPSEC https://datatracker.ietf.org/doc/html/rfc4025#section-2.3.
Used in IPSEC https://datatracker.ietf.org/doc/html/rfc4025#section-2.3.
Used in IPSEC https://datatracker.ietf.org/doc/html/rfc4025#section-2.3.
Various constants used in the LOC RR.
Various constants used in the LOC RR.
RFC 1876, Section 2.
Various constants used in the LOC RR.
RFC 1876, Section 2.
MaxMsgSize is the largest possible DNS packet.
MinMsgSize is the minimal size of a DNS packet.
Accept the message.
Ignore the error and send nothing back.
Reject the message with a RcodeFormatError.
Reject the message with a RcodeNotImplemented.
Wire constants and supported types.
Wire constants and supported types.
Message Opcodes.
Wire constants and supported types.
Wire constants and supported types.
Private (experimental keys).
DNSSEC encryption algorithm codes.
BADALG - Algorithm not supported [TKEY].
BADCOOKIE - Bad/missing Server Cookie [DNS Cookies].
BADKEY - Key not recognized [TSIG].
BADMODE - Bad TKEY Mode [TKEY].
BADNAME - Duplicate key name [TKEY].
BADSIG - TSIG Signature Failure [TSIG] https://www.rfc-editor.org/rfc/rfc6895.html#section-2.3.
BADTIME - Signature out of time window [TSIG].
BADTRUNC - Bad Truncation [TSIG].
BADVERS - Bad OPT Version [EDNS0] https://www.rfc-editor.org/rfc/rfc6895.html#section-2.3.
FormErr - Format Error [DNS].
NXDomain - Non-Existent Domain [DNS].
NotAuth - Server Not Authoritative for zone [DNS Update].
NotImp - Not Implemented [DNS].
NotZone - Name not contained in zone [DNS Update/TSIG].
NXRRSet - RR Set that should exist does not [DNS Update].
Refused - Query Refused [DNS].
ServFail - Server Failure [DNS].
NoError - No Error [DNS].
YXDomain - Name Exists when it should not [DNS Update].
YXRRSet - RR Set Exists when it should not [DNS Update].
DNSKEY flag values.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSSEC encryption algorithm codes.
DNSKEY flag values.
RFC 4034.
RFC 4509.
Experimental.
Experimental.
Keys defined in rfc9460.
rfc9461 Section 5.
Keys defined in rfc9460.
Keys defined in rfc9460.
Keys defined in rfc9460.
Keys defined in rfc9460.
Keys defined in rfc9460.
rfc9540 Section 8.
Keys defined in rfc9460.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
valid Question.Qtype only.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
EDNS.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
Wire constants and supported types.
DNSKEY flag values.
Used in ZONEMD https://tools.ietf.org/html/rfc8976.
Used in ZONEMD https://tools.ietf.org/html/rfc8976.
Used in ZONEMD https://tools.ietf.org/html/rfc8976.

# Variables

AlgorithmToHash is a map of algorithm crypto hash IDs to crypto.Hash's.
AlgorithmToString is a map of algorithm IDs to algorithm names.
CertTypeToString converts the Cert Type to its string representation.
ClassToString is a maps Classes to strings for each CLASS wire type.
DefaultMsgAcceptFunc checks the request and will reject if: * isn't a request (don't respond in that case) * opcode isn't OpcodeQuery or OpcodeNotify * does not have exactly 1 question in the question section * has more than 1 RR in the Answer section * has more than 0 RRs in the Authority section * has more than 2 RRs in the Additional section.
DefaultServeMux is the default ServeMux used by Serve.
ErrAlg indicates an error with the (DNSSEC) algorithm.
ErrAuth indicates an error in the TSIG authentication.
ErrBuf indicates that the buffer used is too small for the message.
ErrConnEmpty indicates a connection is being used before it is initialized.
ErrExtendedRcode ...
ErrFqdn indicates that a domain name does not have a closing dot.
ErrId indicates there is a mismatch with the message's ID.
Errors defined in this package.
ErrKeyAlg indicates that the algorithm in the key is not valid.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
Errors defined in this package.
ErrSig indicates that a signature can not be cryptographically validated.
ErrSOA indicates that no SOA RR was seen when doing zone transfers.
ErrTime indicates a timing error in TSIG authentication.
ExtendedErrorCodeToString maps extended error info codes to a human readable description.
HashToString is a map of hash IDs to names.
Id by default returns a 16-bit random number to be used as a message id.
OpcodeToString maps Opcodes to strings.
RcodeToString maps Rcodes to strings.
StringToAlgorithm is the reverse of AlgorithmToString.
StringToCertType is the reverseof CertTypeToString.
StringToClass is the reverse of ClassToString, needed for string parsing.
StringToExtendedErrorCode is a map from human readable descriptions to extended error info codes.
StringToHash is a map of names to hash IDs.
StringToOpcode is a map of opcodes to strings.
StringToRcode is a map of rcodes to strings.
StringToType is the reverse of TypeToString, needed for string parsing.
TypeToRR is a map of constructors for each RR type.
TypeToString is a map of strings for each RR type.
Version is current version of this library.

# Structs

A RR.
AAAA RR.
AFSDB RR.
AMTRELAY RR.
ANY is a wild card record.
APL RR.
APLPrefix is an address prefix hold by an APL record.
AVC RR.
CAA RR.
CDNSKEY RR.
CDS RR.
CERT RR.
A Client defines parameters for a DNS client.
ClientConfig wraps the contents of the /etc/resolv.conf file.
CNAME RR.
A Conn represents a connection to a DNS server.
CSYNC RR.
DHCID RR.
DLV RR.
DNAME RR.
DNSKEY RR.
DS RR.
The EDNS0_COOKIE option is used to add a DNS Cookie to a message.
EDNS0_DAU implements the EDNS0 "DNSSEC Algorithm Understood" option.
EDNS0_DHU implements the EDNS0 "DS Hash Understood" option.
EDNS0_EDE option is used to return additional information about the cause of DNS errors.
The EDNS0_ESU option for ENUM Source-URI Extension.
EDNS0_EXPIRE implements the EDNS0 option as described in RFC 7314.
EDNS0_LLQ stands for Long Lived Queries: http://tools.ietf.org/html/draft-sekar-dns-llq-01 Implemented for completeness, as the EDNS0 type code is assigned.
The EDNS0_LOCAL option is used for local/experimental purposes.
EDNS0_N3U implements the EDNS0 "NSEC3 Hash Understood" option.
EDNS0_NSID option is used to retrieve a nameserver identifier.
EDNS0_PADDING option is used to add padding to a request/response.
EDNS0_SUBNET is the subnet option that is used to give the remote nameserver an idea of where the client lives.
EDNS0_TCP_KEEPALIVE is an EDNS0 option that instructs the server to keep the TCP connection alive.
The EDNS0_UL (Update Lease) (draft RFC) option is used to tell the server to set an expiration on an update RR.
EID RR.
Envelope is used when doing a zone transfer with a remote server.
Error represents a DNS error.
EUI48 RR.
EUI64 RR.
GID RR.
GPOS RR.
Header is the wire format for the DNS packet header.
HINFO RR.
HIP RR.
HTTPS RR.
IPSECKEY RR.
ISDN RR.
KEY RR.
KX RR.
L32 RR, See RFC 6742.
L64 RR, See RFC 6742.
LOC RR.
LP RR.
MB RR.
MD RR.
MF RR.
MG RR.
MINFO RR.
MR RR.
Msg contains the layout of a DNS message.
MsgHdr is a a manually-unpacked version of (id, bits).
MX RR.
NAPTR RR.
NID RR.
NIMLOC RR.
NINFO RR.
NS RR.
NSAPPTR RR.
NSEC RR.
NSEC3 RR.
NSEC3PARAM RR.
NULL RR.
NXNAME is a meta record.
NXT RR.
OPENPGPKEY RR.
OPT is the EDNS0 RR appended to messages to convey extra (meta) information.
ParseError is a parsing error.
PrivateRR represents an RR that uses a PrivateRdata user-defined type.
PTR RR.
PX RR.
Question holds a DNS question.
RFC3597 represents an unknown/generic RR.
RKEY RR.
RP RR.
RR_Header is the header all DNS resource records share.
RRSIG RR.
RT RR.
ServeMux is an DNS request multiplexer.
A Server defines parameters for running an DNS server.
SessionUDP holds the remote address and the associated out-of-band data.
SIG RR.
SMIMEA RR.
SOA RR.
SPF RR.
SRV RR.
SSHFP RR.
SVCB RR.
SVCBAlpn pair is used to list supported connection protocols.
SVCBDoHPath pair is used to indicate the URI template that the clients may use to construct a DNS over HTTPS URI.
SVCBECHConfig pair contains the ECHConfig structure defined in draft-ietf-tls-esni [RFC xxxx].
SVCBIPv4Hint pair suggests an IPv4 address which may be used to open connections if A and AAAA record responses for SVCB's Target domain haven't been received.
SVCBIPv6Hint pair suggests an IPv6 address which may be used to open connections if A and AAAA record responses for SVCB's Target domain haven't been received.
SVCBLocal pair is intended for experimental/private use.
SVCBMandatory pair adds to required keys that must be interpreted for the RR to be functional.
SVCBNoDefaultAlpn pair signifies no support for default connection protocols.
The "ohttp" SvcParamKey is used to indicate that a service described in a SVCB RR can be accessed as a target using an associated gateway.
SVCBPort pair defines the port for connection.
TA RR.
TALINK RR.
TKEY RR.
TLSA RR.
A Transfer defines parameters that are used during a zone transfer.
TSIG is the RR the holds the transaction signature of a message.
TXT RR.
UID RR.
UINFO RR.
URI RR.
X25 RR.
ZONEMD RR, from draft-ietf-dnsop-dns-zone-digest.
ZoneParser is a parser for an RFC 1035 style zonefile.

# Interfaces

A ConnectionStater interface is used by a DNS Handler to access TLS connection state when available.
EDNS0 defines an EDNS0 Option.
Handler is implemented by any value that implements ServeDNS.
PacketConnReader is an optional interface that Readers can implement to support using generic net.PacketConns.
PrivateRdata is an interface used for implementing "Private Use" RR types, see RFC 6895.
Reader reads raw DNS messages; each call to ReadTCP or ReadUDP should return an entire message.
A ResponseWriter interface is used by an DNS handler to construct an DNS response.
An RR represents a resource record.
SVCBKeyValue defines a key=value pair for the SVCB RR type.
TsigProvider provides the API to plug-in a custom TSIG implementation.
Writer writes raw DNS messages; each call to Write should send an entire message.

# Type aliases

DecorateReader is a decorator hook for extending or supplanting the functionality of a Reader.
DecorateWriter is a decorator hook for extending or supplanting the functionality of a Writer.
The HandlerFunc type is an adapter to allow the use of ordinary functions as DNS handlers.
MsgAcceptAction represents the action to be taken.
MsgAcceptFunc is used early in the server code to accept or reject a message with RcodeFormatError.
MsgInvalidFunc is a listener hook for observing incoming messages that were discarded because they could not be parsed.
SVCBKey is the type of the keys used in the SVCB RR.