chiark / gitweb /
wip server
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 22 Aug 2021 00:25:09 +0000 (01:25 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 22 Aug 2021 00:26:18 +0000 (01:26 +0100)
server/server.rs
server/slocal.rs
server/sweb.rs

index 667ff2e56df1bf445bfe4851790ea3449422d172..70311643b62be2efa9ea65e12b6b2b7c6af10cf2 100644 (file)
@@ -61,7 +61,7 @@ pub async fn route_packet(global: &Global,
   let c = &global.config;
   let len = packet.len();
   let trace = |how: &str, why: &str| {
-    trace!("{} {} {} {} {:?} len={}",
+    trace!("{} {} {} {} daddr={:?} len={}",
            transport_conn,
            match source {
              Some(s) => (s as &dyn Display),
index 56dd853ddfd41782654c83b422343db7ed6a6bda..09e6aba82cbdf0813a202d5b1c86c499c8eff3ff 100644 (file)
@@ -28,15 +28,24 @@ pub async fn run(global: Arc<Global>,
           goodness -= goodness >> GOODNESS_SHIFT;
 
           match checkn(SlipNoConv, global.config.mtu, &data, |header|{
-            // don't really check the addresses: trusting our local knrel
-            ip_packet_addr::<true>(header)
+            let saddr = ip_packet_addr::<false>(header)?;
+            let daddr = ip_packet_addr::<true>(header)?;
+            if ! global.config.vnetwork.iter().any(|n| n.contains(&saddr)) {
+              throw!(PE::Src(saddr))
+            }
+            Ok(daddr)
           }, |(data, daddr)| route_packet(
             &global, "ipif", None,
             data, daddr, may_route.clone()
-          ).map(Ok), |pe| match pe {
-            PE::Empty => Ok(()),
+          ).map(Ok), |pe| Ok(match pe {
+            PE::Empty => { },
+            PE::Src(saddr) => trace!(
+              target: "hippotatd",
+              "ipif local discard outside-vnets saddr={:?}",
+              saddr
+            ),
             other => throw!(other),
-          }).await {
+          })).await {
             Ok(()) => goodness += 1,
             Err(e) => {
               goodness -= 1;
index d4e825e0886f60b093cf99e455379cc38b6a6153..4998bd9f85e6d9d9f5f38bf89f304670c00bf309 100644 (file)
@@ -178,7 +178,8 @@ pub async fn handle(
     // boundary, start, &comp.name, &client.ic);
 
     let (reply_to, reply_recv) = oneshot::channel();
-    trace!("{} {} request, Content-Length={}",
+    trace!(target: "hippotatd",
+           "{} {} request, Content-Length={}",
            &conn, &client_name, length_hint);
     let wreq = WebRequest {
       initial,