Skip to content

Commit

Permalink
rename TcpPacket to TcpHeaderWrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
ssrlive committed Apr 17, 2024
1 parent a8afef8 commit 09ef64e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 25 deletions.
10 changes: 5 additions & 5 deletions src/packet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ pub mod tcp_flags {

#[derive(Debug, Clone)]
pub(crate) enum IpStackPacketProtocol {
Tcp(TcpPacket),
Tcp(TcpHeaderWrapper),
Unknown,
Udp,
}
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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(),
}
}
Expand Down
26 changes: 10 additions & 16 deletions src/stream/tcb.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::packet::TcpPacket;
use crate::packet::TcpHeaderWrapper;
use std::{collections::BTreeMap, pin::Pin, time::Duration};
use tokio::time::Sleep;

Expand Down Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions src/stream/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -66,7 +66,7 @@ impl IpStackTcpStream {
pub(crate) fn new(
src_addr: SocketAddr,
dst_addr: SocketAddr,
tcp: TcpPacket,
tcp: TcpHeaderWrapper,
pkt_sender: UnboundedSender<NetworkPacket>,
stream_receiver: UnboundedReceiver<NetworkPacket>,
mtu: u16,
Expand Down
4 changes: 2 additions & 2 deletions src/stream/tcp_wrapper.rs
Original file line number Diff line number Diff line change
@@ -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};
Expand All @@ -21,7 +21,7 @@ impl IpStackTcpStream {
pub(crate) fn new(
local_addr: SocketAddr,
peer_addr: SocketAddr,
tcp: TcpPacket,
tcp: TcpHeaderWrapper,
pkt_sender: UnboundedSender<NetworkPacket>,
mtu: u16,
tcp_timeout: Duration,
Expand Down

0 comments on commit 09ef64e

Please sign in to comment.