diff --git a/src/phy/fault_injector.rs b/src/phy/fault_injector.rs index fffe11a2..6a909100 100644 --- a/src/phy/fault_injector.rs +++ b/src/phy/fault_injector.rs @@ -274,7 +274,7 @@ pub struct RxToken<'a> { impl<'a> phy::RxToken for RxToken<'a> { fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { f(self.buf) } diff --git a/src/phy/fuzz_injector.rs b/src/phy/fuzz_injector.rs index 6769d8ec..f0b53c85 100644 --- a/src/phy/fuzz_injector.rs +++ b/src/phy/fuzz_injector.rs @@ -1,3 +1,6 @@ +extern crate alloc; +use alloc::vec::Vec; + use crate::phy::{self, Device, DeviceCapabilities}; use crate::time::Instant; @@ -92,11 +95,12 @@ pub struct RxToken<'a, Rx: phy::RxToken, F: Fuzzer + 'a> { impl<'a, Rx: phy::RxToken, FRx: Fuzzer> phy::RxToken for RxToken<'a, Rx, FRx> { fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { self.token.consume(|buffer| { - self.fuzzer.fuzz_packet(buffer); - f(buffer) + let mut new_buffer: Vec = buffer.to_vec(); + self.fuzzer.fuzz_packet(&mut new_buffer); + f(&mut new_buffer) }) } diff --git a/src/phy/loopback.rs b/src/phy/loopback.rs index b382ab62..cabce2c3 100644 --- a/src/phy/loopback.rs +++ b/src/phy/loopback.rs @@ -61,11 +61,11 @@ pub struct RxToken { } impl phy::RxToken for RxToken { - fn consume(mut self, f: F) -> R + fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { - f(&mut self.buffer) + f(&self.buffer) } } diff --git a/src/phy/mod.rs b/src/phy/mod.rs index c3845d98..3354d42f 100644 --- a/src/phy/mod.rs +++ b/src/phy/mod.rs @@ -62,11 +62,11 @@ impl phy::Device for StmPhy { struct StmPhyRxToken<'a>(&'a mut [u8]); impl<'a> phy::RxToken for StmPhyRxToken<'a> { - fn consume(mut self, f: F) -> R - where F: FnOnce(&mut [u8]) -> R + fn consume(self, f: F) -> R + where F: FnOnce(& [u8]) -> R { // TODO: receive packet into buffer - let result = f(&mut self.0); + let result = f(&self.0); println!("rx called"); result } @@ -372,7 +372,7 @@ pub trait RxToken { /// packet bytes as argument. fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R; + F: FnOnce(&[u8]) -> R; /// The Packet ID associated with the frame received by this [`RxToken`] fn meta(&self) -> PacketMeta { diff --git a/src/phy/pcap_writer.rs b/src/phy/pcap_writer.rs index aadf2a27..671e8978 100644 --- a/src/phy/pcap_writer.rs +++ b/src/phy/pcap_writer.rs @@ -219,7 +219,7 @@ pub struct RxToken<'a, Rx: phy::RxToken, S: PcapSink> { } impl<'a, Rx: phy::RxToken, S: PcapSink> phy::RxToken for RxToken<'a, Rx, S> { - fn consume R>(self, f: F) -> R { + fn consume R>(self, f: F) -> R { self.token.consume(|buffer| { match self.mode { PcapMode::Both | PcapMode::RxOnly => self diff --git a/src/phy/raw_socket.rs b/src/phy/raw_socket.rs index 19c5b98d..0cb7752d 100644 --- a/src/phy/raw_socket.rs +++ b/src/phy/raw_socket.rs @@ -104,11 +104,11 @@ pub struct RxToken { } impl phy::RxToken for RxToken { - fn consume(mut self, f: F) -> R + fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { - f(&mut self.buffer[..]) + f(&self.buffer[..]) } } diff --git a/src/phy/tracer.rs b/src/phy/tracer.rs index 48e60ec2..999a9523 100644 --- a/src/phy/tracer.rs +++ b/src/phy/tracer.rs @@ -94,7 +94,7 @@ pub struct RxToken { impl phy::RxToken for RxToken { fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { self.token.consume(|buffer| { (self.writer)( diff --git a/src/phy/tuntap_interface.rs b/src/phy/tuntap_interface.rs index 32a28dbb..45c96f50 100644 --- a/src/phy/tuntap_interface.rs +++ b/src/phy/tuntap_interface.rs @@ -93,11 +93,11 @@ pub struct RxToken { } impl phy::RxToken for RxToken { - fn consume(mut self, f: F) -> R + fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { - f(&mut self.buffer[..]) + f(&self.buffer[..]) } } diff --git a/src/tests.rs b/src/tests.rs index ec026ab6..b9eb740b 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -120,11 +120,11 @@ pub struct RxToken { } impl phy::RxToken for RxToken { - fn consume(mut self, f: F) -> R + fn consume(self, f: F) -> R where - F: FnOnce(&mut [u8]) -> R, + F: FnOnce(&[u8]) -> R, { - f(&mut self.buffer) + f(&self.buffer) } }