pub struct ICMPPacket {
pub icmp_type: u8,
pub code: u8,
pub checksum: u16,
pub identifier: u16,
pub sequence_number: u16,
pub body: Vec<u8>,
}
Expand description
An ICMP4Packet (ping packet) https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#header_rest
Fields§
§icmp_type: u8
§code: u8
§checksum: u16
§identifier: u16
§sequence_number: u16
§body: Vec<u8>
Implementations§
Source§impl ICMPPacket
impl ICMPPacket
Sourcepub fn echo_request(
identifier: u16,
sequence_number: u16,
body: Vec<u8>,
src: u32,
dst: u32,
ttl: u8,
info_url: &str,
) -> Vec<u8> ⓘ
pub fn echo_request( identifier: u16, sequence_number: u16, body: Vec<u8>, src: u32, dst: u32, ttl: u8, info_url: &str, ) -> Vec<u8> ⓘ
Create a basic ICMPv4 ECHO_REQUEST (8.0) packet with checksum.
§Arguments
-
‘identifier’ - the identifier for the ICMP header
-
‘sequence_number’ - the sequence number for the ICMP header
-
‘body’ - the ICMP payload
-
‘src’ - the source address of the packet
-
‘dst’ - the destination address of the packet
-
‘ttl’ - the time to live of the packet
-
‘info_url’ - the URL to be added to the packet payload (e.g., opt-out URL)
Sourcepub fn echo_request_v6(
identifier: u16,
sequence_number: u16,
body: Vec<u8>,
src: u128,
dst: u128,
hop_limit: u8,
info_url: &str,
) -> Vec<u8> ⓘ
pub fn echo_request_v6( identifier: u16, sequence_number: u16, body: Vec<u8>, src: u128, dst: u128, hop_limit: u8, info_url: &str, ) -> Vec<u8> ⓘ
Create an ICMPv6 echo request packet with checksum
§Arguments
-
‘identifier’ - the identifier for this packet
-
‘sequence_number’ - the sequence number for this packet
-
‘body’ - the payload of the packet
-
‘src’ - the source address of the packet
-
‘dst’ - the destination address of the packet
-
‘hop_limit’ - the hop limit (TTL) of the packet
-
‘info_url’ - URL encoded in packet payload (e.g., opt-out URL)
Sourcefn calc_checksum(buffer: &[u8]) -> u16
fn calc_checksum(buffer: &[u8]) -> u16
Calculate the ICMP Checksum.
This calculation covers the entire ICMP message (16-bit one’s complement). Works for both ICMPv4 and ICMPv6
Trait Implementations§
Source§impl Debug for ICMPPacket
impl Debug for ICMPPacket
Source§impl From<&[u8]> for ICMPPacket
Parsing from bytes to ICMP4Packet
impl From<&[u8]> for ICMPPacket
Parsing from bytes to ICMP4Packet
Source§impl From<&ICMPPacket> for Vec<u8>
Convert ICMp4Packet into a vector of bytes
impl From<&ICMPPacket> for Vec<u8>
Convert ICMp4Packet into a vector of bytes
Source§fn from(packet: &ICMPPacket) -> Self
fn from(packet: &ICMPPacket) -> Self
Auto Trait Implementations§
impl Freeze for ICMPPacket
impl RefUnwindSafe for ICMPPacket
impl Send for ICMPPacket
impl Sync for ICMPPacket
impl Unpin for ICMPPacket
impl UnwindSafe for ICMPPacket
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered
].