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

#[repr(transparent)]pub struct IpHint<T>(pub Vec<T>);
   6.4.  "ipv4hint" and "ipv6hint"

  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.

  The presentation "value" SHALL be a comma-separated list
  (Appendix A.1) of one or more IP addresses of the appropriate family
  in standard textual format [RFC5952].  To enable simpler parsing,
  this SvcParamValue MUST NOT contain escape sequences.

  The wire format for each parameter is a sequence of IP addresses in
  network byte order.  Like an A or AAAA RRSet, the list of addresses
  represents an unordered collection, and clients SHOULD pick addresses
  to use in a random order.  An empty list of addresses is invalid.

  When selecting between IPv4 and IPv6 addresses to use, clients may
  use an approach such as Happy Eyeballs [HappyEyeballsV2].  When only
  "ipv4hint" is present, IPv6-only clients may synthesize IPv6
  addresses as specified in [RFC7050] or ignore the "ipv4hint" key and
  wait for AAAA resolution (Section 3).  Recursive resolvers MUST NOT
  perform DNS64 ([RFC6147]) on parameters within a SVCB record.  For
  best performance, server operators SHOULD include an "ipv6hint"
  parameter whenever they include an "ipv4hint" parameter.

  These parameters are intended to minimize additional connection
  latency when a recursive resolver is not compliant with the
  requirements in Section 4, and SHOULD NOT be included if most clients
  are using compliant recursive resolvers.  When TargetName is the
  origin hostname or the owner name (which can be written as "."),
  server operators SHOULD NOT include these hints, because they are
  unlikely to convey any performance benefit.

Trait Implementations

impl<'r, T> BinDecodable<'r> for IpHint<T> where
    T: BinDecodable<'r>, 
[src]

fn read(decoder: &mut BinDecoder<'r>) -> ProtoResult<Self>[src]

The wire format for each parameter is a sequence of IP addresses in network byte order. Like an A or AAAA RRSet, the list of addresses represents an unordered collection, and clients SHOULD pick addresses to use in a random order. An empty list of addresses is invalid.

impl<T> BinEncodable for IpHint<T> where
    T: BinEncodable
[src]

fn emit(&self, encoder: &mut BinEncoder<'_>) -> ProtoResult<()>[src]

The wire format for each parameter is a sequence of IP addresses in network byte order. Like an A or AAAA RRSet, the list of addresses represents an unordered collection, and clients SHOULD pick addresses to use in a random order. An empty list of addresses is invalid.

impl<T: Clone> Clone for IpHint<T>[src]

impl<T: Debug> Debug for IpHint<T>[src]

impl<T> Display for IpHint<T> where
    T: Display
[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>[src]

The presentation “value” SHALL be a comma-separated list (Appendix A.1) of one or more IP addresses of the appropriate family in standard textual format [RFC5952]. To enable simpler parsing, this SvcParamValue MUST NOT contain escape sequences.

impl<T: Eq> Eq for IpHint<T>[src]

impl<T: Hash> Hash for IpHint<T>[src]

impl<T: PartialEq> PartialEq<IpHint<T>> for IpHint<T>[src]

impl<T> StructuralEq for IpHint<T>[src]

impl<T> StructuralPartialEq for IpHint<T>[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for IpHint<T> where
    T: RefUnwindSafe

impl<T> Send for IpHint<T> where
    T: Send

impl<T> Sync for IpHint<T> where
    T: Sync

impl<T> Unpin for IpHint<T> where
    T: Unpin

impl<T> UnwindSafe for IpHint<T> where
    T: UnwindSafe

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>,