let (i, handle) = parse_nfs3_handle(i)?;
let (i, name_len) = be_u32(i)?;
let (i, name) = take(name_len as usize)(i)?;
+ let (i, _fill_bytes) = cond(name_len % 4 != 0, take(4 - (name_len % 4)))(i)?;
let (i, create_mode) = be_u32(i)?;
let (i, verifier) = rest(i)?;
let req = Nfs3RequestCreate {
#[derive(Debug, PartialEq)]
pub struct Nfs3RequestLookup<'a> {
pub handle: Nfs3Handle<'a>,
-
pub name_vec: Vec<u8>,
}
let (i, status) = be_u32(i)?;
let (i, dir_attr_follows) = be_u32(i)?;
let (i, _dir_attr) = cond(dir_attr_follows == 1, take(84_usize))(i)?;
+ let (i, _verifier) = be_u64(i)?;
let (i, data) = rest(i)?;
let resp = Nfs3ResponseReaddirplus { status, data };
Ok((i, resp))
many0(complete(parse_nfs3_response_readdirplus_entry_cond))(input)
}
+
#[derive(Debug, PartialEq)]
pub struct Nfs3RequestReaddirplus<'a> {
pub handle: Nfs3Handle<'a>,
-
- pub cookie: u32,
+ pub cookie: u64,
pub verifier: &'a [u8],
pub dircount: u32,
pub maxcount: u32,
pub fn parse_nfs3_request_readdirplus(i: &[u8]) -> IResult<&[u8], Nfs3RequestReaddirplus> {
let (i, handle) = parse_nfs3_handle(i)?;
- let (i, cookie) = be_u32(i)?;
+ let (i, cookie) = be_u64(i)?;
let (i, verifier) = take(8_usize)(i)?;
let (i, dircount) = be_u32(i)?;
let (i, maxcount) = be_u32(i)?;
#[derive(Debug, PartialEq)]
pub struct Nfs3RequestWrite<'a> {
pub handle: Nfs3Handle<'a>,
-
pub offset: u64,
pub count: u32,
pub stable: u32,
let (i, count) = be_u32(i)?;
let (i, stable) = be_u32(i)?;
let (i, file_len) = be_u32(i)?;
- let (i, file_data) = rest(i)?;
+ let (i, file_data) = take(file_len as usize)(i)?;
+ let (i, _file_padding) = cond(file_len % 4 !=0, take(4 - (file_len % 4)))(i)?;
let req = Nfs3RequestWrite {
handle,
offset,
let (i, count) = be_u32(i)?;
let (i, eof) = be_u32(i)?;
let (i, data_len) = be_u32(i)?;
- let (i, data) = rest(i)?;
+ let (i, data) = take(data_len as usize)(i)?;
+ let (i, _data_padding) = cond(data_len % 4 !=0, take(4 - (data_len % 4)))(i)?;
let reply = NfsReplyRead {
status,
attr_follows,