Skip to main content

VxlanHdr

Struct VxlanHdr 

Source
#[repr(C)]
pub struct VxlanHdr { pub flags: u8, pub _reserved1: [u8; 3], pub vni: [u8; 3], pub _reserved2: u8, }
Expand description

VXLAN (Virtual eXtensible Local Area Network) header.

Encapsulates OSI layer 2 Ethernet frames within layer 4 UDP packets. Uses a 24-bit VXLAN Network Identifier (VNI) for traffic segregation. Header length: 8 bytes. Reference: RFC 7348.

Fields§

§flags: u8

Flags (8 bits). Bit 3 (I flag) must be 1 if VNI is present. Other bits are reserved (R).

§_reserved1: [u8; 3]

Reserved field (24 bits). Must be zero on transmission.

§vni: [u8; 3]

Contains the 24-bit VNI (upper 3 bytes) and an 8-bit reserved field (the lowest byte). The reserved field (the lowest byte) must be zero on transmission.

§_reserved2: u8

Implementations§

Source§

impl VxlanHdr

Source

pub const LEN: usize

Length of the VXLAN header in bytes (8 bytes).

Source

pub fn new(vni: u32) -> Self

Creates a new VxlanHdr.

Sets the I-flag, zeros reserved fields, and sets the VNI.

§Parameters
  • vni: The 24-bit VXLAN Network Identifier.
§Returns

A new VxlanHdr instance.

Source

pub fn with_flags(flags: u8, vni: [u8; 3]) -> Self

Creates a new VxlanHdr.

Sets the I-flag, zeros reserved fields, and sets the VNI.

§Parameters
  • flags: The 8-bit value to set for the flag field.
  • vni: The 24-bit VXLAN Network Identifier.
§Returns

A new VxlanHdr instance.

Source

pub fn flags(&self) -> u8

Returns the raw flags’ byte.

§Returns

The 8-bit flags field.

Source

pub fn set_flags(&mut self, flags: u8)

Sets the raw flags byte.

§Parameters
  • flags: The 8-bit value to set for the flags field.
Source

pub fn vni_present(&self) -> bool

Checks if the I-flag (VNI Present) is set.

§Returns

true if the I-flag is set, false otherwise.

Source

pub fn set_vni_present(&mut self, present: bool)

Sets or clears the I-flag (VNI Present).

Preserves other flag bits.

§Parameters
  • present: If true, sets the I-flag; otherwise, clears it.
Source

pub fn vni(&self) -> u32

Returns the VXLAN Network Identifier (VNI).

§Returns

The 24-bit VNI as a u32.

Source

pub fn set_vni(&mut self, vni: u32)

Sets the VXLAN Network Identifier (VNI).

Masks the input vni to 24 bits. Preserves the reserved2 field.

§Parameters
  • vni: The 24-bit VNI value.

Trait Implementations§

Source§

impl Clone for VxlanHdr

Source§

fn clone(&self) -> VxlanHdr

Returns a duplicate 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 VxlanHdr

Source§

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

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

impl<'de, WincodeConfig: Config> SchemaRead<'de, WincodeConfig> for VxlanHdr

Source§

const TYPE_META: TypeMeta

Metadata about the type’s serialization. Read more
Source§

type Dst = VxlanHdr

Source§

fn read( reader: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> ReadResult<()>

Read into dst from reader. Read more
Source§

fn get(reader: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Read Self::Dst from reader into a new Self::Dst.
Source§

impl<WincodeConfig: Config> SchemaWrite<WincodeConfig> for VxlanHdr

Source§

const TYPE_META: TypeMeta

Metadata about the type’s serialization. Read more
Source§

type Src = VxlanHdr

Source§

fn size_of(src: &Self::Src) -> WriteResult<usize>

Get the serialized size of Self::Src. Read more
Source§

fn write(writer: impl Writer, src: &Self::Src) -> WriteResult<()>

Write Self::Src to writer.
Source§

impl<WincodeConfig: Config> ZeroCopy<WincodeConfig> for VxlanHdr
where for<'_wincode_internal, '_wincode_internal> u8: ZeroCopy<WincodeConfig>, for<'_wincode_internal, '_wincode_internal> [u8; 3]: ZeroCopy<WincodeConfig>, for<'_wincode_internal> Assert<{ _ }>: IsTrue,

Source§

fn from_bytes<'de>(bytes: &'de [u8], config: C) -> Result<&'de Self, ReadError>
where Self: Sized + SchemaRead<'de, C, Dst = Self>,

Like crate::ZeroCopy::from_bytes, but allows the caller to provide a custom configuration.
Source§

fn from_bytes_mut<'de>( bytes: &'de mut [u8], config: C, ) -> Result<&'de mut Self, ReadError>
where Self: Sized + SchemaRead<'de, C, Dst = Self>,

Like crate::ZeroCopy::from_bytes_mut, but allows the caller to provide a custom configuration.
Source§

impl Copy for VxlanHdr

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<'de, T> Deserialize<'de> for T
where T: SchemaRead<'de, Configuration>,

Source§

fn deserialize(src: &'de [u8]) -> Result<Self::Dst, ReadError>

Deserialize the input src bytes into a new Self::Dst.
Source§

fn deserialize_into( src: &'de [u8], dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize the input src bytes into dst.
Source§

impl<'de, T, C> Deserialize<'de, C> for T
where C: Config, T: SchemaRead<'de, C>,

Source§

fn deserialize(src: &'de [u8], config: C) -> Result<Self::Dst, ReadError>

Deserialize the input bytes into a new Self::Dst.
Source§

fn deserialize_into( src: &'de [u8], dst: &mut MaybeUninit<Self::Dst>, config: C, ) -> Result<(), ReadError>

Deserialize the input bytes into dst.
Source§

impl<T, C> DeserializeOwned<C> for T
where C: Config, T: SchemaReadOwned<C>,

Source§

fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Deserialize from the given Reader into a new Self::Dst.
Source§

fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize from the given Reader into dst.
Source§

impl<T> DeserializeOwned for T

Source§

fn deserialize_from<'de>(src: impl Reader<'de>) -> Result<Self::Dst, ReadError>

Deserialize from the given Reader into a new Self::Dst.
Source§

fn deserialize_from_into<'de>( src: impl Reader<'de>, dst: &mut MaybeUninit<Self::Dst>, ) -> Result<(), ReadError>

Deserialize from the given Reader into dst.
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, C> Serialize<C> for T
where C: Config, T: SchemaWrite<C> + ?Sized,

Source§

fn serialize_into( dst: impl Writer, src: &Self::Src, config: C, ) -> Result<(), WriteError>

Serialize a serializable type into the given Writer.
Source§

fn serialized_size(src: &Self::Src, config: C) -> Result<u64, WriteError>

Get the size in bytes of the type when serialized.
Source§

impl<T> Serialize for T

Source§

fn serialize_into(dst: impl Writer, src: &Self::Src) -> Result<(), WriteError>

Serialize a serializable type into the given byte buffer.
Source§

fn serialized_size(src: &Self::Src) -> Result<u64, WriteError>

Get the size in bytes of the type when serialized.
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> ZeroCopy for T

Source§

fn from_bytes<'de>(bytes: &'de [u8]) -> Result<&'de Self, ReadError>
where Self: Sized + SchemaRead<'de, Configuration, Dst = Self>,

Get a reference to a type from the given bytes. Read more
Source§

fn from_bytes_mut<'de>(bytes: &'de mut [u8]) -> Result<&'de mut Self, ReadError>
where Self: Sized + SchemaRead<'de, Configuration, Dst = Self>,

Get a mutable reference to a type from the given bytes. Read more
Source§

impl<T, C> SchemaReadOwned<C> for T
where C: ConfigCore, T: for<'de> SchemaRead<'de, C>,