Struct MacsecHeader

Source
pub struct MacsecHeader {
    pub ptype: MacsecPType,
    pub endstation_id: bool,
    pub scb: bool,
    pub an: MacsecAn,
    pub short_len: MacsecShortLen,
    pub packet_nr: u32,
    pub sci: Option<u64>,
}
Expand description

MACsec SecTag header (present at the start of a packet capsuled with MACsec).

Fields§

§ptype: MacsecPType

Payload type (contains encryption, modification flag as well as the next ether type if available)

§endstation_id: bool

End station identifier (TCI.ES flag).

§scb: bool

Ethernet passive optical network broadcast flag.

§an: MacsecAn

Association number (identifies SAs).

§short_len: MacsecShortLen

Short length with reserved bits.

§packet_nr: u32

Packet number.

§sci: Option<u64>

Secure channel identifier.

Implementations§

Source§

impl MacsecHeader

Source

pub const MIN_LEN: usize = 6usize

Minimum length of an MacSec header in bytes/octets.

Source

pub const MAX_LEN: usize = 16usize

Maximum length of an MacSec header (including ether type of payload) in bytes/octets.

Source

pub fn encrypted(&self) -> bool

Encryption flag, which indicates whether the user data is encrypted (true = encrypted, TCI.E flag).

Source

pub fn userdata_changed(&self) -> bool

Flag for change text, set if the user data is modified.

Source

pub fn next_ether_type(&self) -> Option<EtherType>

Ether type of the data following the mac sec tag.

Source

pub fn from_slice(slice: &[u8]) -> Result<MacsecHeader, HeaderSliceError>

Try creating a MacsecHeaderSlice from a slice containing the MACsec header & next ether type.

Source

pub fn to_bytes(&self) -> ArrayVec<u8, { MacsecHeader::MAX_LEN }>

Serialize the mac sec header.

Source

pub fn read<T: Read + Sized>( reader: &mut T, ) -> Result<MacsecHeader, HeaderReadError>

Available on crate feature std only.

Try reading a MACsec header from the position of the reader.

Source

pub fn write<T: Write + Sized>(&self, writer: &mut T) -> Result<(), Error>

Available on crate feature std only.

Writes a given MACsec header to the current position (SecTag & next ether type if available).

Source

pub fn header_len(&self) -> usize

Length of the MACsec header (SecTag + next ether type if available).

Source

pub fn expected_payload_len(&self) -> Option<usize>

Returns the required length of the payload (data after header + next_ether_type if present) if possible.

If the length cannot be determined (short_len is zero or less then 2 when ptype Unmodified) None is returned.

Source

pub fn set_payload_len(&mut self, payload_len: usize)

Set the short_len field based on the given payload byte len (payload len excluding the ether_type if ptype Unmodified) based on the current ptype.

Trait Implementations§

Source§

impl Clone for MacsecHeader

Source§

fn clone(&self) -> MacsecHeader

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 MacsecHeader

Source§

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

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

impl PartialEq for MacsecHeader

Source§

fn eq(&self, other: &MacsecHeader) -> 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 Eq for MacsecHeader

Source§

impl StructuralPartialEq for MacsecHeader

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.