pub struct TcpSegmentRaw<B: SplitByteSlice> { /* private fields */ }Expand description
A partially-parsed and not yet validated TCP segment.
A TcpSegmentRaw shares its underlying memory with the byte slice it was
parsed from or serialized to, meaning that no copying or extra allocation is
necessary.
Parsing a TcpSegmentRaw from raw data will succeed as long as at least 4
bytes are available, which will be extracted as a TcpFlowHeader that
contains the TCP source and destination ports. A TcpSegmentRaw is, then,
guaranteed to always have at least that minimal information available.
TcpSegment provides a FromRaw implementation that can be used to
validate a TcpSegmentRaw.
Implementations§
Source§impl<B: SplitByteSliceMut> TcpSegmentRaw<B>
impl<B: SplitByteSliceMut> TcpSegmentRaw<B>
Sourcepub fn set_src_port(&mut self, new: NonZeroU16)
pub fn set_src_port(&mut self, new: NonZeroU16)
Set the source port of the TCP packet.
Sourcepub fn set_dst_port(&mut self, new: NonZeroU16)
pub fn set_dst_port(&mut self, new: NonZeroU16)
Set the destination port of the TCP packet.
Sourcepub fn update_checksum_pseudo_header_address<A: IpAddress>(
&mut self,
old: A,
new: A,
)
pub fn update_checksum_pseudo_header_address<A: IpAddress>( &mut self, old: A, new: A, )
Update the checksum to reflect an updated address in the pseudo header.
Source§impl<B: SplitByteSlice> TcpSegmentRaw<B>
impl<B: SplitByteSlice> TcpSegmentRaw<B>
Sourcepub fn flow_header(&self) -> TcpFlowHeader
pub fn flow_header(&self) -> TcpFlowHeader
Gets the flow header from this packet.
Source§impl<B: SplitByteSlice + CloneableByteSlice> TcpSegmentRaw<B>
impl<B: SplitByteSlice + CloneableByteSlice> TcpSegmentRaw<B>
Sourcepub fn into_builder_options<A: IpAddress>(
self,
src_ip: A,
dst_ip: A,
) -> Option<(TcpSegmentBuilder<A>, TcpOptionsRef<B>, B)>
pub fn into_builder_options<A: IpAddress>( self, src_ip: A, dst_ip: A, ) -> Option<(TcpSegmentBuilder<A>, TcpOptionsRef<B>, B)>
Transform this TcpSegmentRaw into the equivalent builder, parsed options, and body.
Trait Implementations§
Source§impl<B: SplitByteSlice + CloneableByteSlice, A: IpAddress> FromRaw<TcpSegmentRaw<B>, TcpParseArgs<A>> for TcpSegment<B>
impl<B: SplitByteSlice + CloneableByteSlice, A: IpAddress> FromRaw<TcpSegmentRaw<B>, TcpParseArgs<A>> for TcpSegment<B>
Source§type Error = ParseError
type Error = ParseError
Source§fn try_from_raw_with(
raw: TcpSegmentRaw<B>,
args: TcpParseArgs<A>,
) -> Result<Self, Self::Error>
fn try_from_raw_with( raw: TcpSegmentRaw<B>, args: TcpParseArgs<A>, ) -> Result<Self, Self::Error>
Self from the raw form in raw with args.Source§impl<B> ParsablePacket<B, ()> for TcpSegmentRaw<B>where
B: SplitByteSlice,
impl<B> ParsablePacket<B, ()> for TcpSegmentRaw<B>where
B: SplitByteSlice,
Source§fn parse_metadata(&self) -> ParseMetadata
fn parse_metadata(&self) -> ParseMetadata
GrowBuffer::undo_parse. Read moreSource§fn parse<BV: BufferView<B>>(buffer: BV, _args: ()) -> ParseResult<Self>
fn parse<BV: BufferView<B>>(buffer: BV, _args: ()) -> ParseResult<Self>
Source§fn parse_mut<BV>(buffer: BV, args: ParseArgs) -> Result<Self, Self::Error>where
BV: BufferViewMut<B>,
B: SplitByteSliceMut,
fn parse_mut<BV>(buffer: BV, args: ParseArgs) -> Result<Self, Self::Error>where
BV: BufferViewMut<B>,
B: SplitByteSliceMut,
Auto Trait Implementations§
impl<B> Freeze for TcpSegmentRaw<B>where
B: Freeze,
impl<B> RefUnwindSafe for TcpSegmentRaw<B>where
B: RefUnwindSafe,
impl<B> Send for TcpSegmentRaw<B>where
B: Send,
impl<B> Sync for TcpSegmentRaw<B>where
B: Sync,
impl<B> Unpin for TcpSegmentRaw<B>where
B: Unpin,
impl<B> UnwindSafe for TcpSegmentRaw<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