X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=src%2Fslip.rs;h=fbbbf3dece7317a5f547f0b7c60f5dbdf888656a;hb=a0494f5bd5dc1a7b3e9f7262d45deac2e0b4fa12;hp=f5980cc3b72f5d559f8170fc7bd50cce503ea57a;hpb=726288e5dde552bad4d56e0b7c1d85ffef4871b0;p=hippotat.git diff --git a/src/slip.rs b/src/slip.rs index f5980cc..fbbbf3d 100644 --- a/src/slip.rs +++ b/src/slip.rs @@ -167,20 +167,20 @@ impl From for FramesData { const HEADER_FOR_ADDR: usize = 40; #[throws(PacketError)] -pub fn ip_packet_addr(packet: &[u8]) -> IpAddr { - let vsn = (packet.get(0).ok_or_else(|| PE::Empty)? & 0xf0) >> 4; +pub fn ip_packet_addr(header: &[u8]) -> IpAddr { + let vsn = (header.get(0).ok_or_else(|| PE::Empty)? & 0xf0) >> 4; match vsn { - 4 if packet.len() >= 20 => { - let slice = &packet[if DST { 16 } else { 12 }..][0..4]; + 4 if header.len() >= 20 => { + let slice = &header[if DST { 16 } else { 12 }..][0..4]; Ipv4Addr::from(*<&[u8;4]>::try_from(slice).unwrap()).into() }, - 6 if packet.len() >= 40 => { - let slice = &packet[if DST { 24 } else { 8 }..][0..16]; + 6 if header.len() >= 40 => { + let slice = &header[if DST { 24 } else { 8 }..][0..16]; Ipv6Addr::from(*<&[u8;16]>::try_from(slice).unwrap()).into() }, - _ => throw!(PE::Truncated{ vsn, len: packet.len() }), + _ => throw!(PE::Truncated{ vsn, len: header.len() }), } }