Fix length of tx buffers returned by fault injector.

v0.7.x
whitequark 2016-12-31 01:10:46 +00:00
parent e1e0c2e838
commit 64a8c36118
5 changed files with 15 additions and 13 deletions

View File

@ -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,7 +142,8 @@ 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]>
@ -149,7 +151,7 @@ impl<T: AsRef<[u8]> + AsMut<[u8]>> AsRef<[u8]>
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]
}
}
}

View File

@ -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>;
}

View File

@ -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]
})
}
}

View File

@ -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]
})
}
}

View File

@ -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