Commit 2b6c932e authored by nanamicat's avatar nanamicat

transmute

parent f89ecc18
......@@ -103,7 +103,7 @@ fn main() -> Result<(), Box<dyn Error>> {
router.encrypt(&mut buffer[meta_size..meta_size + n]);
#[cfg(target_os = "linux")]
router.socket.set_mark(router.config.mark)?;
router.socket.send_to(&buffer[..meta_size + n], addr).unwrap();
let _ = router.socket.send_to(&buffer[..meta_size + n], addr);
}
}
});
......@@ -113,23 +113,24 @@ fn main() -> Result<(), Box<dyn Error>> {
s.spawn(move |_| {
let mut recv_buf = [MaybeUninit::uninit(); 1500];
loop {
let (len, addr) = socket.recv_from(&mut recv_buf).unwrap();
let data: &mut [u8] = unsafe { transmute(&mut recv_buf[..len]) };
let _ = (|| {
let (len, addr) = socket.recv_from(&mut recv_buf).unwrap();
let data: &mut [u8] = unsafe { transmute(&mut recv_buf[..len]) };
if let Some(packet) = Ipv4Packet::new(data) {
let packet = Ipv4Packet::new(data).ok_or("malformed packet")?;
let header_len = packet.get_header_length() as usize * 4;
let (_ip_header, rest) = data.split_at_mut_checked(header_len).unwrap();
let (meta_bytes, payload) = rest.split_at_mut_checked(size_of::<Meta>()).unwrap();
let (_ip_header, rest) = data.split_at_mut_checked(header_len).ok_or("malformed packet")?;
let (meta_bytes, payload) = rest.split_at_mut_checked(size_of::<Meta>()).ok_or("malformed packet")?;
let meta: &Meta = unsafe { transmute(meta_bytes.as_ptr()) };
if meta.dst_id == config.local_id && meta.reversed == 0 {
if let Some(router) = router_writers.get_mut(&meta.src_id) {
*router.endpoint.write().unwrap() = Some(addr);
router.decrypt(payload);
router.tun_writer.write_all(payload).unwrap();
}
let router = router_writers.get_mut(&meta.src_id).ok_or("missing router")?;
*router.endpoint.write().unwrap() = Some(addr);
router.decrypt(payload);
router.tun_writer.write_all(payload)?;
}
}
// Ok(())
Ok::<(), Box<dyn Error>>(())
})();
}
});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment