Trait packet_formats::icmp::IcmpMessage

source ·
pub trait IcmpMessage<I: IcmpIpExt>: Sized + Copy + FromBytes + IntoBytes + KnownLayout + Immutable + Unaligned {
    type Code: Into<u8> + Copy + Debug;
    type Body<B: SplitByteSlice>: MessageBody<B = B>;

    const TYPE: I::IcmpMessageType;
    const EXPECTS_BODY: bool = true;

    // Required method
    fn code_from_u8(code: u8) -> Option<Self::Code>;
}
Expand description

An ICMP message.

Required Associated Types§

source

type Code: Into<u8> + Copy + Debug

The type of codes used with this message.

The ICMP header includes an 8-bit “code” field. For a given message type, different values of this field carry different meanings. Not all code values are used - some may be invalid. This type represents a parsed code. For example, for TODO, it is the TODO type.

source

type Body<B: SplitByteSlice>: MessageBody<B = B>

The type of the body used with this message.

Required Associated Constants§

source

const TYPE: I::IcmpMessageType

The type corresponding to this message type.

The value of the “type” field in the ICMP header corresponding to messages of this type.

Provided Associated Constants§

source

const EXPECTS_BODY: bool = true

Whether or not a message body is expected in an ICMP packet.

Required Methods§

source

fn code_from_u8(code: u8) -> Option<Self::Code>

Parse a Code from an 8-bit number.

Parse a Code from the 8-bit “code” field in the ICMP header. Not all values for this field are valid. If an invalid value is passed, code_from_u8 returns None.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl IcmpMessage<Ipv4> for IcmpDestUnreachable

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv4DestUnreachableCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x01): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv4> for IcmpTimeExceeded

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv4TimeExceededCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x04): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv4> for Icmpv4ParameterProblem

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv4ParameterProblemCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x05): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv4> for Icmpv4Redirect

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv4RedirectCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x02): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv4> for Icmpv4TimestampReply

source§

const EXPECTS_BODY: bool = false

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = EmptyMessage<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x07): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv4> for Icmpv4TimestampRequest

source§

const EXPECTS_BODY: bool = false

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = EmptyMessage<B>

source§

const TYPE: <Ipv4 as IcmpIpExt>::IcmpMessageType = {transmute(0x06): <net_types::ip::Ipv4 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for MulticastListenerDone

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Mldv1Body<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0d): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for MulticastListenerQuery

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Mldv1Body<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0b): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for MulticastListenerQueryV2

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Mldv2QueryBody<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0b): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for MulticastListenerReport

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Mldv1Body<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0c): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for MulticastListenerReportV2

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Mldv2ReportBody<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0e): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for NeighborAdvertisement

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Records<B, NdpOptionsImpl>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x09): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for NeighborSolicitation

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Records<B, NdpOptionsImpl>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x08): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for Redirect

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Records<B, NdpOptionsImpl>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x0a): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for RouterAdvertisement

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Records<B, NdpOptionsImpl>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x07): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for RouterSolicitation

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = Records<B, NdpOptionsImpl>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x06): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for IcmpDestUnreachable

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv6DestUnreachableCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x00): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for IcmpTimeExceeded

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv6TimeExceededCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x02): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for Icmpv6PacketTooBig

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x01): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl IcmpMessage<Ipv6> for Icmpv6ParameterProblem

source§

const EXPECTS_BODY: bool = true

§

type Code = Icmpv6ParameterProblemCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: <Ipv6 as IcmpIpExt>::IcmpMessageType = {transmute(0x03): <net_types::ip::Ipv6 as icmp::IcmpIpExt>::IcmpMessageType}

source§

impl<I: IcmpIpExt> IcmpMessage<I> for IcmpEchoReply

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: I::IcmpMessageType = I::ECHO_REPLY

source§

impl<I: IcmpIpExt> IcmpMessage<I> for IcmpEchoRequest

source§

const EXPECTS_BODY: bool = true

§

type Code = IcmpUnusedCode

§

type Body<B: SplitByteSlice> = OriginalPacket<B>

source§

const TYPE: I::IcmpMessageType = I::ECHO_REQUEST