smoltcp::wire

Struct Icmpv6Packet

Source
pub struct Icmpv6Packet<T: AsRef<[u8]>> { /* private fields */ }
Expand description

A read/write wrapper around an Internet Control Message Protocol version 6 packet buffer.

Implementations§

Source§

impl<T: AsRef<[u8]>> Packet<T>

Source

pub const fn new_unchecked(buffer: T) -> Packet<T>

Imbue a raw octet buffer with ICMPv6 packet structure.

Source

pub fn new_checked(buffer: T) -> Result<Packet<T>>

Shorthand for a combination of new_unchecked and check_len.

Source

pub fn check_len(&self) -> Result<()>

Ensure that no accessor method will panic if called. Returns Err(Error) if the buffer is too short.

Source

pub fn into_inner(self) -> T

Consume the packet, returning the underlying buffer.

Source

pub fn msg_type(&self) -> Message

Return the message type field.

Source

pub fn msg_code(&self) -> u8

Return the message code field.

Source

pub fn checksum(&self) -> u16

Return the checksum field.

Source

pub fn echo_ident(&self) -> u16

Return the identifier field (for echo request and reply packets).

Source

pub fn echo_seq_no(&self) -> u16

Return the sequence number field (for echo request and reply packets).

Source

pub fn pkt_too_big_mtu(&self) -> u32

Return the MTU field (for packet too big messages).

Source

pub fn param_problem_ptr(&self) -> u32

Return the pointer field (for parameter problem messages).

Source

pub fn header_len(&self) -> usize

Return the header length. The result depends on the value of the message type field.

Source

pub fn verify_checksum( &self, src_addr: &IpAddress, dst_addr: &IpAddress, ) -> bool

Validate the header checksum.

§Fuzzing

This function always returns true when fuzzing.

Source§

impl<'a, T: AsRef<[u8]> + ?Sized> Packet<&'a T>

Source

pub fn payload(&self) -> &'a [u8]

Return a pointer to the type-specific data.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Source

pub fn set_msg_type(&mut self, value: Message)

Set the message type field.

Source

pub fn set_msg_code(&mut self, value: u8)

Set the message code field.

Source

pub fn clear_reserved(&mut self)

Clear any reserved fields in the message header.

§Panics

This function panics if the message type has not been set. See set_msg_type.

Source

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

Source

pub fn set_echo_ident(&mut self, value: u16)

Set the identifier field (for echo request and reply packets).

§Panics

This function may panic if this packet is not an echo request or reply packet.

Source

pub fn set_echo_seq_no(&mut self, value: u16)

Set the sequence number field (for echo request and reply packets).

§Panics

This function may panic if this packet is not an echo request or reply packet.

Source

pub fn set_pkt_too_big_mtu(&mut self, value: u32)

Set the MTU field (for packet too big messages).

§Panics

This function may panic if this packet is not an packet too big packet.

Source

pub fn set_param_problem_ptr(&mut self, value: u32)

Set the pointer field (for parameter problem messages).

§Panics

This function may panic if this packet is not a parameter problem message.

Source

pub fn fill_checksum(&mut self, src_addr: &IpAddress, dst_addr: &IpAddress)

Compute and fill in the header checksum.

Source

pub fn payload_mut(&mut self) -> &mut [u8]

Return a mutable pointer to the type-specific data.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Getters for the Multicast Listener Query message header. See RFC 3810 § 5.1.

Source

pub fn max_resp_code(&self) -> u16

Return the maximum response code field.

Source

pub fn mcast_addr(&self) -> Ipv6Address

Return the address being queried.

Source

pub fn s_flag(&self) -> bool

Return the Suppress Router-Side Processing flag.

Source

pub fn qrv(&self) -> u8

Return the Querier’s Robustness Variable.

Source

pub fn qqic(&self) -> u8

Return the Querier’s Query Interval Code.

Source

pub fn num_srcs(&self) -> u16

Return number of sources.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Getters for the Multicast Listener Report message header. See RFC 3810 § 5.2.

Source

pub fn nr_mcast_addr_rcrds(&self) -> u16

Return the number of Multicast Address Records.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Setters for the Multicast Listener Query message header. See RFC 3810 § 5.1.

Source

pub fn set_max_resp_code(&mut self, code: u16)

Set the maximum response code field.

Source

pub fn set_mcast_addr(&mut self, addr: Ipv6Address)

Set the address being queried.

Source

pub fn set_s_flag(&mut self)

Set the Suppress Router-Side Processing flag.

Source

pub fn clear_s_flag(&mut self)

Clear the Suppress Router-Side Processing flag.

Source

pub fn set_qrv(&mut self, value: u8)

Set the Querier’s Robustness Variable.

Source

pub fn set_qqic(&mut self, value: u8)

Set the Querier’s Query Interval Code.

Source

pub fn set_num_srcs(&mut self, value: u16)

Set number of sources.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Setters for the Multicast Listener Report message header. See RFC 3810 § 5.2.

Source

pub fn set_nr_mcast_addr_rcrds(&mut self, value: u16)

Set the number of Multicast Address Records.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Getters for the Router Advertisement message header. See RFC 4861 § 4.2.

Source

pub fn current_hop_limit(&self) -> u8

Return the current hop limit field.

Source

pub fn router_flags(&self) -> RouterFlags

Return the Router Advertisement flags.

Source

pub fn router_lifetime(&self) -> Duration

Return the router lifetime field.

Source

pub fn reachable_time(&self) -> Duration

Return the reachable time field.

Source

pub fn retrans_time(&self) -> Duration

Return the retransmit time field.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Common getters for the Neighbor Solicitation, Neighbor Advertisement, and Redirect message types.

Source

pub fn target_addr(&self) -> Ipv6Address

Return the target address field.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Getters for the Neighbor Solicitation message header. See RFC 4861 § 4.3.

Source

pub fn neighbor_flags(&self) -> NeighborFlags

Return the Neighbor Solicitation flags.

Source§

impl<T: AsRef<[u8]>> Packet<T>

Getters for the Redirect message header. See RFC 4861 § 4.5.

Source

pub fn dest_addr(&self) -> Ipv6Address

Return the destination address field.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Setters for the Router Advertisement message header. See RFC 4861 § 4.2.

Source

pub fn set_current_hop_limit(&mut self, value: u8)

Set the current hop limit field.

Source

pub fn set_router_flags(&mut self, flags: RouterFlags)

Set the Router Advertisement flags.

Source

pub fn set_router_lifetime(&mut self, value: Duration)

Set the router lifetime field.

Source

pub fn set_reachable_time(&mut self, value: Duration)

Set the reachable time field.

Source

pub fn set_retrans_time(&mut self, value: Duration)

Set the retransmit time field.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Common setters for the Neighbor Solicitation, Neighbor Advertisement, and Redirect message types.

Source

pub fn set_target_addr(&mut self, value: Ipv6Address)

Set the target address field.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Setters for the Neighbor Solicitation message header. See RFC 4861 § 4.3.

Source

pub fn set_neighbor_flags(&mut self, flags: NeighborFlags)

Set the Neighbor Solicitation flags.

Source§

impl<T: AsRef<[u8]> + AsMut<[u8]>> Packet<T>

Setters for the Redirect message header. See RFC 4861 § 4.5.

Source

pub fn set_dest_addr(&mut self, value: Ipv6Address)

Set the destination address field.

Trait Implementations§

Source§

impl<T: AsRef<[u8]>> AsRef<[u8]> for Packet<T>

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: Clone + AsRef<[u8]>> Clone for Packet<T>

Source§

fn clone(&self) -> Packet<T>

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<T: Debug + AsRef<[u8]>> Debug for Packet<T>

Source§

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

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

impl<T: PartialEq + AsRef<[u8]>> PartialEq for Packet<T>

Source§

fn eq(&self, other: &Packet<T>) -> 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<T: Eq + AsRef<[u8]>> Eq for Packet<T>

Source§

impl<T: AsRef<[u8]>> StructuralPartialEq for Packet<T>

Auto Trait Implementations§

§

impl<T> Freeze for Packet<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Packet<T>
where T: RefUnwindSafe,

§

impl<T> Send for Packet<T>
where T: Send,

§

impl<T> Sync for Packet<T>
where T: Sync,

§

impl<T> Unpin for Packet<T>
where T: Unpin,

§

impl<T> UnwindSafe for Packet<T>
where T: UnwindSafe,

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.