Struct trust_dns_proto::rr::rdata::svcb::SVCB[][src]

pub struct SVCB { /* fields omitted */ }

draft-ietf-dnsop-svcb-https-03 SVCB and HTTPS RRs for DNS, February 2021

2.2.  RDATA wire format

  The RDATA for the SVCB RR consists of:

  *  a 2 octet field for SvcPriority as an integer in network byte
     order.
  *  the uncompressed, fully-qualified TargetName, represented as a
     sequence of length-prefixed labels as in Section 3.1 of [RFC1035].
  *  the SvcParams, consuming the remainder of the record (so smaller
     than 65535 octets and constrained by the RDATA and DNS message
     sizes).

  When the list of SvcParams is non-empty (ServiceMode), it contains a
  series of SvcParamKey=SvcParamValue pairs, represented as:

  *  a 2 octet field containing the SvcParamKey as an integer in
     network byte order.  (See Section 14.3.2 for the defined values.)
  *  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.

  SvcParamKeys SHALL appear in increasing numeric order.

  Clients MUST consider an RR malformed if:

  *  the end of the RDATA occurs within a SvcParam.
  *  SvcParamKeys are not in strictly increasing numeric order.
  *  the SvcParamValue for an SvcParamKey does not have the expected
     format.

  Note that the second condition implies that there are no duplicate
  SvcParamKeys.

  If any RRs are malformed, the client MUST reject the entire RRSet and
  fall back to non-SVCB connection establishment.

Implementations

impl SVCB[src]

pub fn new(
    svc_priority: u16,
    target_name: Name,
    svc_params: Vec<(SvcParamKey, SvcParamValue)>
) -> Self
[src]

Create a new SVCB record from parts

It is up to the caller to validate the data going into the record

pub fn svc_priority(&self) -> u16[src]

draft-ietf-dnsop-svcb-https-03 SVCB and HTTPS RRs for DNS, February 2021

2.4.1.  SvcPriority

  When SvcPriority is 0 the SVCB record is in AliasMode
  (Section 2.4.2).  Otherwise, it is in ServiceMode (Section 2.4.3).

  Within a SVCB RRSet, all RRs SHOULD have the same Mode.  If an RRSet
  contains a record in AliasMode, the recipient MUST ignore any
  ServiceMode records in the set.

  RRSets are explicitly unordered collections, so the SvcPriority field
  is used to impose an ordering on SVCB RRs.  SVCB RRs with a smaller
  SvcPriority value SHOULD be given preference over RRs with a larger
  SvcPriority value.

  When receiving an RRSet containing multiple SVCB records with the
  same SvcPriority value, clients SHOULD apply a random shuffle within
  a priority level to the records before using them, to ensure uniform
  load-balancing.

pub fn target_name(&self) -> &Name[src]

draft-ietf-dnsop-svcb-https-03 SVCB and HTTPS RRs for DNS, February 2021

2.5.  Special handling of "." in TargetName

  If TargetName has the value "." (represented in the wire format as a
   zero-length label), special rules apply.

2.5.1.  AliasMode

   For AliasMode SVCB RRs, a TargetName of "." indicates that the
   service is not available or does not exist.  This indication is
   advisory: clients encountering this indication MAY ignore it and
   attempt to connect without the use of SVCB.

2.5.2.  ServiceMode

   For ServiceMode SVCB RRs, if TargetName has the value ".", then the
   owner name of this record MUST be used as the effective TargetName.

   For example, in the following example "svc2.example.net" is the
   effective TargetName:

   example.com.      7200  IN HTTPS 0 svc.example.net.
   svc.example.net.  7200  IN CNAME svc2.example.net.
   svc2.example.net. 7200  IN HTTPS 1 . port=8002 echconfig="..."
   svc2.example.net. 300   IN A     192.0.2.2
   svc2.example.net. 300   IN AAAA  2001:db8::2

pub fn svc_params(&self) -> &[(SvcParamKey, SvcParamValue)][src]

See SvcParamKey for details on each parameter

Trait Implementations

impl Clone for SVCB[src]

impl Debug for SVCB[src]

impl Display for SVCB[src]

draft-ietf-dnsop-svcb-https-03 SVCB and HTTPS RRs for DNS, February 2021

simple.example. 7200 IN HTTPS 1 . alpn=h3
pool  7200 IN HTTPS 1 h3pool alpn=h2,h3 echconfig="123..."
              HTTPS 2 .      alpn=h2 echconfig="abc..."
@     7200 IN HTTPS 0 www
_8765._baz.api.example.com. 7200 IN SVCB 0 svc4-baz.example.net.

impl Eq for SVCB[src]

impl Hash for SVCB[src]

impl PartialEq<SVCB> for SVCB[src]

impl StructuralEq for SVCB[src]

impl StructuralPartialEq for SVCB[src]

Auto Trait Implementations

impl RefUnwindSafe for SVCB

impl Send for SVCB

impl Sync for SVCB

impl Unpin for SVCB

impl UnwindSafe for SVCB

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,