rust/nfs4: Add NFSPROC4_RECLAIM_COMPLETE op parsers

pull/7112/head
Sam Muhammed 3 years ago committed by Victor Julien
parent 2a41b46eca
commit b35d635ac7

@ -61,6 +61,7 @@ pub enum Nfs4RequestContent<'a> {
ExchangeId(Nfs4RequestExchangeId<'a>),
Sequence(Nfs4RequestSequence<'a>),
CreateSession(Nfs4RequestCreateSession<'a>),
ReclaimComplete(u32),
}
#[derive(Debug,PartialEq)]
@ -418,6 +419,10 @@ fn nfs4_req_commit(i: &[u8]) -> IResult<&[u8], Nfs4RequestContent> {
Ok((i, Nfs4RequestContent::Commit))
}
fn nfs4_req_reclaim_complete(i: &[u8]) -> IResult<&[u8], Nfs4RequestContent> {
map(verify(be_u32, |&v| v <= 1), Nfs4RequestContent::ReclaimComplete) (i)
}
#[derive(Debug,PartialEq)]
pub struct Nfs4RequestExchangeId<'a> {
pub client_string: &'a[u8],
@ -488,6 +493,7 @@ fn parse_request_compound_command(i: &[u8]) -> IResult<&[u8], Nfs4RequestContent
NFSPROC4_SEQUENCE => nfs4_req_sequence(i)?,
NFSPROC4_EXCHANGE_ID => nfs4_req_exchangeid(i)?,
NFSPROC4_CREATE_SESSION => nfs4_req_create_session(i)?,
NFSPROC4_RECLAIM_COMPLETE => nfs4_req_reclaim_complete(i)?,
_ => { return Err(Err::Error(make_error(i, ErrorKind::Switch))); }
};
Ok((i, cmd_data))
@ -537,6 +543,7 @@ pub enum Nfs4ResponseContent<'a> {
ExchangeId(u32, Option<Nfs4ResponseExchangeId<'a>>),
Sequence(u32, Option<Nfs4ResponseSequence<'a>>),
CreateSession(u32, Option<Nfs4ResponseCreateSession<'a>>),
ReclaimComplete(u32),
}
#[derive(Debug, PartialEq)]
@ -594,6 +601,10 @@ fn nfs4_parse_res_exchangeid(i: &[u8]) -> IResult<&[u8], Nfs4ResponseExchangeId>
}))
}
fn nfs4_res_reclaim_complete(i: &[u8]) -> IResult<&[u8], Nfs4ResponseContent> {
map(be_u32, Nfs4ResponseContent::ReclaimComplete) (i)
}
fn nfs4_res_exchangeid(i: &[u8]) -> IResult<&[u8], Nfs4ResponseContent> {
let (i, status) = be_u32(i)?;
let (i, xchngid_data) = cond(status == 0, nfs4_parse_res_exchangeid)(i)?;
@ -946,6 +957,7 @@ fn nfs4_res_compound_command(i: &[u8]) -> IResult<&[u8], Nfs4ResponseContent> {
NFSPROC4_SEQUENCE => nfs4_res_sequence(i)?,
NFSPROC4_RENEW => nfs4_res_renew(i)?,
NFSPROC4_CREATE_SESSION => nfs4_res_create_session(i)?,
NFSPROC4_RECLAIM_COMPLETE => nfs4_res_reclaim_complete(i)?,
_ => { return Err(Err::Error(make_error(i, ErrorKind::Switch))); }
};
Ok((i, cmd_data))

@ -273,11 +273,10 @@ pub const NFSPROC4_SETCLIENTID_CONFIRM: u32 = 36;
pub const NFSPROC4_VERIFY: u32 = 37;
pub const NFSPROC4_WRITE: u32 = 38;
pub const NFSPROC4_RELEASE_LOCKOWNER: u32 = 39;
pub const NFSPROC4_EXCHANGE_ID: u32 = 42;
pub const NFSPROC4_CREATE_SESSION: u32 = 43;
pub const NFSPROC4_SEQUENCE: u32 = 53;
pub const NFSPROC4_EXCHANGE_ID: u32 = 42;
pub const NFSPROC4_RECLAIM_COMPLETE: u32 = 58;
pub const NFSPROC4_ILLEGAL: u32 = 10044;

Loading…
Cancel
Save