Struct domain::base::opt::subnet::ClientSubnet

source ·
pub struct ClientSubnet { /* private fields */ }
Expand description

Option data for the client subnet option.

This option allows a resolver to include information about the network a query originated from. This information can then be used by an authoritative server to provide the best response for this network.

The option identifies the network through an address prefix, i.e., an IP address of which only a certain number of left-side bits is interpreted. The option uses two such numbers: The source prefix length is the number of bits provided by the client when describing its network and the scope prefix length is the number of bits that the server considered when providing the answer. The scope prefix length is zero in a query. It can be used by a caching resolver to cache multiple responses for different client subnets.

The option is defined in RFC 7871 which also includes some guidance on its use.

Implementations§

source§

impl ClientSubnet

source

pub fn new( source_prefix_len: u8, scope_prefix_len: u8, addr: IpAddr, ) -> ClientSubnet

Creates a new client subnet value.

The function is very forgiving regarding the arguments and corrects illegal values. That is, it limit the prefix lengths given to a number meaningful for the address family. It will also set all bits not covered by the source prefix length in the address to zero.

source

pub fn source_prefix_len(&self) -> u8

Returns the source prefix length.

The source prefix length is the prefix length as specified by the client in a query.

source

pub fn scope_prefix_len(&self) -> u8

Returns the scope prefix length.

The scope prefix length is the prefix length used by the server for its answer.

source

pub fn addr(&self) -> IpAddr

Returns the address.

source

pub fn parse<Octs: AsRef<[u8]>>( parser: &mut Parser<'_, Octs>, ) -> Result<Self, ParseError>

Parses a value from its wire format.

Trait Implementations§

source§

impl Clone for ClientSubnet

source§

fn clone(&self) -> ClientSubnet

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl ComposeOptData for ClientSubnet

source§

fn compose_len(&self) -> u16

source§

fn compose_option<Target: OctetsBuilder + ?Sized>( &self, target: &mut Target, ) -> Result<(), Target::AppendError>

source§

impl Debug for ClientSubnet

source§

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

Formats the value using the given formatter. Read more
source§

impl Display for ClientSubnet

source§

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

Formats the value using the given formatter. Read more
source§

impl<Octs, Name> From<ClientSubnet> for AllOptData<Octs, Name>

source§

fn from(value: ClientSubnet) -> Self

Converts to this type from the input type.
source§

impl Hash for ClientSubnet

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl OptData for ClientSubnet

source§

fn code(&self) -> OptionCode

Returns the option code associated with this option.
source§

impl Ord for ClientSubnet

source§

fn cmp(&self, other: &ClientSubnet) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<'a, Octs: AsRef<[u8]>> ParseOptData<'a, Octs> for ClientSubnet

source§

fn parse_option( code: OptionCode, parser: &mut Parser<'a, Octs>, ) -> Result<Option<Self>, ParseError>

Parses the option code data. Read more
source§

impl PartialEq for ClientSubnet

source§

fn eq(&self, other: &ClientSubnet) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for ClientSubnet

source§

fn partial_cmp(&self, other: &ClientSubnet) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Copy for ClientSubnet

source§

impl Eq for ClientSubnet

source§

impl StructuralPartialEq for ClientSubnet

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

§

type Error = <Target as OctetsFrom<Source>>::Error

source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

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

source§

fn vzip(self) -> V