started implementing data packets

This commit is contained in:
DJMrTV 2025-01-23 15:24:55 +01:00
commit ecad507f63
2 changed files with 12 additions and 2 deletions

View file

@ -75,6 +75,7 @@ pub mod flags {
pub mod types { pub mod types {
pub const SYN: u8 = 0x0; pub const SYN: u8 = 0x0;
pub const CONNECT: u8 = 0x1; pub const CONNECT: u8 = 0x1;
pub const DATA: u8 = 0x2;
} }
impl Debug for TypesFlags { impl Debug for TypesFlags {

View file

@ -12,9 +12,9 @@ use rc4::consts::U256;
use rustls::internal::msgs::handshake::SessionId; use rustls::internal::msgs::handshake::SessionId;
use tokio::sync::mpsc::{channel, Receiver, Sender}; use tokio::sync::mpsc::{channel, Receiver, Sender};
use crate::prudp::packet::{flags, PacketOption, PRUDPPacket, types, VirtualPort}; use crate::prudp::packet::{flags, PacketOption, PRUDPPacket, types, VirtualPort};
use crate::prudp::packet::flags::{ACK, HAS_SIZE, MULTI_ACK}; use crate::prudp::packet::flags::{ACK, HAS_SIZE, MULTI_ACK, RELIABLE};
use crate::prudp::packet::PacketOption::{ConnectionSignature, MaximumSubstreamId, SupportedFunctions}; use crate::prudp::packet::PacketOption::{ConnectionSignature, MaximumSubstreamId, SupportedFunctions};
use crate::prudp::packet::types::{CONNECT, SYN}; use crate::prudp::packet::types::{CONNECT, DATA, SYN};
use crate::prudp::router::{Error, Router}; use crate::prudp::router::{Error, Router};
use crate::prudp::sockaddr::PRUDPSockAddr; use crate::prudp::sockaddr::PRUDPSockAddr;
@ -147,6 +147,11 @@ impl SocketImpl {
unimplemented!() unimplemented!()
} }
if (packet.header.types_and_flags.get_flags() & RELIABLE) != 0 {
error!("unreliable packets are unimplemented");
unimplemented!()
}
match packet.header.types_and_flags.get_types() { match packet.header.types_and_flags.get_types() {
SYN => { SYN => {
@ -165,6 +170,7 @@ impl SocketImpl {
for options in &packet.options { for options in &packet.options {
match options { match options {
SupportedFunctions(functions) => { SupportedFunctions(functions) => {
response_packet.options.push(SupportedFunctions(*functions)) response_packet.options.push(SupportedFunctions(*functions))
} }
MaximumSubstreamId(max_substream) => { MaximumSubstreamId(max_substream) => {
@ -230,6 +236,9 @@ impl SocketImpl {
response_packet.write_to(&mut vec).expect("somehow failed to convert backet to bytes"); response_packet.write_to(&mut vec).expect("somehow failed to convert backet to bytes");
self.socket.send_to(&vec, connection.regular_socket_addr).await.expect("failed to send data back"); self.socket.send_to(&vec, connection.regular_socket_addr).await.expect("failed to send data back");
}
DATA => {
} }
_ => unimplemented!("unimplemented packet type: {}", packet.header.types_and_flags.get_types()) _ => unimplemented!("unimplemented packet type: {}", packet.header.types_and_flags.get_types())
} }