Skip to content

Commit

Permalink
Fix length of tx buffers returned by fault injector.
Browse files Browse the repository at this point in the history
whitequark committed Dec 31, 2016
1 parent 5860c36 commit 1c7f972
Showing 5 changed files with 15 additions and 13 deletions.
14 changes: 8 additions & 6 deletions src/phy/fault_injector.rs
Original file line number Diff line number Diff line change
@@ -119,19 +119,20 @@ impl<T: Device> Device for FaultInjector<T>
Ok(buffer)
}

fn transmit(&mut self, len: usize) -> Result<Self::TxBuffer, Error> {
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error> {
let buffer;
if check_rng(&mut self.state, self.config.drop_pct) {
net_trace!("rx: dropping a packet");
buffer = None;
} else {
buffer = Some(try!(self.lower.transmit(len)));
buffer = Some(try!(self.lower.transmit(length)));
}
Ok(TxBuffer {
buffer: buffer,
state: xorshift32(&mut self.state),
config: self.config,
junk: [0; MTU]
junk: [0; MTU],
length: length
})
}
}
@@ -141,15 +142,16 @@ pub struct TxBuffer<T: AsRef<[u8]> + AsMut<[u8]>> {
state: u32,
config: Config,
buffer: Option<T>,
junk: [u8; MTU]
junk: [u8; MTU],
length: usize
}

impl<T: AsRef<[u8]> + AsMut<[u8]>> AsRef<[u8]>
for TxBuffer<T> {
fn as_ref(&self) -> &[u8] {
match self.buffer {
Some(ref buf) => buf.as_ref(),
None => &self.junk[..]
None => &self.junk[..self.length]
}
}
}
@@ -159,7 +161,7 @@ impl<T: AsRef<[u8]> + AsMut<[u8]>> AsMut<[u8]>
fn as_mut(&mut self) -> &mut [u8] {
match self.buffer {
Some(ref mut buf) => buf.as_mut(),
None => &mut self.junk[..]
None => &mut self.junk[..self.length]
}
}
}
2 changes: 1 addition & 1 deletion src/phy/mod.rs
Original file line number Diff line number Diff line change
@@ -51,5 +51,5 @@ pub trait Device {
/// It is expected that a `transmit` implementation would gain ownership of a buffer with
/// the requested length, provide it for emission, and schedule it to be read from
/// memory by the network device once it is dropped.
fn transmit(&mut self, len: usize) -> Result<Self::TxBuffer, Error>;
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error>;
}
4 changes: 2 additions & 2 deletions src/phy/raw_socket.rs
Original file line number Diff line number Diff line change
@@ -43,10 +43,10 @@ impl Device for RawSocket {
Ok(buffer)
}

fn transmit(&mut self, len: usize) -> Result<Self::TxBuffer, Error> {
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error> {
Ok(TxBuffer {
lower: self.lower.clone(),
buffer: vec![0; len]
buffer: vec![0; length]
})
}
}
4 changes: 2 additions & 2 deletions src/phy/tap_interface.rs
Original file line number Diff line number Diff line change
@@ -43,10 +43,10 @@ impl Device for TapInterface {
Ok(buffer)
}

fn transmit(&mut self, len: usize) -> Result<Self::TxBuffer, Error> {
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error> {
Ok(TxBuffer {
lower: self.lower.clone(),
buffer: vec![0; len]
buffer: vec![0; length]
})
}
}
4 changes: 2 additions & 2 deletions src/phy/tracer.rs
Original file line number Diff line number Diff line change
@@ -51,8 +51,8 @@ impl<T: Device, U: PrettyPrint> Device for Tracer<T, U> {
Ok(buffer)
}

fn transmit(&mut self, len: usize) -> Result<Self::TxBuffer, Error> {
let buffer = try!(self.lower.transmit(len));
fn transmit(&mut self, length: usize) -> Result<Self::TxBuffer, Error> {
let buffer = try!(self.lower.transmit(length));
Ok(TxBuffer {
buffer: buffer,
writer: self.writer

0 comments on commit 1c7f972

Please sign in to comment.