pub struct Ipv6PacketRaw<B> { /* private fields */ }
Expand description
A partially parsed and not yet validated IPv6 packet.
Ipv6PacketRaw
provides minimal parsing of an IPv6 packet, namely
it only requires that the fixed header part ([HeaderPrefix
]) be retrieved,
all the other parts of the packet may be missing when attempting to create
it.
Ipv6Packet
provides a [FromRaw
] implementation that can be used to
validate an Ipv6PacketRaw
.
Implementations§
Source§impl<B: SplitByteSlice> Ipv6PacketRaw<B>
impl<B: SplitByteSlice> Ipv6PacketRaw<B>
Sourcepub fn body_proto(
&self,
) -> Result<(MaybeParsed<&[u8], &[u8]>, Ipv6Proto), ExtHdrParseError>
pub fn body_proto( &self, ) -> Result<(MaybeParsed<&[u8], &[u8]>, Ipv6Proto), ExtHdrParseError>
Returns the body and upper-layer Protocol Number.
If extension headers failed to parse, body_proto
returns
Err(ExtHdrParseError)
. Extension headers must be parsed in order to
find the bounds of the upper-layer payload and to find that last
extension header’s Next Header field, which is the Protocol Number of
the upper-layer payload.
The returned body will be [MaybeParsed::Complete
] if all the body
bytes were consumed (as stated by the header’s payload length value) or
[MaybeParsed::Incomplete
] containing the bytes that were present
otherwise.
Sourcepub fn body(&self) -> Result<MaybeParsed<&[u8], &[u8]>, ExtHdrParseError>
pub fn body(&self) -> Result<MaybeParsed<&[u8], &[u8]>, ExtHdrParseError>
Returns the body.
If extension headers failed to parse, body
returns
Err(ExtHdrParseError)
. Extension headers must be parsed in order to
find the bounds of the upper-layer payload.
The returned body will be [MaybeParsed::Complete
] if all the body
bytes were consumed (as stated by the header’s payload length value) or
[MaybeParsed::Incomplete
] containing the bytes that were present
otherwise.
Sourcepub fn proto(&self) -> Result<Ipv6Proto, ExtHdrParseError>
pub fn proto(&self) -> Result<Ipv6Proto, ExtHdrParseError>
Returns the upper-layer Protocol Number.
If extension headers failed to parse, body_proto
returns
Err(ExtHdrParseError)
. Extension headers must be parsed in order to
find the last extension header’s Next Header field, which is the
Protocol Number of the upper-layer payload.
Source§impl<B: SplitByteSliceMut> Ipv6PacketRaw<B>
impl<B: SplitByteSliceMut> Ipv6PacketRaw<B>
Sourcepub fn set_src_ip(&mut self, addr: Ipv6Addr)
pub fn set_src_ip(&mut self, addr: Ipv6Addr)
Set the source IP address.
Sourcepub fn set_dst_ip(&mut self, addr: Ipv6Addr)
pub fn set_dst_ip(&mut self, addr: Ipv6Addr)
Set the destination IP address.
Trait Implementations§
Source§impl<B: SplitByteSlice> FromRaw<Ipv6PacketRaw<B>, ()> for Ipv6Packet<B>
impl<B: SplitByteSlice> FromRaw<Ipv6PacketRaw<B>, ()> for Ipv6Packet<B>
Source§type Error = IpParseError<Ipv6>
type Error = IpParseError<Ipv6>
Source§fn try_from_raw_with(
raw: Ipv6PacketRaw<B>,
_args: (),
) -> Result<Self, Self::Error>
fn try_from_raw_with( raw: Ipv6PacketRaw<B>, _args: (), ) -> Result<Self, Self::Error>
Self
from the raw form in raw
with args
.§fn try_from_raw(raw: R) -> Result<Self, Self::Error>where
Self: FromRaw<R, (), Error = Self::Error>,
fn try_from_raw(raw: R) -> Result<Self, Self::Error>where
Self: FromRaw<R, (), Error = Self::Error>,
Self
from the raw form in raw
.Source§impl<B: SplitByteSlice> Ipv6Header for Ipv6PacketRaw<B>
impl<B: SplitByteSlice> Ipv6Header for Ipv6PacketRaw<B>
Source§fn get_fixed_header(&self) -> &FixedHeader
fn get_fixed_header(&self) -> &FixedHeader
FixedHeader
.