添加igmp、调整返回值

This commit is contained in:
lubeilin
2023-06-23 15:25:00 +08:00
parent cf4375b405
commit d7fd504f8f
14 changed files with 817 additions and 91 deletions
+4 -5
View File
@@ -1,7 +1,6 @@
use std::fmt;
use std::{fmt, io};
use std::net::Ipv4Addr;
use crate::error::*;
use crate::tcp::Flags;
/// tcp
@@ -59,15 +58,15 @@ impl<B: AsRef<[u8]>> TcpPacket<B> {
buffer,
}
}
pub fn new(source_ip: Ipv4Addr, destination_ip: Ipv4Addr, buffer: B) -> Result<TcpPacket<B>> {
pub fn new(source_ip: Ipv4Addr, destination_ip: Ipv4Addr, buffer: B) -> io::Result<TcpPacket<B>> {
let packet = TcpPacket::unchecked(source_ip, destination_ip, buffer);
if packet.buffer.as_ref().len() < 20 {
Err(Error::SmallBuffer)?
Err(io::Error::from(io::ErrorKind::InvalidData))?;
}
if packet.buffer.as_ref().len() < packet.data_offset() as usize * 4 {
Err(Error::SmallBuffer)?
Err(io::Error::from(io::ErrorKind::InvalidData))?;
}
Ok(packet)