Fix clippy warnings.

This commit is contained in:
Egor Karavaev
2017-06-13 16:23:49 +03:00
parent ce69cdbb8f
commit 53db52c119
3 changed files with 45 additions and 39 deletions
+1 -1
View File
@@ -25,5 +25,5 @@ path = "src/icmpd/main.rs"
[dependencies]
netutils = { git = "https://github.com/redox-os/netutils.git" }
rand = "0.3"
redox_event = { path = "../event" }
redox_event = { git = "https://github.com/redox-os/event.git" }
redox_syscall = "0.1"
+18 -18
View File
@@ -2,6 +2,15 @@ use error::{PacketResult, PacketError};
use netutils::Checksum;
use std::mem;
const ECHO_REQUEST_TYPE: u8 = 8;
const ECHO_REQUEST_CODE: u8 = 0;
const ECHO_RESPONSE_TYPE: u8 = 0;
const ECHO_RESPONSE_CODE: u8 = 0;
const UNREACHABLE_TYPE: u8 = 3;
const UNREACHABLE_HOST_CODE: u8 = 1;
const UNREACHABLE_PROTO_CODE: u8 = 2;
const UNREACHABLE_PORT_CODE: u8 = 3;
#[repr(packed)]
pub struct Header {
icmp_type: u8,
@@ -44,9 +53,7 @@ pub enum PacketKind {
impl EchoHeader {
pub fn new(id: u16) -> EchoHeader {
EchoHeader {
id: id.to_be(),
}
EchoHeader { id: id.to_be() }
}
pub fn get_id(&self) -> u16 {
@@ -72,7 +79,7 @@ impl<'a> Packet<'a> {
} else {
let (header_bytes, payload_bytes) = bytes.split_at(mem::size_of::<Header>());
let mut packet = Packet {
header: unsafe { mem::transmute(header_bytes.as_ptr()) },
header: unsafe { &*(header_bytes.as_ptr() as *const Header) },
payload: payload_bytes,
subheader: SubHeader::None,
};
@@ -86,8 +93,10 @@ impl<'a> Packet<'a> {
}
let (echo_header_payload, payload) =
packet.payload.split_at(mem::size_of::<EchoHeader>());
packet.subheader =
SubHeader::Echo(unsafe { mem::transmute(echo_header_payload.as_ptr()) });
packet.subheader = SubHeader::Echo(unsafe {
&*(echo_header_payload.as_ptr() as
*const EchoHeader)
});
packet.payload = payload;
Ok(packet)
}
@@ -138,7 +147,7 @@ impl<'a> MutPacket<'a> {
} else {
let (header_bytes, payload_bytes) = bytes.split_at_mut(mem::size_of::<Header>());
Ok(MutPacket {
header: unsafe { mem::transmute(header_bytes.as_ptr()) },
header: unsafe { &mut *(header_bytes.as_ptr() as *mut Header) },
payload: payload_bytes,
subheader: SubHeader::None,
})
@@ -159,8 +168,8 @@ impl<'a> MutPacket<'a> {
let new_subheader = match *subheader {
SubHeader::Echo(echo_sub_header) => {
let echo_sub_header_mut: &mut EchoHeader =
unsafe { mem::transmute(subheader_bytes.as_ptr()) };
*echo_sub_header_mut = echo_sub_header.clone();
unsafe { &mut *(subheader_bytes.as_ptr() as *mut EchoHeader) };
*echo_sub_header_mut = *echo_sub_header;
SubHeader::Echo(echo_sub_header_mut)
}
SubHeader::None => SubHeader::None,
@@ -201,12 +210,3 @@ impl<'a> MutPacket<'a> {
mem::size_of::<Header>() + subheader.get_size()
}
}
const ECHO_REQUEST_TYPE: u8 = 8;
const ECHO_REQUEST_CODE: u8 = 0;
const ECHO_RESPONSE_TYPE: u8 = 0;
const ECHO_RESPONSE_CODE: u8 = 0;
const UNREACHABLE_TYPE: u8 = 3;
const UNREACHABLE_HOST_CODE: u8 = 1;
const UNREACHABLE_PROTO_CODE: u8 = 2;
const UNREACHABLE_PORT_CODE: u8 = 3;
+26 -20
View File
@@ -64,7 +64,7 @@ impl Icmpd {
break;
}
self.handle(&mut packet);
self.scheme_file.write(&packet)?;
self.scheme_file.write_all(&packet)?;
}
Ok(None)
}
@@ -80,8 +80,10 @@ impl Icmpd {
break;
}
let ip_packet = Ipv4::from_bytes(&packet_buffer[..bytes_readed])
.ok_or(Error::from_parsing_error(PacketError::NotEnoughData,
"failed to parse ip header"))?;
.ok_or_else(|| {
Error::from_parsing_error(PacketError::NotEnoughData,
"failed to parse ip header")
})?;
let icmp_packet =
Packet::from_bytes(&ip_packet.data)
.map_err(|e| Error::from_parsing_error(e, "failed to parse ICMP packet"))?;
@@ -107,7 +109,7 @@ impl Icmpd {
}
fn on_echo_response(&mut self, ip_packet: &Ipv4, icmp_packet: &Packet) -> Result<()> {
if let &SubHeader::Echo(echo_subheader) = icmp_packet.get_subheader() {
if let SubHeader::Echo(echo_subheader) = *icmp_packet.get_subheader() {
if let Some(fd_set) = self.echo_ips
.get_mut(&Ipv4Addr::from(ip_packet.header.src.bytes)) {
for fd in fd_set.iter() {
@@ -138,7 +140,7 @@ impl Icmpd {
self.handles.insert(fd, handle);
self.echo_ips
.entry(ip_addr)
.or_insert_with(|| HashSet::new())
.or_insert_with(HashSet::new)
.insert(fd);
Ok(fd)
}
@@ -164,13 +166,17 @@ impl SchemeMut for Icmpd {
use std::str::FromStr;
let path = str::from_utf8(url)
.or(Err(syscall::Error::new(syscall::EINVAL)))?;
let mut parts = path.split("/");
let method = parts.next().ok_or(syscall::Error::new(syscall::EINVAL))?;
.or_else(|_| Err(syscall::Error::new(syscall::EINVAL)))?;
let mut parts = path.split('/');
let method = parts
.next()
.ok_or_else(|| syscall::Error::new(syscall::EINVAL))?;
match method {
"echo" => {
let addr = parts.next().ok_or(syscall::Error::new(syscall::EINVAL))?;
let addr = Ipv4Addr::from_str(&addr)
let addr = parts
.next()
.ok_or_else(|| syscall::Error::new(syscall::EINVAL))?;
let addr = Ipv4Addr::from_str(addr)
.map_err(|_| syscall::Error::new(syscall::EINVAL))?;
self.open_echo(addr, flags)
}
@@ -182,7 +188,7 @@ impl SchemeMut for Icmpd {
let (ip, ip_set) = {
let handle = self.handles
.get_mut(&fd)
.ok_or(syscall::Error::new(syscall::EBADF))?;
.ok_or_else(|| syscall::Error::new(syscall::EBADF))?;
match handle.handle_type {
HandleType::Echo => (handle.ip_addr, &mut self.echo_ips),
}
@@ -208,15 +214,15 @@ impl SchemeMut for Icmpd {
}
let handle = self.handles
.get_mut(&fd)
.ok_or(syscall::Error::new(syscall::EBADF))?;
.ok_or_else(|| syscall::Error::new(syscall::EBADF))?;
match handle.handle_type {
HandleType::Echo => {
let echo_request =
produce_icmp_packet(handle.ip_addr,
PacketKind::EchoRequest,
&SubHeader::Echo(&EchoHeader::new(fd as u16)),
buf)
.map_err(|_| syscall::Error::new(syscall::EPROTO))?;
let echo_request = produce_icmp_packet(handle.ip_addr,
PacketKind::EchoRequest,
&SubHeader::Echo(&EchoHeader::new(fd as
u16)),
buf)
.map_err(|_| syscall::Error::new(syscall::EPROTO))?;
self.icmp_file
.write(&echo_request)
.map_err(|_| syscall::Error::new(syscall::EPROTO))
@@ -227,7 +233,7 @@ impl SchemeMut for Icmpd {
fn read(&mut self, fd: usize, buf: &mut [u8]) -> syscall::Result<usize> {
let handle = self.handles
.get_mut(&fd)
.ok_or(syscall::Error::new(syscall::EBADF))?;
.ok_or_else(|| syscall::Error::new(syscall::EBADF))?;
match handle.handle_type {
HandleType::Echo => Icmpd::read_echo(handle, buf),
}
@@ -236,7 +242,7 @@ impl SchemeMut for Icmpd {
fn fevent(&mut self, fd: usize, events: usize) -> syscall::Result<usize> {
let handle = self.handles
.get_mut(&fd)
.ok_or(syscall::Error::new(syscall::EBADF))?;
.ok_or_else(|| syscall::Error::new(syscall::EBADF))?;
handle.events = events;
Ok(fd)
}