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
.Source§fn next_header(&self) -> u8
fn next_header(&self) -> u8
Source§fn dscp_and_ecn(&self) -> DscpAndEcn
fn dscp_and_ecn(&self) -> DscpAndEcn
Source§impl<B: SplitByteSlice> ParsablePacket<B, ()> for Ipv6PacketRaw<B>
impl<B: SplitByteSlice> ParsablePacket<B, ()> for Ipv6PacketRaw<B>
Auto Trait Implementations§
impl<B> Freeze for Ipv6PacketRaw<B>where
B: Freeze,
impl<B> RefUnwindSafe for Ipv6PacketRaw<B>where
B: RefUnwindSafe,
impl<B> Send for Ipv6PacketRaw<B>where
B: Send,
impl<B> Sync for Ipv6PacketRaw<B>where
B: Sync,
impl<B> Unpin for Ipv6PacketRaw<B>where
B: Unpin,
impl<B> UnwindSafe for Ipv6PacketRaw<B>where
B: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more