pub enum IpParseError<I: IcmpIpExt> {
    Parse {
        error: ParseError,
    },
    ParameterProblem {
        src_ip: I::Addr,
        dst_ip: I::Addr,
        code: I::ParameterProblemCode,
        pointer: I::ParameterProblemPointer,
        must_send_icmp: bool,
        header_len: I::HeaderLen,
        action: IpParseErrorAction,
    },
}
Expand description

Error type for IP packet parsing.

Variants§

§

Parse

Fields

§

ParameterProblem

For errors where an ICMP Parameter Problem error needs to be sent to the source of a packet.

Fields

§src_ip: I::Addr

The packet’s source IP address.

§dst_ip: I::Addr

The packet’s destination IP address.

§code: I::ParameterProblemCode

The ICMPv4 or ICMPv6 parameter problem code that provides more granular information about the parameter problem encountered.

§pointer: I::ParameterProblemPointer

The offset of the erroneous value within the IP packet.

§must_send_icmp: bool

Whether an IP node MUST send an ICMP response if action specifies it.

See action for more details.

§header_len: I::HeaderLen

The length of the header up to the point of the parameter problem error.

§action: IpParseErrorAction

The action IP nodes should take upon encountering this error.

If must_send_icmp is true, IP nodes MUST send an ICMP response if action specifies it. Otherwise, the node MAY choose to discard the packet and do nothing further.

If the packet was an IPv4 non-initial fragment, action will be IpParseErrorAction::DiscardPacket.

Trait Implementations§

source§

impl<I: Debug + IcmpIpExt> Debug for IpParseError<I>

source§

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

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

impl<I: IcmpIpExt> Display for IpParseError<I>

source§

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

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

impl<I: IcmpIpExt> Error for IpParseError<I>
where Self: Debug + Display,

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl<I: IcmpIpExt> From<OptionParseErr> for IpParseError<I>

source§

fn from(error: OptionParseErr) -> Self

Converts to this type from the input type.
source§

impl<I: IcmpIpExt> From<ParseError> for IpParseError<I>

source§

fn from(source: ParseError) -> Self

Converts to this type from the input type.
source§

impl<I: PartialEq + IcmpIpExt> PartialEq for IpParseError<I>

source§

fn eq(&self, other: &IpParseError<I>) -> 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.
source§

impl<I: IcmpIpExt> StructuralPartialEq for IpParseError<I>

Auto Trait Implementations§

§

impl<I> Freeze for IpParseError<I>

§

impl<I> RefUnwindSafe for IpParseError<I>

§

impl<I> Send for IpParseError<I>
where I: IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + 'static,

§

impl<I> Sync for IpParseError<I>
where I: IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + 'static,

§

impl<I> Unpin for IpParseError<I>
where I: IpProtoExt + Ip + Sealed + Sync + Send + PartialOrd + PartialEq + Ord + Hash + Eq + Default + Debug + Copy + Clone + 'static, <I as Ip>::Addr: Unpin, <I as IcmpIpExt>::ParameterProblemCode: Unpin, <I as IcmpIpExt>::ParameterProblemPointer: Unpin, <I as IcmpIpExt>::HeaderLen: Unpin,

§

impl<I> UnwindSafe for IpParseError<I>

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> ToString for T
where 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 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