Documentation ¶
Overview ¶
Package dnstype defines types for working with DNS.
Index ¶
- func Clone(dst, src any) bool
- 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 ¶
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 ¶
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 ¶
func (p *Resolver) View() ResolverView
View returns a readonly view of Resolver.
type ResolverView ¶
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 ¶
func (v ResolverView) Addr() string
func (ResolverView) AsStruct ¶
func (v ResolverView) AsStruct() *Resolver
AsStruct returns a clone of the underlying value which aliases no memory with the original.
func (ResolverView) BootstrapResolution ¶
func (v ResolverView) BootstrapResolution() views.Slice[netip.Addr]
func (ResolverView) Equal ¶
func (v ResolverView) Equal(v2 ResolverView) bool
func (ResolverView) MarshalJSON ¶
func (v ResolverView) MarshalJSON() ([]byte, error)
func (*ResolverView) UnmarshalJSON ¶
func (v *ResolverView) UnmarshalJSON(b []byte) error
func (ResolverView) Valid ¶
func (v ResolverView) Valid() bool
Valid reports whether underlying value is non-nil.
Click to show internal directories.
Click to hide internal directories.