domain/rdata/svcb/mod.rs
1//! Record data for SVCB/HTTPS records.
2//!
3//! Service binding records are an IETF standard currently in development as
4//! [draft-ietf-dnsop-svcb-https](https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/).
5//! They provide clients with information for accessing a service in one
6//! place rather than via multiple records.
7//!
8//! Service bindings come as two record types with identical record data
9//! format. The SVCB record type can be used for any service by prefixing the
10//! service in question to the query name. The HTTPS record type is for use
11//! with the HTTPS protocol and can be used without a prefix. Additional
12//! record types for other protocols may be defined in the future.
13//!
14//! The type [`SvcbRdata<..>`][SvcbRdata] implements the record data of all
15//! of these types. It takes a marker struct as its first type argument.
16//! Type aliases for the two current types are provided via [`Svcb`] and
17//! [`Https`]. Like most complex record data types, they still are generic
18//! over an octets sequence and a domain name.
19//!
20//! The record data itself consists of a priority providing the order of
21//! records if more than one is given, a target name which indicates the
22//! name of the host where the service is provided, and a possible empty
23//! sequence of service parameters further describing properties of the
24//! service. These parameters are represented by the [SvcParams] type.
25//! They consist of a sequence of different parameter values. Types for
26//! the defined values are available in the [_value_][self::value] sub-module.
27//! A new sequence of values can be constructed using the [`SvcParamsBuilder`]
28//! type.
29//!
30pub use self::params::{
31 SvcParams, ValueIter, UnknownSvcParam,
32 SvcParamValue, ParseSvcParamValue, ComposeSvcParamValue,
33 SvcParamsBuilder,
34 SvcParamsError, LongSvcParam, PushError
35};
36pub use self::rdata::{Https, HttpsVariant, Svcb, SvcbRdata, SvcbVariant};
37
38pub mod value;
39mod params;
40mod rdata;
41