dnsbase
Copyright(c) Viktor Dukhovni 2026
LicenseBSD-3-Clause
Maintainerietf-dane@dukhovni.org
Stabilityunstable
Safe HaskellNone
LanguageGHC2024

Net.DNSBase.RData.SVCB.SPV

Description

One KnownSVCParamValue instance per standardised service parameter key. Each type corresponds to a SVCParamKey from the IANA registry and carries the value payload for that key in a form suited to the application that consumes it (a port as Word16, address hints as a NonEmpty of IPv4 / IPv6, and so on).

An unknown key falls through to OpaqueSPV, which preserves the raw wire bytes. Applications register additional typed values at runtime via extendRRwithType on the SVCB or HTTPS RR type — see Net.DNSBase.Extensible for a worked example.

Synopsis

Documentation

data SPV_mandatory where Source #

The mandatory service parameter (RFC 9460 section 8) — the set of additional SVCParamKey codes a client must recognise to make sense of this RR, on top of any keys that are automatically mandatory for the application protocol. A client that does not understand all the listed keys must ignore the RR.

The set may not be empty on the wire (an empty list is encoded as the parameter being absent) and may hold at most 32767 keys. The constructor is not exported; build instances via fromNonEmptyList or by combining values with their Semigroup instance.

Bundled Patterns

pattern SPV_MANDATORY

One-way pattern exposing the underlying key set for lookups. Construction is available only via fromNonEmptyList or via the Semigroup instance.

Fields

Instances

Instances details
Presentable SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

IsNonEmptyList SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Associated Types

type Item1 SPV_mandatory 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Semigroup SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Show SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Ord SPV_mandatory Source #

Wire-form order

Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

type Item1 SPV_mandatory Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

newtype SPV_alpn Source #

The alpn service parameter (RFC 9460 section 7.1) — the set of Application-Layer Protocol Negotiation (RFC 7301) protocol identifiers this service endpoint supports. Together with SPV_ndalpn it defines the SVCB ALPN set: by default the scheme's protocol is implicitly included, and SPV_ndalpn suppresses that default.

data SPV_ndalpn Source #

The no-default-alpn service parameter (RFC 9460 section 7.1) — a value-less flag that suppresses the scheme's default ALPN from the SVCB ALPN set. Meaningful only alongside an explicit SPV_alpn that supplies a replacement protocol list.

Constructors

SPV_NDALPN 

newtype SPV_port Source #

The port service parameter (RFC 9460 section 7.2) — overrides the scheme's default TCP or UDP port for reaching this service endpoint.

Constructors

SPV_PORT Word16 

Instances

Instances details
Presentable SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

spvKey :: forall b -> b ~ SPV_port => SVCParamKey Source #

spvKeyPres :: forall b -> b ~ SPV_port => Builder -> Builder Source #

encodeSPV :: ErrorContext r => SPV_port -> SPut s r Source #

decodeSPV :: forall b -> b ~ SPV_port => Int -> SGet SVCParamValue Source #

Bounded SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Enum SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Num SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Read SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Integral SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Real SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Show SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Ord SPV_port Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

newtype SPV_ipv4hint Source #

The ipv4hint service parameter (RFC 9460 section 7.3) — a non-empty list of IPv4 addresses for this service endpoint that a client may use to start a connection in parallel with an authoritative A lookup. Hints are advisory; clients should still validate them against authoritative address records when they arrive.

Constructors

SPV_IPV4HINT (NonEmpty IPv4) 

newtype SPV_ipv6hint Source #

The ipv6hint service parameter (RFC 9460 section 7.3) — the IPv6 counterpart of SPV_ipv4hint: a non-empty list of IPv6 addresses to try in parallel with the authoritative AAAA lookup.

Constructors

SPV_IPV6HINT (NonEmpty IPv6) 

newtype SPV_ech Source #

The ech service parameter (RFC9848, Section 3) — an Encrypted Client Hello (ECH) configuration list. Presented as a base64-encoded value.

Constructors

SPV_ECH ShortByteString 

Instances

Instances details
Presentable SPV_ech Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_ech Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

spvKey :: forall b -> b ~ SPV_ech => SVCParamKey Source #

spvKeyPres :: forall b -> b ~ SPV_ech => Builder -> Builder Source #

encodeSPV :: ErrorContext r => SPV_ech -> SPut s r Source #

decodeSPV :: forall b -> b ~ SPV_ech => Int -> SGet SVCParamValue Source #

Show SPV_ech Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_ech Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

(==) :: SPV_ech -> SPV_ech -> Bool #

(/=) :: SPV_ech -> SPV_ech -> Bool #

Ord SPV_ech Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

newtype SPV_dohpath Source #

The dohpath service parameter (RFC 9461) — a URI template (UTF-8) advertising the DNS-over-HTTPS endpoint at this service. Typically seen on resolver-discovery answers to queries for _dns.resolver.arpa or on explicit queries to a specific operator's resolver.

Constructors

SPV_DOHPATH Text 

newtype SPV_docpath Source #

The docpath service parameter (RFC 9953 section 8.2) — the absolute path to the DNS-over-CoAP (DoC) resource at this service endpoint, represented as a list of path segments. An empty list denotes the root path "/" (on the wire: a zero-length SvcParamValue).

Each segment is 1..255 octets per the RFC ABNF; the wire-form decoder rejects zero-length segments. Presentation form is a comma-separated list of segments using the standard RFC 9460 Appendix A.1 quoting and escaping rules, identical to those of SPV_alpn.

Instances

Instances details
Presentable SPV_docpath Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_docpath Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

spvKey :: forall b -> b ~ SPV_docpath => SVCParamKey Source #

spvKeyPres :: forall b -> b ~ SPV_docpath => Builder -> Builder Source #

encodeSPV :: ErrorContext r => SPV_docpath -> SPut s r Source #

decodeSPV :: forall b -> b ~ SPV_docpath => Int -> SGet SVCParamValue Source #

Show SPV_docpath Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_docpath Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Ord SPV_docpath Source #

Wire-form canonical order: by total wire length first, then by the segment-list DnsText ordering.

Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

newtype SPV_tlsgroups Source #

The tls-supported-groups service parameter (draft-ietf-tls-key-share-prediction-04 section 5) — a non-empty list of TLS Named Group codepoints (the IANA TLS Supported Groups registry) that the service supports. Clients can use this hint to predict an acceptable key share, reducing the chance of a HelloRetryRequest round-trip.

The wire form is a non-empty sequence of 16-bit codepoints in network byte order; the decoder rejects an empty value. The presentation form is a comma-separated list of decimal integers and forbids zone-file escape sequences (per the draft). Duplicates are flagged as a syntax error by the specification but are not currently rejected by either the encoder or the decoder — callers are expected to feed in a duplicate-free list, in their preferred order (the spec does not impose canonical ordering on the wire).

Constructors

SPV_TLSGROUPS (NonEmpty Word16) 

Instances

Instances details
Presentable SPV_tlsgroups Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_tlsgroups Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Show SPV_tlsgroups Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_tlsgroups Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Ord SPV_tlsgroups Source #

Wire-form canonical order: by length first, then elementwise.

Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

data SPV_pvd Source #

The pvd service parameter (draft-ietf-intarea-proxy-config-14 section 7.5) — a value-less flag that announces the host supports Provisioning Domain discovery via the well-known PvD URI. Its presence in an SVCB or HTTPS RR signals that a client MAY fetch PvD Additional Information from https://host/.well-known/pvd. Per the draft, the wire value MUST be empty; the presentation form is just the bare key name with no '='.

Constructors

SPV_PVD 

Instances

Instances details
Presentable SPV_pvd Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

KnownSVCParamValue SPV_pvd Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

spvKey :: forall b -> b ~ SPV_pvd => SVCParamKey Source #

spvKeyPres :: forall b -> b ~ SPV_pvd => Builder -> Builder Source #

encodeSPV :: ErrorContext r => SPV_pvd -> SPut s r Source #

decodeSPV :: forall b -> b ~ SPV_pvd => Int -> SGet SVCParamValue Source #

Show SPV_pvd Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Eq SPV_pvd Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV

Methods

(==) :: SPV_pvd -> SPV_pvd -> Bool #

(/=) :: SPV_pvd -> SPV_pvd -> Bool #

Ord SPV_pvd Source # 
Instance details

Defined in Net.DNSBase.RData.SVCB.SPV