Struct etherparse::SlicedPacket [−][src]
pub struct SlicedPacket<'a> {
pub link: Option<LinkSlice<'a>>,
pub vlan: Option<VlanSlice<'a>>,
pub ip: Option<InternetSlice<'a>>,
pub transport: Option<TransportSlice<'a>>,
pub payload: &'a [u8],
}
Expand description
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>>
IP Extension headers present after the ip header.
In case of IPV4 these can be ipsec authentication & encapsulated security headers. In case of IPv6 these are the ipv6 extension headers. The headers are in the same order as they are written to the packet.
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
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);
}
}
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
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
This method tests for !=
.
Auto Trait Implementations
impl<'a> RefUnwindSafe for SlicedPacket<'a>
impl<'a> Send for SlicedPacket<'a>
impl<'a> Sync for SlicedPacket<'a>
impl<'a> Unpin for SlicedPacket<'a>
impl<'a> UnwindSafe for SlicedPacket<'a>
Blanket Implementations
Mutably borrows from an owned value. Read more