chiark / gitweb /
server: route: wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 Aug 2021 00:09:33 +0000 (01:09 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 Aug 2021 00:09:33 +0000 (01:09 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/server.rs

index a8cb59012735fd445b412cc8fc9534028d0d7f75..6a97e3129490c80f3068fe79756ea0b740892820 100644 (file)
@@ -57,13 +57,23 @@ struct WebResponse {
 type WebResponseData = Vec<u8>;
 
 #[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(