diff --git a/Cargo.lock b/Cargo.lock index b010331..f681663 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -647,6 +647,7 @@ dependencies = [ name = "proxy-common" version = "0.1.0" dependencies = [ + "hex", "log", "rnex-core", "thiserror", diff --git a/proxy-common/Cargo.toml b/proxy-common/Cargo.toml index 6ba9ba7..bd13ffa 100644 --- a/proxy-common/Cargo.toml +++ b/proxy-common/Cargo.toml @@ -8,3 +8,4 @@ thiserror = "2.0.12" rnex-core = { path = "../rnex-core", version = "0.1.1" } tokio = { version = "1.47.0", features = ["full"] } log = "0.4.25" +hex = "0.4.3" diff --git a/proxy-common/src/lib.rs b/proxy-common/src/lib.rs index 3bd902d..dc6ed11 100644 --- a/proxy-common/src/lib.rs +++ b/proxy-common/src/lib.rs @@ -187,17 +187,14 @@ pub async fn new_backend_connection( } }; - if let Err(e) = stream - .send_buffer( - &ConnectionInitData { - prudpsock_addr: addr, - pid: pid, - } - .to_data() - .unwrap(), - ) - .await - { + let data = ConnectionInitData { + prudpsock_addr: addr, + pid: pid, + } + .to_data() + .unwrap(); + + if let Err(e) = stream.send_buffer(&data).await { error!("unable to send establishment data to backend: {}", e); return None; }; diff --git a/prudpv0/src/packet.rs b/prudpv0/src/packet.rs index e94ab46..50bfe55 100644 --- a/prudpv0/src/packet.rs +++ b/prudpv0/src/packet.rs @@ -268,6 +268,7 @@ pub fn new_connect_packet( .checksummed_data() .expect("packet malformed in creation"), ); + info!("header: {:?}", packet.header()); packet.0 } diff --git a/rnex-core/src/rnex_proxy_common.rs b/rnex-core/src/rnex_proxy_common.rs index 7f2c363..d103e43 100644 --- a/rnex-core/src/rnex_proxy_common.rs +++ b/rnex-core/src/rnex_proxy_common.rs @@ -1,9 +1,40 @@ use crate::{PID, prudp::socket_addr::PRUDPSockAddr}; use macros::RmcSerialize; -#[derive(Debug, RmcSerialize)] +#[derive(Debug, RmcSerialize, PartialEq, Eq)] #[rmc_struct(0)] pub struct ConnectionInitData { pub prudpsock_addr: PRUDPSockAddr, pub pid: PID, } + +#[cfg(test)] +mod test { + use std::{ + io::Cursor, + net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4}, + }; + + use crate::{ + prudp::{socket_addr::PRUDPSockAddr, virtual_port::VirtualPort}, + rmc::structures::RmcSerialize, + rnex_proxy_common::ConnectionInitData, + }; + + #[test] + fn test() { + let data = ConnectionInitData { + prudpsock_addr: PRUDPSockAddr { + regular_socket_addr: SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::BROADCAST, 19293)), + virtual_port: VirtualPort::new(10, 2), + }, + pid: 100, + }; + + let ser = data.to_data().unwrap(); + + let de = ConnectionInitData::deserialize(&mut Cursor::new(ser)).unwrap(); + + assert_eq!(data, de); + } +}