From 8cccc184f30cd30c697f68a8a26085f83e60216a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 22 Aug 2021 15:59:03 +0100 Subject: [PATCH] server: reorg, messages Signed-off-by: Ian Jackson --- server/slocal.rs | 49 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/server/slocal.rs b/server/slocal.rs index 152a570..62fb556 100644 --- a/server/slocal.rs +++ b/server/slocal.rs @@ -36,43 +36,38 @@ pub async fn run(global: Arc, goodness -= goodness >> GOODNESS_SHIFT; // xxx should be process1 - match slip::processn(SlipNoConv, global.config.mtu, &data, |header|{ + match process1(SlipNoConv, global.config.mtu, &data, |header|{ let saddr = ip_packet_addr::(header)?; let daddr = ip_packet_addr::(header)?; Ok((saddr,daddr)) - }, |(data, (saddr, daddr))| { - let global = &global; - let may_route = &may_route; - async move { - if ! global.config.vnetwork.iter().any(|n| n.contains(&saddr)) { - // pretent as if this came from route - trace!( - target: "hippotatd", - "discard to={:?} came=ipif user=local from-outside-vnets-={:?}", - daddr, saddr); - return Ok(()) - } - - route_packet( - &global, "ipif", None, - data, daddr, may_route.clone() - ).await; + }) { + Err(PE::Empty) => { }, - Ok(()) - } - }, |pe| Ok(match pe { - PE::Empty => { }, - other => throw!(other), - })).await { - Ok(()) => goodness += 1, - Err(e) => { + Err(pe) => { goodness -= 1; error!("[good={}] invalid data from local tx ipif {}", - goodness, e); + goodness, pe); if goodness < GOODNESS_MIN { throw!(anyhow!("too many bad packets, too few good ones!")) } }, + + Ok((ref data, (ref saddr, ref daddr))) + if ! global.config.vnetwork.iter().any(|n| n.contains(saddr)) => { + // pretent as if this came from route + trace!( + target: "hippotatd", + "discard to={:?} came=ipif user=local len={} outside-vnets: from={:?}", + daddr, saddr, data.len()); + }, + + Ok((data, (saddr, daddr))) => { + goodness += 1; + route_packet( + &global, "ipif", None, + data, daddr, may_route.clone() + ).await; + } } }, } -- 2.30.2