pub enum SvcParamValue {
    Mandatory(Mandatory),
    Alpn(Alpn),
    NoDefaultAlpn,
    Port(u16),
    Ipv4Hint(IpHint<Ipv4Addr>),
    EchConfig(EchConfig),
    Ipv6Hint(IpHint<Ipv6Addr>),
    Unknown(Unknown),
}
Expand description

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.

§

NoDefaultAlpn

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.
§

Ipv4Hint(IpHint<Ipv4Addr>)

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.
§

Ipv6Hint(IpHint<Ipv6Addr>)

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§

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Mandatory, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Mandatory, otherwise None

Returns the inner fields if this is a SvcParamValue::Mandatory, otherwise returns back the enum in the Err case of the result

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Alpn, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Alpn, otherwise None

Returns the inner fields if this is a SvcParamValue::Alpn, otherwise returns back the enum in the Err case of the result

Returns true if this is a SvcParamValue::NoDefaultAlpn, otherwise false

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Port, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Port, otherwise None

Returns the inner fields if this is a SvcParamValue::Port, otherwise returns back the enum in the Err case of the result

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Ipv4Hint, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Ipv4Hint, otherwise None

Returns the inner fields if this is a SvcParamValue::Ipv4Hint, otherwise returns back the enum in the Err case of the result

Optionally returns mutable references to the inner fields if this is a SvcParamValue::EchConfig, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::EchConfig, otherwise None

Returns the inner fields if this is a SvcParamValue::EchConfig, otherwise returns back the enum in the Err case of the result

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Ipv6Hint, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Ipv6Hint, otherwise None

Returns the inner fields if this is a SvcParamValue::Ipv6Hint, otherwise returns back the enum in the Err case of the result

Optionally returns mutable references to the inner fields if this is a SvcParamValue::Unknown, otherwise None

Optionally returns references to the inner fields if this is a SvcParamValue::Unknown, otherwise None

Returns the inner fields if this is a SvcParamValue::Unknown, otherwise returns back the enum in the Err case of the result

Trait Implementations§

Write the type to the stream
Returns the object in binary form
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.