Documentation ¶
Overview ¶
Package dnstype defines types for working with DNS.
Index ¶
- func Clone(dst, src any) bool
- func DNSMessageTypeForString(s string) (t dnsmessage.Type, err error)
- func StringForDNSMessageType(t dnsmessage.Type) string
- type Resolver
- type ResolverView
- func (v ResolverView) Addr() string
- func (v ResolverView) AsStruct() *Resolver
- func (v ResolverView) BootstrapResolution() views.Slice[netip.Addr]
- func (v ResolverView) Equal(v2 ResolverView) bool
- func (v ResolverView) MarshalJSON() ([]byte, error)
- func (v *ResolverView) UnmarshalJSON(b []byte) error
- func (v ResolverView) Valid() bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Clone ¶
Clone duplicates src into dst and reports whether it succeeded. To succeed, <src, dst> must be of types <*T, *T> or <*T, **T>, where T is one of Resolver.
func DNSMessageTypeForString ¶ added in v1.76.0
func DNSMessageTypeForString(s string) (t dnsmessage.Type, err error)
DNSMessageTypeForString returns the dnsmessage.Type for the given string. For example, DNSMessageTypeForString("A") returns dnsmessage.TypeA.
func StringForDNSMessageType ¶ added in v1.76.0
func StringForDNSMessageType(t dnsmessage.Type) string
StringForType returns the string representation of a dnsmessage.Type. For example, StringForType(dnsmessage.TypeA) returns "A".
Types ¶
type Resolver ¶
type Resolver struct { // Addr is the address of the DNS resolver, one of: // - A plain IP address for a "classic" UDP+TCP DNS resolver. // This is the common format as sent by the control plane. // - An IP:port, for tests. // - "https://resolver.com/path" for DNS over HTTPS; currently // as of 2022-09-08 only used for certain well-known resolvers // (see the publicdns package) for which the IP addresses to dial DoH are // known ahead of time, so bootstrap DNS resolution is not required. // - "http://node-address:port/path" for DNS over HTTP over WireGuard. This // is implemented in the PeerAPI for exit nodes and app connectors. // - [TODO] "tls://resolver.com" for DNS over TCP+TLS Addr string `json:",omitempty"` // BootstrapResolution is an optional suggested resolution for the // DoT/DoH resolver, if the resolver URL does not reference an IP // address directly. // BootstrapResolution may be empty, in which case clients should // look up the DoT/DoH server using their local "classic" DNS // resolver. // // As of 2022-09-08, BootstrapResolution is not yet used. BootstrapResolution []netip.Addr `json:",omitempty"` }
Resolver is the configuration for one DNS resolver.
func (*Resolver) Clone ¶
Clone makes a deep copy of Resolver. The result aliases no memory with the original.
func (*Resolver) IPPort ¶ added in v1.24.0
IPPort returns r.Addr as an IP address and port if either r.Addr is an IP address (the common case) or if r.Addr is an IP:port (as done in tests).
func (*Resolver) View ¶ added in v1.26.0
func (p *Resolver) View() ResolverView
View returns a readonly view of Resolver.
type ResolverView ¶ added in v1.26.0
type ResolverView struct {
// contains filtered or unexported fields
}
ResolverView provides a read-only view over Resolver.
Its methods should only be called if `Valid()` returns true.
func (ResolverView) Addr ¶ added in v1.26.0
func (v ResolverView) Addr() string
func (ResolverView) AsStruct ¶ added in v1.26.0
func (v ResolverView) AsStruct() *Resolver
AsStruct returns a clone of the underlying value which aliases no memory with the original.
func (ResolverView) BootstrapResolution ¶ added in v1.26.0
func (v ResolverView) BootstrapResolution() views.Slice[netip.Addr]
func (ResolverView) Equal ¶ added in v1.50.0
func (v ResolverView) Equal(v2 ResolverView) bool
func (ResolverView) MarshalJSON ¶ added in v1.26.0
func (v ResolverView) MarshalJSON() ([]byte, error)
func (*ResolverView) UnmarshalJSON ¶ added in v1.26.0
func (v *ResolverView) UnmarshalJSON(b []byte) error
func (ResolverView) Valid ¶ added in v1.26.0
func (v ResolverView) Valid() bool
Valid reports whether underlying value is non-nil.