pub struct TcpLayer {
pub index: LayerIndex,
}Expand description
A view into a TCP packet header.
Fields§
§index: LayerIndexImplementations§
Source§impl TcpLayer
impl TcpLayer
Sourcepub const fn new(start: usize, end: usize) -> Self
pub const fn new(start: usize, end: usize) -> Self
Create a new TCP layer view with specified bounds.
Sourcepub const fn at_offset(offset: usize) -> Self
pub const fn at_offset(offset: usize) -> Self
Create a layer at the specified offset with minimum header length.
Sourcepub fn at_offset_dynamic(buf: &[u8], offset: usize) -> Result<Self, FieldError>
pub fn at_offset_dynamic(buf: &[u8], offset: usize) -> Result<Self, FieldError>
Create a layer at offset, calculating actual header length from data offset.
Sourcepub fn validate(buf: &[u8], offset: usize) -> Result<(), FieldError>
pub fn validate(buf: &[u8], offset: usize) -> Result<(), FieldError>
Validate that the buffer contains a valid TCP header at the offset.
Sourcepub fn calculate_header_len(&self, buf: &[u8]) -> usize
pub fn calculate_header_len(&self, buf: &[u8]) -> usize
Calculate the actual header length from the buffer.
Sourcepub fn options_len(&self, buf: &[u8]) -> usize
pub fn options_len(&self, buf: &[u8]) -> usize
Get the options length (header length - 20).
Sourcepub fn sport(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn sport(&self, buf: &[u8]) -> Result<u16, FieldError>
Alias for src_port (Scapy compatibility).
Sourcepub fn dport(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn dport(&self, buf: &[u8]) -> Result<u16, FieldError>
Alias for dst_port (Scapy compatibility).
Sourcepub fn data_offset(&self, buf: &[u8]) -> Result<u8, FieldError>
pub fn data_offset(&self, buf: &[u8]) -> Result<u8, FieldError>
Read the data offset (in 32-bit words).
Sourcepub fn dataofs(&self, buf: &[u8]) -> Result<u8, FieldError>
pub fn dataofs(&self, buf: &[u8]) -> Result<u8, FieldError>
Alias for data_offset (Scapy compatibility).
Sourcepub fn reserved(&self, buf: &[u8]) -> Result<u8, FieldError>
pub fn reserved(&self, buf: &[u8]) -> Result<u8, FieldError>
Read the reserved bits (should be 0).
Sourcepub fn flags(&self, buf: &[u8]) -> Result<TcpFlags, FieldError>
pub fn flags(&self, buf: &[u8]) -> Result<TcpFlags, FieldError>
Read the flags as a structured type.
Sourcepub fn chksum(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn chksum(&self, buf: &[u8]) -> Result<u16, FieldError>
Alias for checksum (Scapy compatibility).
Sourcepub fn urgent_ptr(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn urgent_ptr(&self, buf: &[u8]) -> Result<u16, FieldError>
Read the urgent pointer.
Sourcepub fn urgptr(&self, buf: &[u8]) -> Result<u16, FieldError>
pub fn urgptr(&self, buf: &[u8]) -> Result<u16, FieldError>
Alias for urgent_ptr (Scapy compatibility).
Sourcepub fn options_bytes<'a>(&self, buf: &'a [u8]) -> Result<&'a [u8], FieldError>
pub fn options_bytes<'a>(&self, buf: &'a [u8]) -> Result<&'a [u8], FieldError>
Read the options bytes (if any).
Sourcepub fn options(&self, buf: &[u8]) -> Result<TcpOptions, FieldError>
pub fn options(&self, buf: &[u8]) -> Result<TcpOptions, FieldError>
Parse and return the options.
Sourcepub fn set_src_port(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
pub fn set_src_port(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
Set the source port.
Sourcepub fn set_sport(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
pub fn set_sport(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
Alias for set_src_port (Scapy compatibility).
Sourcepub fn set_dst_port(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
pub fn set_dst_port(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
Set the destination port.
Sourcepub fn set_dport(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
pub fn set_dport(&self, buf: &mut [u8], port: u16) -> Result<(), FieldError>
Alias for set_dst_port (Scapy compatibility).
Sourcepub fn set_seq(&self, buf: &mut [u8], seq: u32) -> Result<(), FieldError>
pub fn set_seq(&self, buf: &mut [u8], seq: u32) -> Result<(), FieldError>
Set the sequence number.
Sourcepub fn set_ack(&self, buf: &mut [u8], ack: u32) -> Result<(), FieldError>
pub fn set_ack(&self, buf: &mut [u8], ack: u32) -> Result<(), FieldError>
Set the acknowledgment number.
Sourcepub fn set_data_offset(
&self,
buf: &mut [u8],
offset: u8,
) -> Result<(), FieldError>
pub fn set_data_offset( &self, buf: &mut [u8], offset: u8, ) -> Result<(), FieldError>
Set the data offset (in 32-bit words).
Sourcepub fn set_dataofs(&self, buf: &mut [u8], offset: u8) -> Result<(), FieldError>
pub fn set_dataofs(&self, buf: &mut [u8], offset: u8) -> Result<(), FieldError>
Alias for set_data_offset (Scapy compatibility).
Sourcepub fn set_reserved(
&self,
buf: &mut [u8],
reserved: u8,
) -> Result<(), FieldError>
pub fn set_reserved( &self, buf: &mut [u8], reserved: u8, ) -> Result<(), FieldError>
Set the reserved bits.
Sourcepub fn set_flags_raw(&self, buf: &mut [u8], flags: u8) -> Result<(), FieldError>
pub fn set_flags_raw(&self, buf: &mut [u8], flags: u8) -> Result<(), FieldError>
Set the flags from raw byte.
Sourcepub fn set_flags(
&self,
buf: &mut [u8],
flags: TcpFlags,
) -> Result<(), FieldError>
pub fn set_flags( &self, buf: &mut [u8], flags: TcpFlags, ) -> Result<(), FieldError>
Set the flags from structured type.
Sourcepub fn set_window(&self, buf: &mut [u8], window: u16) -> Result<(), FieldError>
pub fn set_window(&self, buf: &mut [u8], window: u16) -> Result<(), FieldError>
Set the window size.
Sourcepub fn set_checksum(
&self,
buf: &mut [u8],
checksum: u16,
) -> Result<(), FieldError>
pub fn set_checksum( &self, buf: &mut [u8], checksum: u16, ) -> Result<(), FieldError>
Set the checksum.
Sourcepub fn set_chksum(
&self,
buf: &mut [u8],
checksum: u16,
) -> Result<(), FieldError>
pub fn set_chksum( &self, buf: &mut [u8], checksum: u16, ) -> Result<(), FieldError>
Alias for set_checksum (Scapy compatibility).
Sourcepub fn set_urgent_ptr(
&self,
buf: &mut [u8],
urgptr: u16,
) -> Result<(), FieldError>
pub fn set_urgent_ptr( &self, buf: &mut [u8], urgptr: u16, ) -> Result<(), FieldError>
Set the urgent pointer.
Sourcepub fn set_urgptr(&self, buf: &mut [u8], urgptr: u16) -> Result<(), FieldError>
pub fn set_urgptr(&self, buf: &mut [u8], urgptr: u16) -> Result<(), FieldError>
Alias for set_urgent_ptr (Scapy compatibility).
Sourcepub fn get_field(
&self,
buf: &[u8],
name: &str,
) -> Option<Result<FieldValue, FieldError>>
pub fn get_field( &self, buf: &[u8], name: &str, ) -> Option<Result<FieldValue, FieldError>>
Get a field value by name.
Sourcepub fn set_field(
&self,
buf: &mut [u8],
name: &str,
value: FieldValue,
) -> Option<Result<(), FieldError>>
pub fn set_field( &self, buf: &mut [u8], name: &str, value: FieldValue, ) -> Option<Result<(), FieldError>>
Set a field value by name.
Sourcepub fn field_names() -> &'static [&'static str]
pub fn field_names() -> &'static [&'static str]
Get list of field names.
Sourcepub fn payload_len(&self, buf: &[u8], ip_payload_len: usize) -> usize
pub fn payload_len(&self, buf: &[u8], ip_payload_len: usize) -> usize
Get the payload length from IP total length. Note: TCP doesn’t have its own length field; it relies on IP layer.
Sourcepub fn header_bytes<'a>(&self, buf: &'a [u8]) -> &'a [u8] ⓘ
pub fn header_bytes<'a>(&self, buf: &'a [u8]) -> &'a [u8] ⓘ
Get the header bytes.
Sourcepub fn src_service(&self, buf: &[u8]) -> &'static str
pub fn src_service(&self, buf: &[u8]) -> &'static str
Get the source port service name.
Sourcepub fn dst_service(&self, buf: &[u8]) -> &'static str
pub fn dst_service(&self, buf: &[u8]) -> &'static str
Get the destination port service name.
Trait Implementations§
Source§impl Layer for TcpLayer
impl Layer for TcpLayer
Source§fn header_len(&self, buf: &[u8]) -> usize
fn header_len(&self, buf: &[u8]) -> usize
Source§fn answers(&self, buf: &[u8], other: &Self, other_buf: &[u8]) -> bool
fn answers(&self, buf: &[u8], other: &Self, other_buf: &[u8]) -> bool
Source§fn field_names(&self) -> &'static [&'static str]
fn field_names(&self) -> &'static [&'static str]
Source§impl LayerDispatch for TcpLayer
impl LayerDispatch for TcpLayer
Source§fn dispatch_kind(&self) -> LayerKind
fn dispatch_kind(&self) -> LayerKind
Source§fn dispatch_index(&self) -> &LayerIndex
fn dispatch_index(&self) -> &LayerIndex
Source§fn dispatch_summary(&self, buf: &[u8]) -> String
fn dispatch_summary(&self, buf: &[u8]) -> String
Source§fn dispatch_header_len(&self, buf: &[u8]) -> usize
fn dispatch_header_len(&self, buf: &[u8]) -> usize
Source§fn dispatch_field_names(&self) -> &'static [&'static str]
fn dispatch_field_names(&self) -> &'static [&'static str]
Source§fn dispatch_get_field(
&self,
buf: &[u8],
name: &str,
) -> Option<Result<FieldValue, FieldError>>
fn dispatch_get_field( &self, buf: &[u8], name: &str, ) -> Option<Result<FieldValue, FieldError>>
Source§fn dispatch_set_field(
&self,
buf: &mut [u8],
name: &str,
value: FieldValue,
) -> Option<Result<(), FieldError>>
fn dispatch_set_field( &self, buf: &mut [u8], name: &str, value: FieldValue, ) -> Option<Result<(), FieldError>>
Auto Trait Implementations§
impl Freeze for TcpLayer
impl RefUnwindSafe for TcpLayer
impl Send for TcpLayer
impl Sync for TcpLayer
impl Unpin for TcpLayer
impl UnsafeUnpin for TcpLayer
impl UnwindSafe for TcpLayer
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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