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: ByteSlice> 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.

Trait Implementations§

source§

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

§

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

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

source§

fn get_header_prefix(&self) -> &HeaderPrefix

Gets a reference to the IPv4 HeaderPrefix.
source§

fn dscp(&self) -> u8

The Differentiated Services Code Point (DSCP).
source§

fn ecn(&self) -> u8

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) -> u16

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§

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

§

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

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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>,

§

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

§

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<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more