From 09ef64ef53f961b193eb8e214c1e4356604f0aad Mon Sep 17 00:00:00 2001 From: ssrlive <30760636+ssrlive@users.noreply.github.com> Date: Wed, 17 Apr 2024 18:21:55 +0800 Subject: [PATCH] rename TcpPacket to TcpHeaderWrapper --- src/packet.rs | 10 +++++----- src/stream/tcb.rs | 26 ++++++++++---------------- src/stream/tcp.rs | 4 ++-- src/stream/tcp_wrapper.rs | 4 ++-- 4 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/packet.rs b/src/packet.rs index f1eb7c8..3a25340 100644 --- a/src/packet.rs +++ b/src/packet.rs @@ -22,7 +22,7 @@ pub mod tcp_flags { #[derive(Debug, Clone)] pub(crate) enum IpStackPacketProtocol { - Tcp(TcpPacket), + Tcp(TcpHeaderWrapper), Unknown, Udp, } @@ -145,11 +145,11 @@ impl NetworkPacket { } #[derive(Debug, Clone)] -pub(super) struct TcpPacket { +pub(super) struct TcpHeaderWrapper { header: TcpHeader, } -impl TcpPacket { +impl TcpHeaderWrapper { pub fn inner(&self) -> &TcpHeader { &self.header } @@ -185,9 +185,9 @@ impl TcpPacket { } } -impl From<&TcpHeader> for TcpPacket { +impl From<&TcpHeader> for TcpHeaderWrapper { fn from(header: &TcpHeader) -> Self { - TcpPacket { + TcpHeaderWrapper { header: header.clone(), } } diff --git a/src/stream/tcb.rs b/src/stream/tcb.rs index 2b70cf6..f405bb1 100644 --- a/src/stream/tcb.rs +++ b/src/stream/tcb.rs @@ -1,4 +1,4 @@ -use crate::packet::TcpPacket; +use crate::packet::TcpHeaderWrapper; use std::{collections::BTreeMap, pin::Pin, time::Duration}; use tokio::time::Sleep; @@ -136,33 +136,27 @@ impl Tcb { // } // } - pub(super) fn check_pkt_type(&self, incoming_packet: &TcpPacket, p: &[u8]) -> PacketStatus { - let received_ack_distance = self - .seq - .wrapping_sub(incoming_packet.inner().acknowledgment_number); + pub(super) fn check_pkt_type(&self, header: &TcpHeaderWrapper, p: &[u8]) -> PacketStatus { + let tcp_header = header.inner(); + let received_ack_distance = self.seq.wrapping_sub(tcp_header.acknowledgment_number); let current_ack_distance = self.seq.wrapping_sub(self.last_ack); if received_ack_distance > current_ack_distance - || (incoming_packet.inner().acknowledgment_number != self.seq - && self - .seq - .saturating_sub(incoming_packet.inner().acknowledgment_number) - == 0) + || (tcp_header.acknowledgment_number != self.seq + && self.seq.saturating_sub(tcp_header.acknowledgment_number) == 0) { PacketStatus::Invalid - } else if self.last_ack == incoming_packet.inner().acknowledgment_number { + } else if self.last_ack == tcp_header.acknowledgment_number { if !p.is_empty() { PacketStatus::NewPacket - } else if self.send_window == incoming_packet.inner().window_size - && self.seq != self.last_ack - { + } else if self.send_window == tcp_header.window_size && self.seq != self.last_ack { PacketStatus::RetransmissionRequest - } else if self.ack.wrapping_sub(1) == incoming_packet.inner().sequence_number { + } else if self.ack.wrapping_sub(1) == tcp_header.sequence_number { PacketStatus::KeepAlive } else { PacketStatus::WindowUpdate } - } else if self.last_ack < incoming_packet.inner().acknowledgment_number { + } else if self.last_ack < tcp_header.acknowledgment_number { if !p.is_empty() { PacketStatus::NewPacket } else { diff --git a/src/stream/tcp.rs b/src/stream/tcp.rs index fdf7d68..552a3ec 100644 --- a/src/stream/tcp.rs +++ b/src/stream/tcp.rs @@ -2,7 +2,7 @@ use crate::{ error::IpStackError, packet::{ tcp_flags::{ACK, FIN, NON, PSH, RST, SYN}, - IpStackPacketProtocol, TcpPacket, TransportHeader, + IpStackPacketProtocol, TcpHeaderWrapper, TransportHeader, }, stream::tcb::{Tcb, TcpState}, DROP_TTL, TTL, @@ -66,7 +66,7 @@ impl IpStackTcpStream { pub(crate) fn new( src_addr: SocketAddr, dst_addr: SocketAddr, - tcp: TcpPacket, + tcp: TcpHeaderWrapper, pkt_sender: UnboundedSender, stream_receiver: UnboundedReceiver, mtu: u16, diff --git a/src/stream/tcp_wrapper.rs b/src/stream/tcp_wrapper.rs index dd1d6eb..e4b1161 100644 --- a/src/stream/tcp_wrapper.rs +++ b/src/stream/tcp_wrapper.rs @@ -1,6 +1,6 @@ use super::tcp::IpStackTcpStream as IpStackTcpStreamInner; use crate::{ - packet::{NetworkPacket, TcpPacket}, + packet::{NetworkPacket, TcpHeaderWrapper}, IpStackError, }; use std::{net::SocketAddr, pin::Pin, time::Duration}; @@ -21,7 +21,7 @@ impl IpStackTcpStream { pub(crate) fn new( local_addr: SocketAddr, peer_addr: SocketAddr, - tcp: TcpPacket, + tcp: TcpHeaderWrapper, pkt_sender: UnboundedSender, mtu: u16, tcp_timeout: Duration,