Skip to main content

CSYNC

Struct CSYNC 

Source
#[non_exhaustive]
pub struct CSYNC { pub soa_serial: u32, pub immediate: bool, pub soa_minimum: bool, pub reserved_flags: u16, pub type_bit_maps: RecordTypeSet, }
Expand description

RFC 7477, Child-to-Parent Synchronization in DNS, March 2015

2.1.1.  The CSYNC Resource Record Wire Format

The CSYNC RDATA consists of the following fields:

                      1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          SOA Serial                           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |       Flags                   |            Type Bit Map       /
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 /                     Type Bit Map (continued)                  /
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§soa_serial: u32

RFC 7477

2.1.1.1.  The SOA Serial Field

   The SOA Serial field contains a copy of the 32-bit SOA serial number
   from the child zone.  If the soaminimum flag is set, parental agents
   querying children's authoritative servers MUST NOT act on data from
   zones advertising an SOA serial number less than this value.  See
   [RFC1982] for properly implementing "less than" logic.  If the
   soaminimum flag is not set, parental agents MUST ignore the value in
   the SOA Serial field.  Clients can set the field to any value if the
   soaminimum flag is unset, such as the number zero.

   Note that a child zone's current SOA serial number may be greater
   than the number indicated by the CSYNC record.  A child SHOULD update
   the SOA Serial field in the CSYNC record every time the data being
   referenced by the CSYNC record is changed (e.g., an NS record or
   associated address record is changed).  A child MAY choose to update
   the SOA Serial field to always match the current SOA Serial field.

   Parental agents MAY cache SOA serial numbers from data they use and
   refuse to process data from zones older than the last instance from
   which they pulled data.

   Although Section 3.2 of [RFC1982] describes how to properly implement
   a less-than comparison operation with SOA serial numbers that may
   wrap beyond the 32-bit value in both the SOA record and the CSYNC
   record, it is important that a child using the soaminimum flag must
   not increment its SOA serial number value more than 2^16 within the
   period of time that a parent might wait between polling the child for
   the CSYNC record.
§immediate: bool

The immediate flag

§soa_minimum: bool

The soaminimum flag

§reserved_flags: u16

The reserved flags

§type_bit_maps: RecordTypeSet

RFC 7477, Child-to-Parent Synchronization in DNS, March 2015

2.1.1.2.1.  The Type Bit Map Field

   The Type Bit Map field indicates the record types to be processed by
   the parental agent, according to the procedures in Section 3.  The
   Type Bit Map field is encoded in the same way as the Type Bit Map
   field of the NSEC record, described in [RFC4034], Section 4.1.2.  If
   a bit has been set that a parental agent implementation does not
   understand, the parental agent MUST NOT act upon the record.
   Specifically, a parental agent must not simply copy the data, and it
   must understand the semantics associated with a bit in the Type Bit
   Map field that has been set to 1.

Implementations§

Source§

impl CSYNC

Source

pub fn new( soa_serial: u32, immediate: bool, soa_minimum: bool, type_bit_maps: impl IntoIterator<Item = RecordType>, ) -> Self

Creates a new CSYNC record data.

§Arguments
  • soa_serial - A serial number for the zone
  • immediate - A flag signalling if the change should happen immediately
  • soa_minimum - A flag to used to signal if the soa_serial should be validated
  • type_bit_maps - a bit map of the types to synchronize
§Return value

The new CSYNC record data.

Source

pub fn flags(&self) -> u16

RFC 7477, Child-to-Parent Synchronization in DNS, March 2015

2.1.1.2.  The Flags Field

   The Flags field contains 16 bits of boolean flags that define
   operations that affect the processing of the CSYNC record.  The flags
   defined in this document are as follows:

      0x00 0x01: "immediate"

      0x00 0x02: "soaminimum"

   The definitions for how the flags are to be used can be found in
   Section 3.

   The remaining flags are reserved for use by future specifications.
   Undefined flags MUST be set to 0 by CSYNC publishers.  Parental
   agents MUST NOT process a CSYNC record if it contains a 1 value for a
   flag that is unknown to or unsupported by the parental agent.

Trait Implementations§

Source§

impl BinEncodable for CSYNC

Source§

fn emit(&self, encoder: &mut BinEncoder<'_>) -> Result<(), ProtoError>

Write the type to the stream
Source§

fn to_bytes(&self) -> Result<Vec<u8>, ProtoError>

Returns the object in binary form
Source§

impl Clone for CSYNC

Source§

fn clone(&self) -> CSYNC

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CSYNC

Source§

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

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

impl Display for CSYNC

Source§

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

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

impl Hash for CSYNC

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 PartialEq for CSYNC

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 RecordData for CSYNC

Source§

fn try_borrow(data: &RData) -> Option<&Self>

Attempts to borrow this RecordData from the RData type, if it is not the correct type the original is returned
Source§

fn record_type(&self) -> RecordType

Get the associated RecordType for the RecordData
Source§

fn into_rdata(self) -> RData

Converts this RecordData into generic RecordData
Source§

fn is_update(&self) -> bool

RDLENGTH = 0
Source§

impl Eq for CSYNC

Source§

impl StructuralPartialEq for CSYNC

Auto Trait Implementations§

§

impl Freeze for CSYNC

§

impl RefUnwindSafe for CSYNC

§

impl Send for CSYNC

§

impl Sync for CSYNC

§

impl Unpin for CSYNC

§

impl UnsafeUnpin for CSYNC

§

impl UnwindSafe for CSYNC

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> ToString for T
where T: Display + ?Sized,

Source§

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

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

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more