From 346a69ffd05f2794710be4ff17346cbe91dbb505 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 Aug 2021 00:10:24 +0100 Subject: [PATCH] change type of route_packet etc. Signed-off-by: Ian Jackson --- server/server.rs | 23 +++++++++++++++++++---- server/suser.rs | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/server/server.rs b/server/server.rs index b8cedaf..cfceef6 100644 --- a/server/server.rs +++ b/server/server.rs @@ -30,18 +30,29 @@ pub struct Global { all_clients: HashMap, } -pub type RoutedPacket = Box<[u8]>; // not MIME data +pub struct RoutedPacket { + pub data: RoutedPacketData, + pub source: Option, // for eh, tracing, etc. +} + +// not MIME data, valid SLIP (checked) +pub type RoutedPacketData = Box<[u8]>; #[throws(PacketError)] pub async fn route_packet(global: &Global, - conn: &str, link: &(dyn Display + Sync), - packet: RoutedPacket, daddr: IpAddr) + conn: &str, source: Option<&ClientName>, + packet: RoutedPacketData, daddr: IpAddr) { let c = &global.config; let len = packet.len(); let trace = |how: &str, why: &str| { trace!("{} {} {} {} {:?} len={}", - conn, link, how, why, daddr, len); + conn, + match source { + Some(s) => (s as &dyn Display), + None => &"local", + }, + how, why, daddr, len); }; let (dest, why) = @@ -59,6 +70,10 @@ pub async fn route_packet(global: &Global, trace("discard", why); return; }; + let packet = RoutedPacket { + data: packet, + source: source.cloned(), + }; match dest.send(packet).await { Ok(()) => trace("forward", why), Err(_) => trace("task-crashed!", why), diff --git a/server/suser.rs b/server/suser.rs index dc4358b..dec1a5a 100644 --- a/server/suser.rs +++ b/server/suser.rs @@ -142,7 +142,7 @@ pub async fn run(global: Arc, let daddr = ip_packet_addr::(header)?; Ok(daddr) }, |(daddr,packet)| route_packet( - &global, &conn, &ic.link.client, daddr,packet + &global, &conn, Some(&ic.link.client), daddr,packet ), |e| Ok::<_,SlipFramesError<_>>({ warnings.add(&e)?; }) ).await?; -- 2.30.2