Enum trust_dns_proto::rr::rdata::svcb::SvcParamValue [−][src]
Warning, it is currently up to users of this type to validate the data against that expected by the key
* a 2 octet field containing the length of the SvcParamValue as an
integer between 0 and 65535 in network byte order (but constrained
by the RDATA and DNS message sizes).
* an octet string of this length whose contents are in a format
determined by the SvcParamKey.
Variants
Mandatory(Mandatory)
In a ServiceMode RR, a SvcParamKey is considered “mandatory” if the RR will not function correctly for clients that ignore this SvcParamKey. Each SVCB protocol mapping SHOULD specify a set of keys that are “automatically mandatory”, i.e. mandatory if they are present in an RR. The SvcParamKey “mandatory” is used to indicate any mandatory keys for this RR, in addition to any automatically mandatory keys that are present.
see Mandatory
Alpn(Alpn)
The “alpn” and “no-default-alpn” SvcParamKeys together indicate the set of Application Layer Protocol Negotiation (ALPN) protocol identifiers [ALPN] and associated transport protocols supported by this service endpoint.
For “no-default-alpn”, the presentation and wire format values MUST
be empty.
See also Alpn
Port(u16)
6.2. "port"
The "port" SvcParamKey defines the TCP or UDP port that should be
used to reach this alternative endpoint. If this key is not present,
clients SHALL use the authority endpoint's port number.
The presentation "value" of the SvcParamValue is a single decimal
integer between 0 and 65535 in ASCII. Any other "value" (e.g. an
empty value) is a syntax error. To enable simpler parsing, this
SvcParam MUST NOT contain escape sequences.
The wire format of the SvcParamValue is the corresponding 2 octet
numeric value in network byte order.
If a port-restricting firewall is in place between some client and
the service endpoint, changing the port number might cause that
client to lose access to the service, so operators should exercise
caution when using this SvcParamKey to specify a non-default port.
The “ipv4hint” and “ipv6hint” keys convey IP addresses that clients MAY use to reach the service. If A and AAAA records for TargetName are locally available, the client SHOULD ignore these hints. Otherwise, clients SHOULD perform A and/or AAAA queries for TargetName as in Section 3, and clients SHOULD use the IP address in those responses for future connections. Clients MAY opt to terminate any connections using the addresses in hints and instead switch to the addresses in response to the TargetName query. Failure to use A and/or AAAA response addresses could negatively impact load balancing or other geo-aware features and thereby degrade client performance.
see IpHint
EchConfig(EchConfig)
6.3. "echconfig"
The SvcParamKey to enable Encrypted ClientHello (ECH) is "echconfig".
Its value is defined in Section 9. It is applicable to most TLS-
based protocols.
When publishing a record containing an "echconfig" parameter, the
publisher MUST ensure that all IP addresses of TargetName correspond
to servers that have access to the corresponding private key or are
authoritative for the public name. (See Section 7.2.2 of [ECH] for
more details about the public name.) This yields an anonymity set of
cardinality equal to the number of ECH-enabled server domains
supported by a given client-facing server. Thus, even with an
encrypted ClientHello, an attacker who can enumerate the set of ECH-
enabled domains supported by a client-facing server can guess the
correct SNI with probability at least 1/K, where K is the size of
this ECH-enabled server anonymity set. This probability may be
increased via traffic analysis or other mechanisms.
See IpHint
Unknown(Unknown)
Unparsed network data. Refer to documents on the associated key value
This will be left as is when read off the wire, and encoded in bas64 for presentation.
Implementations
impl SvcParamValue
[src]
pub fn as_mandatory_mut(&mut self) -> Option<&mut Mandatory>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Mandatory
, otherwise None
pub fn as_mandatory(&self) -> Option<&Mandatory>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Mandatory
, otherwise None
pub fn into_mandatory(self) -> Result<Mandatory, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Mandatory
, otherwise returns back the enum in the Err
case of the result
pub fn as_alpn_mut(&mut self) -> Option<&mut Alpn>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Alpn
, otherwise None
pub fn as_alpn(&self) -> Option<&Alpn>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Alpn
, otherwise None
pub fn into_alpn(self) -> Result<Alpn, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Alpn
, otherwise returns back the enum in the Err
case of the result
pub fn as_no_default_alpn_mut(&mut self) -> Option<()>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::NoDefaultAlpn
, otherwise None
pub fn as_no_default_alpn(&self) -> Option<()>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::NoDefaultAlpn
, otherwise None
pub fn as_port_mut(&mut self) -> Option<&mut u16>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Port
, otherwise None
pub fn as_port(&self) -> Option<&u16>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Port
, otherwise None
pub fn into_port(self) -> Result<u16, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Port
, otherwise returns back the enum in the Err
case of the result
pub fn as_ipv4_hint_mut(&mut self) -> Option<&mut IpHint<Ipv4Addr>>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Ipv4Hint
, otherwise None
pub fn as_ipv4_hint(&self) -> Option<&IpHint<Ipv4Addr>>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Ipv4Hint
, otherwise None
pub fn into_ipv4_hint(self) -> Result<IpHint<Ipv4Addr>, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Ipv4Hint
, otherwise returns back the enum in the Err
case of the result
pub fn as_ech_config_mut(&mut self) -> Option<&mut EchConfig>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::EchConfig
, otherwise None
pub fn as_ech_config(&self) -> Option<&EchConfig>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::EchConfig
, otherwise None
pub fn into_ech_config(self) -> Result<EchConfig, Self>
[src]
Returns the inner fields if this is a SvcParamValue::EchConfig
, otherwise returns back the enum in the Err
case of the result
pub fn as_ipv6_hint_mut(&mut self) -> Option<&mut IpHint<Ipv6Addr>>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Ipv6Hint
, otherwise None
pub fn as_ipv6_hint(&self) -> Option<&IpHint<Ipv6Addr>>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Ipv6Hint
, otherwise None
pub fn into_ipv6_hint(self) -> Result<IpHint<Ipv6Addr>, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Ipv6Hint
, otherwise returns back the enum in the Err
case of the result
pub fn as_unknown_mut(&mut self) -> Option<&mut Unknown>
[src]
Optionally returns mutable references to the inner fields if this is a SvcParamValue::Unknown
, otherwise None
pub fn as_unknown(&self) -> Option<&Unknown>
[src]
Optionally returns references to the inner fields if this is a SvcParamValue::Unknown
, otherwise None
pub fn into_unknown(self) -> Result<Unknown, Self>
[src]
Returns the inner fields if this is a SvcParamValue::Unknown
, otherwise returns back the enum in the Err
case of the result
Trait Implementations
impl BinEncodable for SvcParamValue
[src]
fn emit(&self, encoder: &mut BinEncoder<'_>) -> ProtoResult<()>
[src]
fn to_bytes(&self) -> ProtoResult<Vec<u8>>
[src]
impl Clone for SvcParamValue
[src]
fn clone(&self) -> SvcParamValue
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for SvcParamValue
[src]
impl Display for SvcParamValue
[src]
impl Eq for SvcParamValue
[src]
impl Hash for SvcParamValue
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl PartialEq<SvcParamValue> for SvcParamValue
[src]
fn eq(&self, other: &SvcParamValue) -> bool
[src]
fn ne(&self, other: &SvcParamValue) -> bool
[src]
impl StructuralEq for SvcParamValue
[src]
impl StructuralPartialEq for SvcParamValue
[src]
Auto Trait Implementations
impl RefUnwindSafe for SvcParamValue
impl Send for SvcParamValue
impl Sync for SvcParamValue
impl Unpin for SvcParamValue
impl UnwindSafe for SvcParamValue
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,