Enum DnsRecord

Source
pub enum DnsRecord {
    A(DnsName, Ipv4Addr),
    AAAA(DnsName, Ipv6Addr),
    CNAME(DnsName, DnsName),
    Unknown(DnsName, DnsType),
}
Expand description

4.1.3. Resource record format

The answer, authority, and additional sections all share the same format: a variable number of resource records, where the number of records is specified in the corresponding count field in the header. Each resource record has the following format:

                                1  1  1  1  1  1
  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                                               |
/                                               /
/                      NAME                     /
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      TYPE                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                     CLASS                     |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      TTL                      |
|                                               |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                   RDLENGTH                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
/                     RDATA                     /
/                                               /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

  • NAME: a domain name to which this resource record pertains.
  • TYPE: two octets containing one of the RR type codes. This field specifies the meaning of the data in the RDATA field.
  • CLASS: two octets which specify the class of the data in the RDATA field.
  • TTL: a 32 bit unsigned integer that specifies the time interval (in seconds) that the resource record may be cached before it should be discarded. Zero values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be cached.
  • RDLENGTH: an unsigned 16 bit integer that specifies the length in octets of the RDATA field.
  • RDATA: a variable length string of octets that describes the resource. The format of this information varies according to the TYPE and CLASS of the resource record. For example, the if the TYPE is A and the CLASS is IN, the RDATA field is a 4 octet ARPA Internet address.

https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.3

Variants§

Implementations§

Source§

impl DnsRecord

Source

pub fn read_rdata<const N: usize>( buf: &mut FixedBuf<N>, ) -> Result<FixedBuf<65535>, DnsError>

§Errors

Returns an error when buf does not contain a valid resource record.

Source

pub fn write_rdata<const N: usize>( bytes: &[u8], out: &mut FixedBuf<N>, ) -> Result<(), DnsError>

§Errors

Returns an error when buf is full or bytes is longer than 65,535 bytes.

Source

pub fn new_a(name: &str, ipv4_addr: &str) -> Result<Self, String>

§Errors

Returns an error when name is not a valid DNS name or ipv4_addr is not a valid IPv4 address.

Source

pub fn new_aaaa(name: &str, ipv6_addr: &str) -> Result<Self, String>

§Errors

Returns an error when name is not a valid DNS name or ipv6_addr is not a valid IPv6 address.

Source

pub fn new_cname(name: &str, target: &str) -> Result<Self, String>

§Errors

Returns an error when name or target are not both valid DNS names.

Source

pub fn name(&self) -> &DnsName

Source

pub fn typ(&self) -> DnsType

Source

pub fn read<const N: usize>(buf: &mut FixedBuf<N>) -> Result<Self, DnsError>

§Errors

Returns an error when buf does not contain a valid resource record.

Source

pub fn write<const N: usize>( &self, out: &mut FixedBuf<N>, ) -> Result<(), DnsError>

§Errors

Returns an error when buf is full.

Trait Implementations§

Source§

impl Clone for DnsRecord

Source§

fn clone(&self) -> DnsRecord

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 Debug for DnsRecord

Source§

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

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

impl Hash for DnsRecord

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 Ord for DnsRecord

Source§

fn cmp(&self, other: &DnsRecord) -> 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,

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

impl PartialEq for DnsRecord

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for DnsRecord

Source§

fn partial_cmp(&self, other: &DnsRecord) -> 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

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

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

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Eq for DnsRecord

Source§

impl StructuralPartialEq for DnsRecord

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<T> ToOwned for T
where T: Clone,

Source§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

Source§

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.