Struct net::wire::Ipv4Packet

pub struct Ipv4Packet<T>where
    T: AsRef<[u8]>,{ /* private fields */ }
Expand description

A read/write wrapper around an Internet Protocol version 4 packet buffer.

Implementations§

§

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

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

Imbue a raw octet buffer with IPv4 packet structure.

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

Shorthand for a combination of new_unchecked and check_len.

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

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

The result of this check is invalidated by calling set_header_len and set_total_len.

pub fn into_inner(self) -> T

Consume the packet, returning the underlying buffer.

pub fn version(&self) -> u8

Return the version field.

pub fn header_len(&self) -> u8

Return the header length, in octets.

pub fn dscp(&self) -> u8

Return the Differential Services Code Point field.

pub fn ecn(&self) -> u8

Return the Explicit Congestion Notification field.

pub fn total_len(&self) -> u16

Return the total length field.

pub fn ident(&self) -> u16

Return the fragment identification field.

pub fn dont_frag(&self) -> bool

Return the “don’t fragment” flag.

pub fn more_frags(&self) -> bool

Return the “more fragments” flag.

pub fn frag_offset(&self) -> u16

Return the fragment offset, in octets.

pub fn hop_limit(&self) -> u8

Return the time to live field.

pub fn next_header(&self) -> Protocol

Return the next_header (protocol) field.

pub fn checksum(&self) -> u16

Return the header checksum field.

pub fn src_addr(&self) -> Address

Return the source address field.

pub fn dst_addr(&self) -> Address

Return the destination address field.

pub fn verify_checksum(&self) -> bool

Validate the header checksum.

Fuzzing

This function always returns true when fuzzing.

pub fn get_key(&self) -> Key

Returns the key for identifying the packet.

§

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

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

Return a pointer to the payload.

§

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

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

Set the version field.

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

Set the header length, in octets.

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

Set the Differential Services Code Point field.

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

Set the Explicit Congestion Notification field.

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

Set the total length field.

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

Set the fragment identification field.

pub fn clear_flags(&mut self)

Clear the entire flags field.

pub fn set_dont_frag(&mut self, value: bool)

Set the “don’t fragment” flag.

pub fn set_more_frags(&mut self, value: bool)

Set the “more fragments” flag.

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

Set the fragment offset, in octets.

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

Set the time to live field.

pub fn set_next_header(&mut self, value: Protocol)

Set the next header (protocol) field.

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

Set the header checksum field.

pub fn set_src_addr(&mut self, value: Address)

Set the source address field.

pub fn set_dst_addr(&mut self, value: Address)

Set the destination address field.

pub fn fill_checksum(&mut self)

Compute and fill in the header checksum.

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

Return a mutable pointer to the payload.

Trait Implementations§

§

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

§

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

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

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

§

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
§

impl<T> Debug for Packet<T>where T: Debug + AsRef<[u8]>,

§

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

Formats the value using the given formatter. Read more
§

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

§

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

Formats the value using the given formatter. Read more
§

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

§

fn eq(&self, other: &Packet<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<T> PrettyPrint for Packet<T>where T: AsRef<[u8]>,

§

fn pretty_print( buffer: &dyn AsRef<[u8]>, f: &mut Formatter<'_>, indent: &mut PrettyIndent ) -> Result<(), Error>

Write a concise, formatted representation of a packet contained in the provided buffer, and any nested packets it may contain. Read more
§

impl<T> Eq for Packet<T>where T: Eq + AsRef<[u8]>,

§

impl<T> StructuralEq for Packet<T>where T: AsRef<[u8]>,

§

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

Auto Trait Implementations§

§

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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 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 Twhere 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.

§

impl<Ctx, T> MeasureWith<Ctx> for Twhere T: AsRef<[u8]>,

§

type Units = usize

§

fn measure_with(&self, _ctx: &Ctx) -> <T as MeasureWith<Ctx>>::Units

How large is Self, given the ctx?
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V