IResult::Incomplete(_) => { panic!("WEIRD"); },
IResult::Error(e) => { panic!("Parsing failed: {:?}",e); },
};
-
+ } else if r.procedure == NFSPROC3_MKDIR {
+ match parse_nfs3_request_mkdir(r.prog_data) {
+ IResult::Done(_, mr) => {
+ xidmap.file_handle = mr.handle.value.to_vec();
+ xidmap.file_name = mr.name_vec;
+ },
+ IResult::Incomplete(_) => { panic!("WEIRD"); },
+ IResult::Error(e) => { panic!("Parsing failed: {:?}",e); },
+ };
+ } else if r.procedure == NFSPROC3_RMDIR {
+ match parse_nfs3_request_rmdir(r.prog_data) {
+ IResult::Done(_, rr) => {
+ xidmap.file_handle = rr.handle.value.to_vec();
+ xidmap.file_name = rr.name_vec;
+ },
+ IResult::Incomplete(_) => { panic!("WEIRD"); },
+ IResult::Error(e) => { panic!("Parsing failed: {:?}",e); },
+ };
} else if r.procedure == NFSPROC3_COMMIT {
SCLogDebug!("COMMIT, closing shop");
))
);
+#[derive(Debug,PartialEq)]
+pub struct Nfs3RequestRmdir<'a> {
+ pub handle: Nfs3Handle<'a>,
+ pub name_vec: Vec<u8>,
+}
+
+named!(pub parse_nfs3_request_rmdir<Nfs3RequestRmdir>,
+ do_parse!(
+ dir_handle: parse_nfs3_handle
+ >> name_len: be_u32
+ >> name: take!(name_len)
+ >> fill_bytes: cond!(name_len % 4 != 0, take!(4 - name_len % 4))
+ >> (
+ Nfs3RequestRmdir {
+ handle:dir_handle,
+ name_vec:name.to_vec(),
+ }
+ ))
+);
+
+#[derive(Debug,PartialEq)]
+pub struct Nfs3RequestMkdir<'a> {
+ pub handle: Nfs3Handle<'a>,
+ pub name_vec: Vec<u8>,
+}
+
+named!(pub parse_nfs3_request_mkdir<Nfs3RequestMkdir>,
+ do_parse!(
+ dir_handle: parse_nfs3_handle
+ >> name_len: be_u32
+ >> name: take!(name_len)
+ >> fill_bytes: cond!(name_len % 4 != 0, take!(4 - name_len % 4))
+ >> attributes: rest
+ >> (
+ Nfs3RequestMkdir {
+ handle:dir_handle,
+ name_vec:name.to_vec(),
+ }
+ ))
+);
+
#[derive(Debug,PartialEq)]
pub struct Nfs3RequestRename<'a> {
pub from_handle: Nfs3Handle<'a>,