From: Ian Jackson Date: Tue, 17 Aug 2021 00:09:33 +0000 (+0100) Subject: server: route: wip X-Git-Tag: hippotat/1.0.0~136 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=04de97dddbd8cc0136ec2d84850ff1ab829a7f42 server: route: wip Signed-off-by: Ian Jackson --- diff --git a/src/bin/server.rs b/src/bin/server.rs index a8cb590..6a97e31 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -57,13 +57,23 @@ struct WebResponse { type WebResponseData = Vec; #[throws(PacketError)] -pub fn route_packet(_global: &Global, +pub fn route_packet(global: &Global, conn: &str, link: &dyn Display, packet: RoutedPacket, daddr: IpAddr) { - // xxx - trace!("{} {} discarding packet daddr={:?} len={}", - conn, link, daddr, packet.len()); + let c = &global.config; + let trace = |how| trace!("{} {} route {} daddr={:?} len={}", + conn, link, how, daddr, packet.len()); + + if daddr == c.vaddr || ! c.vnetwork.iter().any(|n| n.contains(&daddr)) { + trace("ipif inbound xxx discarding"); + } else if daddr == c.vrelay { + trace("discard (relay)"); + } else if let Some(_client) = global.all_clients.get(&ClientName(daddr)) { + trace("ipif route xxx discarding"); + } else { + trace("discard (no client)"); + } } async fn handle(