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.