diff --git a/Cargo.lock b/Cargo.lock index d8c2adcb21..dff1adbf08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7593,6 +7593,7 @@ dependencies = [ "ip_network", "ip_network_table", "log", + "nym-service-providers-common", "nym-sphinx", "nym-task", "nym-wireguard-types", diff --git a/common/wireguard/Cargo.toml b/common/wireguard/Cargo.toml index 556cff0ab7..6b76c605c2 100644 --- a/common/wireguard/Cargo.toml +++ b/common/wireguard/Cargo.toml @@ -35,5 +35,8 @@ tap.workspace = true thiserror.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "net", "io-util"] } +# WIP(JON) we'll move this when we move the tun stuff to its own crate +nym-service-providers-common = { path = "../../service-providers/common" } + [target.'cfg(target_os = "linux")'.dependencies] tokio-tun = "0.9.0" diff --git a/common/wireguard/src/tun_task_channel.rs b/common/wireguard/src/tun_task_channel.rs index 01c3edd4fc..e096323d14 100644 --- a/common/wireguard/src/tun_task_channel.rs +++ b/common/wireguard/src/tun_task_channel.rs @@ -1,5 +1,6 @@ use std::time::Duration; +use nym_service_providers_common::interface; use tokio::sync::mpsc::{ self, error::{SendError, SendTimeoutError, TrySendError}, @@ -81,14 +82,23 @@ pub(crate) fn tun_task_response_channel() -> (TunTaskResponseTx, TunTaskResponse ) } +pub type IpPacketRouterRequest = interface::Request; +pub type IpPacketRouterResponse = interface::Response; + #[derive(serde::Serialize, serde::Deserialize)] -pub struct TaggedPacket { +pub struct TaggedIpPacket { pub packet: bytes::Bytes, pub return_address: nym_sphinx::addressing::clients::Recipient, pub return_mix_hops: Option, + pub return_mix_delays: Option, } -impl TaggedPacket { +#[derive(serde::Serialize, serde::Deserialize)] +pub struct IpPacket { + pub packet: bytes::Bytes, +} + +impl TaggedIpPacket { pub fn from_message( message: &nym_sphinx::receiver::ReconstructedMessage, ) -> Result { diff --git a/service-providers/ip-packet-router/src/lib.rs b/service-providers/ip-packet-router/src/lib.rs index c10d0bddbc..42f6351b2f 100644 --- a/service-providers/ip-packet-router/src/lib.rs +++ b/service-providers/ip-packet-router/src/lib.rs @@ -17,7 +17,7 @@ use nym_sdk::{ }; use nym_sphinx::receiver::ReconstructedMessage; use nym_task::{connections::TransmissionLane, TaskClient, TaskHandle}; -use nym_wireguard::tun_task_channel::TaggedPacket; +use nym_wireguard::tun_task_channel::TaggedIpPacket; use request_filter::RequestFilter; use crate::config::BaseClientConfig; @@ -254,7 +254,7 @@ impl IpPacketRouter { reconstructed.sender_tag ); - let tagged_packet = TaggedPacket::from_message(&reconstructed) + let tagged_packet = TaggedIpPacket::from_message(&reconstructed) .map_err(|err| IpPacketRouterError::FailedToDeserializeTaggedPacket { source: err })?; // We don't forward packets that we are not able to parse. BUT, there might be a good