Struct etherparse::SlicedPacket [−][src]
A sliced into its component headers. Everything that could not be parsed is stored in a slice in the field "payload".
Fields
link: Option<LinkSlice<'a>>
vlan: Option<VlanSlice<'a>>
ip: Option<InternetSlice<'a>>
transport: Option<TransportSlice<'a>>
payload: &'a [u8]
The payload field points to the rest of the packet that could not be parsed by etherparse.
Depending on what other fields contain a "Some" values the payload contains the corresponding payload.
For example if transport field contains Some(Udp(_)) then the payload field points to the udp payload. On the other hand if the transport field contains None then the payload contains the payload of next field containing a Some value (in order of transport, ip, vlan, link).
Implementations
impl<'a> SlicedPacket<'a>
[src]
pub fn from_ethernet(data: &'a [u8]) -> Result<SlicedPacket<'_>, ReadError>
[src]
Seperates a network packet slice into different slices containing the headers from the ethernet header downwards.
The result is returned as a SlicerPacket struct. This function assumes the given data starts with an ethernet II header.
Examples
Basic usage:
match SlicedPacket::from_ethernet(&packet) { Err(value) => println!("Err {:?}", value), Ok(value) => { println!("link: {:?}", value.link); println!("vlan: {:?}", value.vlan); println!("ip: {:?}", value.ip); println!("transport: {:?}", value.transport); } }
pub fn from_ip(data: &'a [u8]) -> Result<SlicedPacket<'_>, ReadError>
[src]
Seperates a network packet slice into different slices containing the headers from the ip header downwards.
The result is returned as a SlicerPacket struct. This function assumes the given data starts with an IPv4 or IPv6 header.
Examples
Basic usage:
match SlicedPacket::from_ip(&packet) { Err(value) => println!("Err {:?}", value), Ok(value) => { //link & vlan fields are empty when parsing from ip downwards assert_eq!(None, value.link); assert_eq!(None, value.vlan); //ip & transport (udp or tcp) println!("ip: {:?}", value.ip); println!("transport: {:?}", value.transport); } }
Trait Implementations
impl<'a> Clone for SlicedPacket<'a>
[src]
fn clone(&self) -> SlicedPacket<'a>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<'a> Debug for SlicedPacket<'a>
[src]
impl<'a> Eq for SlicedPacket<'a>
[src]
impl<'a> PartialEq<SlicedPacket<'a>> for SlicedPacket<'a>
[src]
fn eq(&self, other: &SlicedPacket<'a>) -> bool
[src]
fn ne(&self, other: &SlicedPacket<'a>) -> bool
[src]
impl<'a> StructuralEq for SlicedPacket<'a>
[src]
impl<'a> StructuralPartialEq for SlicedPacket<'a>
[src]
Auto Trait Implementations
impl<'a> RefUnwindSafe for SlicedPacket<'a>
[src]
impl<'a> Send for SlicedPacket<'a>
[src]
impl<'a> Sync for SlicedPacket<'a>
[src]
impl<'a> Unpin for SlicedPacket<'a>
[src]
impl<'a> UnwindSafe for SlicedPacket<'a>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,