pub struct ICMPPacket {
pub icmp_type: u8,
pub code: u8,
pub checksum: u16,
pub icmp_identifier: u16,
pub sequence_number: u16,
pub payload: Vec<u8>,
}Expand description
An ICMP Packet (ping packet) https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#header_rest
Fields§
§icmp_type: u8§code: u8§checksum: u16§icmp_identifier: u16§sequence_number: u16§payload: Vec<u8>Implementations§
Source§impl ICMPPacket
impl ICMPPacket
Sourcepub fn echo_request(
icmp_identifier: u16,
sequence_number: u16,
body: Vec<u8>,
src: &Address,
dst: &Address,
ttl: u8,
) -> Vec<u8> ⓘ
pub fn echo_request( icmp_identifier: u16, sequence_number: u16, body: Vec<u8>, src: &Address, dst: &Address, ttl: u8, ) -> Vec<u8> ⓘ
Create a basic ICMP ECHO_REQUEST (8.0) packet with checksum.
§Arguments
icmp_identifier- the identifier for the ICMP headersequence_number- the sequence number for the ICMP headerbody- the ICMP payloadsrc- the source address of the packetdst- the destination address of the packetttl- the time to live of the packet
Sourcepub(crate) fn calc_checksum(buffer: &[u8]) -> u16
pub(crate) 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 ICMPPacket
impl From<&[u8]> for ICMPPacket
Parsing from bytes to ICMPPacket
Source§impl From<&ICMPPacket> for Vec<u8>
Convert ICMP Packet into a vector of bytes
impl From<&ICMPPacket> for Vec<u8>
Convert ICMP Packet into a vector of bytes
Source§fn from(packet: &ICMPPacket) -> Self
fn from(packet: &ICMPPacket) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for ICMPPacket
impl RefUnwindSafe for ICMPPacket
impl Send for ICMPPacket
impl Sync for ICMPPacket
impl Unpin for ICMPPacket
impl UnsafeUnpin for ICMPPacket
impl UnwindSafe for ICMPPacket
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
§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>
Wrap the input message
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>,
Applies the layer to a service and wraps it in [
Layered].