xarxa

Crates

git

Versions

default

Flavors

Skip to main content

Ipv4Packet

Struct Ipv4Packet 

Source
pub struct Ipv4Packet<'a> { /* private fields */ }
Expand description

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

Implementations§

Source§

impl<'a> Packet<'a>

Source

pub const fn new_unchecked(buffer: &'a mut [u8]) -> Packet<'a>

Imbue a raw octet buffer with IPv4 packet structure.

Source

pub fn new_checked(buffer: &'a mut [u8]) -> Result<Packet<'a>>

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. Returns Err(Error) if the header length is greater than total length. Returns Err(Error) if the header length is less than minimum allowed IHL

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

Source

pub fn version(&self) -> u8

Return the version field.

Source

pub fn header_len(&self) -> u8

Return the header length, in octets.

Source

pub fn dscp(&self) -> u8

Return the Differential Services Code Point field.

Source

pub fn ecn(&self) -> u8

Return the Explicit Congestion Notification field.

Source

pub fn total_len(&self) -> u16

Return the total length field.

Source

pub fn ident(&self) -> u16

Return the fragment identification field.

Source

pub fn dont_frag(&self) -> bool

Return the “don’t fragment” flag.

Source

pub fn more_frags(&self) -> bool

Return the “more fragments” flag.

Source

pub fn frag_offset(&self) -> u16

Return the fragment offset, in octets.

Source

pub fn hop_limit(&self) -> u8

Return the time to live field.

Source

pub fn next_header(&self) -> Protocol

Return the next_header (protocol) field.

Source

pub fn checksum(&self) -> u16

Return the header checksum field.

Source

pub fn src_addr(&self) -> Address

Return the source address field.

Source

pub fn dst_addr(&self) -> Address

Return the destination address field.

Source

pub fn verify_checksum(&self) -> bool

Validate the header checksum.

§Fuzzing

This function always returns true when fuzzing.

Source

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

Return a pointer to the payload.

Source

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

Set the version field.

Source

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

Set the header length, in octets.

Source

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

Set the Differential Services Code Point field.

Source

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

Set the Explicit Congestion Notification field.

Source

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

Set the total length field.

Source

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

Set the fragment identification field.

Source

pub fn clear_flags(&mut self)

Clear the entire flags field.

Source

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

Set the “don’t fragment” flag.

Source

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

Set the “more fragments” flag.

Source

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

Set the fragment offset, in octets.

Source

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

Set the time to live field.

Source

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

Set the next header (protocol) field.

Source

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

Set the header checksum field.

Source

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

Set the source address field.

Source

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

Set the destination address field.

Source

pub fn fill_checksum(&mut self)

Compute and fill in the header checksum.

Source

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

Return a mutable pointer to the payload.

Trait Implementations§

Source§

impl<'a> AsRef<[u8]> for Packet<'a>

Source§

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

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

impl<'a> Debug for Packet<'a>

Source§

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

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

impl<'a> Eq for Packet<'a>

Source§

impl<'a> PartialEq for Packet<'a>

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for Packet<'a>

Auto Trait Implementations§

§

impl<'a> !UnwindSafe for Packet<'a>

§

impl<'a> Freeze for Packet<'a>

§

impl<'a> RefUnwindSafe for Packet<'a>

§

impl<'a> Send for Packet<'a>

§

impl<'a> Sync for Packet<'a>

§

impl<'a> Unpin for Packet<'a>

§

impl<'a> UnsafeUnpin for Packet<'a>

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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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.