pub enum IpRepr {
Ipv4(Ipv4Repr),
Ipv6(Ipv6Repr),
}
Expand description
An IP packet representation.
This enum abstracts the various versions of IP packets. It either contains an IPv4 or IPv6 concrete high-level representation.
Variants§
Implementations§
source§impl Repr
impl Repr
sourcepub fn new(
src_addr: Address,
dst_addr: Address,
next_header: Protocol,
payload_len: usize,
hop_limit: u8
) -> Self
pub fn new(
src_addr: Address,
dst_addr: Address,
next_header: Protocol,
payload_len: usize,
hop_limit: u8
) -> Self
Create a new IpRepr, choosing the right IP version for the src/dst addrs.
Panics
Panics if src_addr
and dst_addr
are different IP version.
sourcepub const fn next_header(&self) -> Protocol
pub const fn next_header(&self) -> Protocol
Return the next header (protocol).
sourcepub const fn payload_len(&self) -> usize
pub const fn payload_len(&self) -> usize
Return the payload length.
sourcepub fn set_payload_len(&mut self, length: usize)
pub fn set_payload_len(&mut self, length: usize)
Set the payload length.
sourcepub const fn header_len(&self) -> usize
pub const fn header_len(&self) -> usize
Return the length of a header that will be emitted from this high-level representation.
sourcepub fn emit<T: AsRef<[u8]> + AsMut<[u8]>>(
&self,
buffer: T,
_checksum_caps: &ChecksumCapabilities
)
pub fn emit<T: AsRef<[u8]> + AsMut<[u8]>>(
&self,
buffer: T,
_checksum_caps: &ChecksumCapabilities
)
Emit this high-level representation into a buffer.
sourcepub const fn buffer_len(&self) -> usize
pub const fn buffer_len(&self) -> usize
Return the total length of a packet that will be emitted from this high-level representation.
This is the same as repr.buffer_len() + repr.payload_len()
.