packet_formats::ipv4

Struct Ipv4PacketRaw

Source
pub struct Ipv4PacketRaw<B> { /* private fields */ }
Expand description

A partially parsed and not yet validated IPv4 packet.

Ipv4PacketRaw provides minimal parsing of an IPv4 packet, namely it only requires that the fixed header part (HeaderPrefix) be retrieved, all the other parts of the packet may be missing when attempting to create it.

Ipv4Packet provides a [FromRaw] implementation that can be used to validate an Ipv4PacketRaw.

Implementations§

Source§

impl<B> Ipv4PacketRaw<B>

Source

pub fn options(&self) -> &MaybeParsed<OptionsRaw<B, Ipv4OptionsImpl>, B>

Gets the maybe parsed options from the raw packet.

Source§

impl<B: SplitByteSlice> Ipv4PacketRaw<B>

Source

pub fn body(&self) -> MaybeParsed<&[u8], &[u8]>

Return the body.

body returns [MaybeParsed::Complete] if the entire body is present (as determined by the header’s “total length” and “internet header length” fields), and [MaybeParsed::Incomplete] otherwise.

Source

pub fn into_body(self) -> MaybeParsed<B, B>

Consumes self returning the body.

See Ipv4PacketRaw::body for details on parsing completeness.

Source§

impl<B: SplitByteSliceMut> Ipv4PacketRaw<B>

Source

pub fn set_src_ip_and_update_checksum(&mut self, addr: Ipv4Addr)

Set the source IP address.

Set the source IP address and update the header checksum accordingly.

Source

pub fn set_dst_ip_and_update_checksum(&mut self, addr: Ipv4Addr)

Set the destination IP address.

Set the destination IP address and update the header checksum accordingly.

Trait Implementations§

Source§

impl<B: SplitByteSlice> FromRaw<Ipv4PacketRaw<B>, ()> for Ipv4Packet<B>

Source§

type Error = IpParseError<Ipv4>

The type of error that may happen during validation.
Source§

fn try_from_raw_with( raw: Ipv4PacketRaw<B>, _args: (), ) -> Result<Self, Self::Error>

Attempts to create Self from the raw form in raw with args.
§

fn try_from_raw(raw: R) -> Result<Self, Self::Error>
where Self: FromRaw<R, (), Error = Self::Error>,

Attempts to create Self from the raw form in raw.
Source§

impl<B: SplitByteSlice> Ipv4Header for Ipv4PacketRaw<B>

Source§

fn get_header_prefix(&self) -> &HeaderPrefix

Gets a reference to the IPv4 HeaderPrefix.
Source§

fn dscp_and_ecn(&self) -> DscpAndEcn

The Differentiated Services Code Point (DSCP) and the Explicit Congestion Notification (ECN).
Source§

fn id(&self) -> u16

The identification.
Source§

fn df_flag(&self) -> bool

The Don’t Fragment (DF) flag.
Source§

fn mf_flag(&self) -> bool

The More Fragments (MF) flag.
Source§

fn fragment_offset(&self) -> FragmentOffset

The fragment offset.
Source§

fn fragment_type(&self) -> Ipv4FragmentType

The fragment type. Read more
Source§

fn ttl(&self) -> u8

The Time To Live (TTL).
Source§

fn proto(&self) -> Ipv4Proto

The IP Protocol. Read more
Source§

fn src_ip(&self) -> Ipv4Addr

The source IP address.
Source§

fn dst_ip(&self) -> Ipv4Addr

The destination IP address.
Source§

fn builder(&self) -> Ipv4PacketBuilder

Construct a builder with the same contents as this header.
Source§

impl<B: SplitByteSlice> ParsablePacket<B, ()> for Ipv4PacketRaw<B>

Source§

type Error = IpParseError<Ipv4>

The type of errors returned from parse and parse_mut.
Source§

fn parse_metadata(&self) -> ParseMetadata

Gets metadata about this packet required by [GrowBuffer::undo_parse]. Read more
Source§

fn parse<BV: BufferView<B>>(buffer: BV, _args: ()) -> IpParseResult<Ipv4, Self>

Parses a packet from a buffer. Read more
§

fn parse_mut<BV>(buffer: BV, args: ParseArgs) -> Result<Self, Self::Error>
where BV: BufferViewMut<B>, B: SplitByteSliceMut,

Parses a packet from a mutable buffer. Read more

Auto Trait Implementations§

§

impl<B> Freeze for Ipv4PacketRaw<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for Ipv4PacketRaw<B>
where B: RefUnwindSafe,

§

impl<B> Send for Ipv4PacketRaw<B>
where B: Send,

§

impl<B> Sync for Ipv4PacketRaw<B>
where B: Sync,

§

impl<B> Unpin for Ipv4PacketRaw<B>
where B: Unpin,

§

impl<B> UnwindSafe for Ipv4PacketRaw<B>
where B: 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> 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 = 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.