Factor out wire::tcp::field::OPTIONS.

This commit is contained in:
whitequark 2017-06-24 12:02:17 +00:00
parent 315b51d7da
commit 9f8db1d8f9
1 changed files with 8 additions and 4 deletions

View File

@ -80,6 +80,10 @@ mod field {
pub const CHECKSUM: Field = 16..18;
pub const URGENT: Field = 18..20;
pub fn OPTIONS(length: u8) -> Field {
URGENT.end..(length as usize)
}
pub const FLG_FIN: u16 = 0x001;
pub const FLG_SYN: u16 = 0x002;
pub const FLG_RST: u16 = 0x004;
@ -295,9 +299,9 @@ impl<'a, T: AsRef<[u8]> + ?Sized> Packet<&'a T> {
/// Return a pointer to the options.
#[inline]
pub fn options(&self) -> &'a [u8] {
let header_len = self.header_len() as usize;
let header_len = self.header_len();
let data = self.buffer.as_ref();
&data[field::URGENT.end..header_len]
&data[field::OPTIONS(header_len)]
}
/// Return a pointer to the payload.
@ -481,9 +485,9 @@ impl<'a, T: AsRef<[u8]> + AsMut<[u8]> + ?Sized> Packet<&'a mut T> {
/// Return a pointer to the options.
#[inline]
pub fn options_mut(&mut self) -> &mut [u8] {
let header_len = self.header_len() as usize;
let header_len = self.header_len();
let data = self.buffer.as_mut();
&mut data[field::URGENT.end..header_len]
&mut data[field::OPTIONS(header_len)]
}
/// Return a mutable pointer to the payload data.