From 734e61345213cc8ae074922328a74323e224aed6 Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Tue, 5 Mar 2024 21:35:49 +0800 Subject: [PATCH] =?UTF-8?q?[mio]=20=E5=AE=8C=E5=96=84=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/tun/src/packet/ethernet/packet.rs | 2 +- vnt/tun/src/packet/mod.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/vnt/tun/src/packet/ethernet/packet.rs b/vnt/tun/src/packet/ethernet/packet.rs index a9540a7..440d61a 100644 --- a/vnt/tun/src/packet/ethernet/packet.rs +++ b/vnt/tun/src/packet/ethernet/packet.rs @@ -21,7 +21,7 @@ impl> EthernetPacket { let packet = EthernetPacket::unchecked(buffer); //头部固定14位 if packet.buffer.as_ref().len() < 14 { - Err(io::Error::from(io::ErrorKind::InvalidData))?; + Err(io::Error::new(io::ErrorKind::InvalidData,format!("len={}", packet.buffer.as_ref().len())))?; } Ok(packet) diff --git a/vnt/tun/src/packet/mod.rs b/vnt/tun/src/packet/mod.rs index 75d9f31..07905b7 100644 --- a/vnt/tun/src/packet/mod.rs +++ b/vnt/tun/src/packet/mod.rs @@ -13,8 +13,11 @@ where let mut eth_buf = [0; 65536]; loop { let len = read_fn(&mut eth_buf)?; + if len == 0{ + return Ok(len); + } //处理arp包 - let mut ether = ethernet::packet::EthernetPacket::unchecked(&mut eth_buf[..len]); + let mut ether = ethernet::packet::EthernetPacket::new(&mut eth_buf[..len])?; match ether.protocol() { Protocol::Ipv4 => { let len = ether.payload().len();