Struct etherparse::PacketHeaders [−][src]
pub struct PacketHeaders<'a> {
pub link: Option<Ethernet2Header>,
pub vlan: Option<VlanHeader>,
pub ip: Option<IpHeader>,
pub transport: Option<TransportHeader>,
pub payload: &'a [u8],
}
Expand description
Decoded packet headers (data link layer and higher). You can use PacketHeaders::from_ethernet_slice or PacketHeader::from_ip_slice to decode and get this struct as a result.
Fields
link: Option<Ethernet2Header>
vlan: Option<VlanHeader>
ip: Option<IpHeader>
transport: Option<TransportHeader>
payload: &'a [u8]
Rest of the packet that could not be decoded as a header (usually the payload).
Implementations
Tries to decode as much as possible of a packet.
Tries to decode an ip packet and its transport headers.
Assumes the given slice starts with the first byte of the IP header
Example
// build a UDP packet
let payload = [0u8;18];
let builder = PacketBuilder::
ipv4([192,168,1,1], //source ip
[192,168,1,2], //desitionation ip
20) //time to life
.udp(21, //source port
1234); //desitnation port
// serialize the packet
let packet = {
let mut packet = Vec::<u8>::with_capacity(
builder.size(payload.len()));
builder.write(&mut packet, &payload).unwrap();
packet
};
// parse the ip packet from a slice
let p = PacketHeaders::from_ip_slice(&packet)
.expect("Failed to decode the packet");
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 PacketHeaders<'a>
impl<'a> Send for PacketHeaders<'a>
impl<'a> Sync for PacketHeaders<'a>
impl<'a> Unpin for PacketHeaders<'a>
impl<'a> UnwindSafe for PacketHeaders<'a>
Blanket Implementations
Mutably borrows from an owned value. Read more