Skip to main content

Icmpv6Hdr

Struct Icmpv6Hdr 

Source
#[repr(C)]
pub struct Icmpv6Hdr { pub type_: u8, pub code: u8, pub check: [u8; 2], pub data: [u8; 4], }
Expand description

Represents an ICMPv6 header as defined in RFC 4443. The header consists of a type and code field identifying the message type, a checksum for error detection, and a data field whose format depends on the message type.

The type_ field identifies the general category of message, such as:

  • 1: Destination Unreachable
  • 2: Packet Too Big
  • 3: Time Exceeded
  • 4: Parameter Problem
  • 128: Echo Request
  • 129: Echo Reply

The code field provides additional context for the message type.

The check field contains a checksum calculated over an IPv6 pseudo-header, the ICMPv6 header, and its payload.

The data field contains type-specific data such as echo identifiers/sequence numbers, MTU values, or pointers to errors in received packets.

Fields§

§type_: u8§code: u8§check: [u8; 2]§data: [u8; 4]

Implementations§

Source§

impl Icmpv6Hdr

Source

pub const LEN: usize

Source

pub fn icmp_type(&self) -> Result<Icmpv6Type, IcmpError>

Source

pub fn checksum(&self) -> u16

Returns the ICMPv6 header checksum value in host byte order. This field is used to detect corruption in the ICMPv6 header and payload.

Source

pub fn set_checksum(&mut self, checksum: u16)

Sets the ICMPv6 header checksum field to the given value. The checksum value should be calculated over the pseudo-header, ICMPv6 header, and payload according to RFC 4443. The value will be stored in network byte order.

Source

pub fn data(&self) -> Result<Icmpv6HdrData<'_>, IcmpError>

Returns a type-safe view over the data bytes based on the ICMPv6 type.

Source

pub fn data_mut(&mut self) -> Result<Icmpv6HdrDataMut<'_>, IcmpError>

Returns a mutable type-safe view over the data bytes based on the ICMPv6 type.

Source§

impl Icmpv6Hdr

These are the unsafe alternatives to the safe functions on Icmpv6Hdr that do prevent undefined behavior.

Source

pub unsafe fn id_sequence_unchecked(&self) -> &IcmpIdSequence

Returns a reference to the ID and sequence fields.

§Safety

Caller must ensure ICMPv6 type is 128 (Echo Request) or 129 (Echo Reply) before calling this function. Accessing the fields with other ICMPv6 types may result in undefined behavior.

Source

pub unsafe fn id_sequence_mut_unchecked(&mut self) -> &mut IcmpIdSequence

Returns a mutable reference to the ID and sequence fields.

§Safety

Caller must ensure ICMPv6 type is 128 (Echo Request) or 129 (Echo Reply) before calling this function. Accessing the fields with other ICMPv6 types may result in undefined behavior.

Source

pub unsafe fn packet_too_big_unchecked(&self) -> &IcmpPacketTooBig

Returns a reference to the Packet Too Big message (Type 2).

§Safety

Caller must ensure ICMPv6 type is 2 (Packet Too Big) before calling. Accessing the fields with other types may result in undefined behavior.

Source

pub unsafe fn packet_too_big_mut_unchecked(&mut self) -> &mut IcmpPacketTooBig

Returns a mutable reference to the Packet Too Big message (Type 2).

§Safety

Caller must ensure ICMPv6 type is 2 (Packet Too Big) before calling. Accessing the fields with other types may result in undefined behavior.

Source

pub unsafe fn parameter_problem_unchecked(&self) -> &Icmpv6ParamProblem

Returns a reference to the Parameter Problem message (Type 4).

§Safety

Caller must ensure ICMPv6 type is 4 (Parameter Problem) before calling. Accessing the fields with other types may result in undefined behavior.

Source

pub unsafe fn parameter_problem_mut_unchecked( &mut self, ) -> &mut Icmpv6ParamProblem

Returns a mutable reference to the Parameter Problem message (Type 4).

§Safety

Caller must ensure ICMPv6 type is 4 (Parameter Problem) before calling. Accessing the fields with other types may result in undefined behavior.

Source

pub unsafe fn redirect_unchecked(&self) -> &Icmpv6Redirect

Returns a reference to the ICMPv6 Redirect message (Type 137). This field is currently unused and MUST be initialized to zeros by the sender.

§Safety

Caller must ensure ICMPv6 type is 137 (Redirect) before calling. Accessing redirect fields with other types may result in undefined behavior.

Source

pub unsafe fn redirect_mut_unchecked(&mut self) -> &mut Icmpv6Redirect

Returns a mutable reference to the ICMPv6 Redirect message (Type 137). This field is currently unused and MUST be initialized to zeros by the sender.

§Safety

Caller must ensure ICMPv6 type is 137 (Redirect) before calling. Accessing redirect fields with other types may result in undefined behavior.

Trait Implementations§

Source§

impl Clone for Icmpv6Hdr

Source§

fn clone(&self) -> Icmpv6Hdr

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 Icmpv6Hdr

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 Icmpv6Hdr

Source§

const TYPE_META: TypeMeta

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

type Dst = Icmpv6Hdr

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 Icmpv6Hdr

Source§

const TYPE_META: TypeMeta

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

type Src = Icmpv6Hdr

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 Icmpv6Hdr
where for<'_wincode_internal, '_wincode_internal> u8: ZeroCopy<WincodeConfig>, for<'_wincode_internal> [u8; 2]: ZeroCopy<WincodeConfig>, for<'_wincode_internal> [u8; 4]: 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 Icmpv6Hdr

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