public static nfs_argop4 generateRequest(bool CacheThis, byte[] SessId, int SeqId, int HighestSlot, int SlotId) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_SEQUENCE; op.opsequence = new SEQUENCE4args(); op.opsequence.sa_cachethis = CacheThis; slotid4 sId = new slotid4(); sId.value = new uint32_t(SlotId); op.opsequence.sa_slotid = sId; slotid4 HsId = new slotid4(); HsId.value = new uint32_t(HighestSlot); op.opsequence.sa_highest_slotid = HsId; sequenceid4 seq = new sequenceid4(); seq.value = new uint32_t(++SeqId); op.opsequence.sa_sequenceid = seq; sessionid4 sess = new sessionid4(); sess.value = SessId; op.opsequence.sa_sessionid = sess; return op; }
public static nfs_argop4 generateRequest(bool CacheThis, byte[] SessId, int SeqId, int HighestSlot, int SlotId) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_SEQUENCE; op.opsequence = new SEQUENCE4args(); op.opsequence.sa_cachethis = CacheThis; slotid4 sId = new slotid4(); sId.value = new uint32_t(SlotId); op.opsequence.sa_slotid = sId; slotid4 HsId = new slotid4(); HsId.value = new uint32_t(HighestSlot); op.opsequence.sa_highest_slotid = HsId; sequenceid4 seq = new sequenceid4(); seq.value = new uint32_t(++SeqId); op.opsequence.sa_sequenceid = seq; sessionid4 sess = new sessionid4(); sess.value = SessId; op.opsequence.sa_sessionid = sess; return(op); }
public static nfs_argop4 standard(clientid4 eir_clientid, sequenceid4 eir_sequenceid) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_CREATE_SESSION; op.opcreate_session = new CREATE_SESSION4args(); channel_attrs4 chan_attrs = new channel_attrs4(); chan_attrs.ca_headerpadsize = new count4(new uint32_t(0)); chan_attrs.ca_maxoperations = new count4(new uint32_t(8)); chan_attrs.ca_maxrequests = new count4(new uint32_t(128)); chan_attrs.ca_maxrequestsize = new count4(new uint32_t(1049620)); chan_attrs.ca_maxresponsesize = new count4(new uint32_t(1049480)); chan_attrs.ca_maxresponsesize_cached = new count4(new uint32_t(2868)); chan_attrs.ca_rdma_ird = new uint32_t[0]; op.opcreate_session.csa_clientid = eir_clientid; op.opcreate_session.csa_sequence = eir_sequenceid; //connection back channel op.opcreate_session.csa_flags = new uint32_t(0); //3 if u want to use the back channel op.opcreate_session.csa_fore_chan_attrs = chan_attrs; //diferent chan attrs for fore channel channel_attrs4 back_chan_attrs = new channel_attrs4(); back_chan_attrs.ca_headerpadsize = new count4(new uint32_t(0)); back_chan_attrs.ca_maxoperations = new count4(new uint32_t(2)); back_chan_attrs.ca_maxrequests = new count4(new uint32_t(1)); back_chan_attrs.ca_maxrequestsize = new count4(new uint32_t(4096)); back_chan_attrs.ca_maxresponsesize = new count4(new uint32_t(4096)); back_chan_attrs.ca_maxresponsesize_cached = new count4(new uint32_t(0)); back_chan_attrs.ca_rdma_ird = new uint32_t[0]; op.opcreate_session.csa_back_chan_attrs = back_chan_attrs; op.opcreate_session.csa_cb_program = new uint32_t(0x40000000); callback_sec_parms4[] cb = new callback_sec_parms4[1]; callback_sec_parms4 callb = new callback_sec_parms4(); //new auth_sys params callb.cb_secflavor = auth_flavor.AUTH_SYS; callb.cbsp_sys_cred = new authsys_parms(); Random r = new Random(); callb.cbsp_sys_cred.stamp = r.Next(); //just random number callb.cbsp_sys_cred.gid = 0; //maybe root ? callb.cbsp_sys_cred.uid = 0; //maybe root ? callb.cbsp_sys_cred.machinename = System.Environment.MachineName; callb.cbsp_sys_cred.gids = new int[0]; //callb.cb_secflavor = auth_flavor.AUTH_NONE; cb[0] = callb; // op.opcreate_session.csa_sec_parms = new callback_sec_parms4[1]; op.opcreate_session.csa_sec_parms = cb; return(op); }
public static nfs_argop4 generateRequest() { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_GETFH; return(op); }
public static nfs_argop4 normalCREATE(String path, int sequenceId, clientid4 clientid, int access) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_OPEN; op.opopen = new OPEN4args(); op.opopen.seqid = new seqid4(new uint32_t(sequenceId)); state_owner4 owner = new state_owner4(); owner.clientid = clientid; owner.owner = encoding.GetBytes("nfsclient"); op.opopen.owner = new open_owner4(owner); //if ((access & NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_DELEG_MASK) == 0) // { // access |= NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; // } op.opopen.share_access = new uint32_t(access); op.opopen.share_deny = new uint32_t(NFSv4Protocol.OPEN4_SHARE_DENY_NONE); openflag4 flag = new openflag4(); flag.opentype = opentype4.OPEN4_CREATE; // createhow4(mode, attrs, verifier) createhow4 how = new createhow4(); how.mode = createmode4.GUARDED4; //how.mode = createmode4.EXCLUSIVE4_1; fattr4 attr = new fattr4(); attr.attrmask = openFattrBitmap(); attr.attr_vals = new attrlist4(); attr.attr_vals.value = openAttrs(7,7,7,0); how.createattrs = attr; how.createverf = new verifier4(0); //it is long //how.mode = createmode4.GUARDED4; flag.how = how; op.opopen.openhow = flag; open_claim4 claim = new open_claim4(); claim.claim = open_claim_type4.CLAIM_NULL; claim.file = new component4(new utf8str_cs(new utf8string(encoding .GetBytes(path)))); claim.delegate_type = NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; claim.file_delegate_prev = null; claim.oc_delegate_stateid = null; claim.delegate_type = 0; claim.delegate_cur_info = null; op.opopen.claim = claim; return op; }
public static nfs_argop4 generateRequest(bool rca_one_fs2) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_RECLAIM_COMPLETE; op.opreclaim_complete = new RECLAIM_COMPLETE4args(); op.opreclaim_complete.rca_one_fs = rca_one_fs2; return(op); }
public static nfs_argop4 standard(clientid4 client) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_DESTROY_CLIENTID; op.opdestroy_clientid = new DESTROY_CLIENTID4args(); op.opdestroy_clientid.dca_clientid = client; return op; }
public static nfs_argop4 standard(sessionid4 sessionid) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_DESTROY_SESSION; op.opdestroy_session = new DESTROY_SESSION4args(); op.opdestroy_session.dsa_sessionid = sessionid; return op; }
public static nfs_argop4 standard(clientid4 client) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_DESTROY_CLIENTID; op.opdestroy_clientid = new DESTROY_CLIENTID4args(); op.opdestroy_clientid.dca_clientid = client; return(op); }
public static nfs_argop4 generateRequest(nfs_fh4 fh) { nfs_argop4 op = new nfs_argop4(); op.opputfh = new PUTFH4args(); op.opputfh.object1 = fh; op.argop = nfs_opnum4.OP_PUTFH; return(op); }
public static nfs_argop4 generateRequest(uint32_t acessargs) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_ACCESS; op.opaccess = new ACCESS4args(); op.opaccess.access = acessargs; return(op); }
public static nfs_argop4 generateRequest() { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_GETFH; return op; }
public static nfs_argop4 standard(sessionid4 sessionid) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_DESTROY_SESSION; op.opdestroy_session = new DESTROY_SESSION4args(); op.opdestroy_session.dsa_sessionid = sessionid; return(op); }
public static nfs_argop4 generateRequest( nfs_fh4 fh) { nfs_argop4 op = new nfs_argop4(); op.opputfh = new PUTFH4args(); op.opputfh.object1 = fh; op.argop = nfs_opnum4.OP_PUTFH; return op; }
public static nfs_argop4 generateRequest(uint32_t acessargs) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_ACCESS; op.opaccess = new ACCESS4args(); op.opaccess.access = acessargs; return op; }
public static nfs_argop4 generateRequest(String path) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_LOOKUP; op.oplookup = new LOOKUP4args(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byte[] bytes = encoding.GetBytes(path); op.oplookup.objname = new component4(new utf8str_cs(new utf8string(bytes))); return op; }
public static nfs_argop4 generateRequest(bool rca_one_fs2) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_RECLAIM_COMPLETE; op.opreclaim_complete = new RECLAIM_COMPLETE4args(); op.opreclaim_complete.rca_one_fs = rca_one_fs2; return op; }
public static nfs_argop4 generateRequest(String path) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_LOOKUP; op.oplookup = new LOOKUP4args(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); byte[] bytes = encoding.GetBytes(path); op.oplookup.objname = new component4(new utf8str_cs(new utf8string(bytes))); return(op); }
public static nfs_argop4 generateRequest(stateid4 stateid) { CLOSE4args args = new CLOSE4args(); args.seqid = new seqid4(new uint32_t(0)); args.open_stateid = stateid; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_CLOSE; op.opclose = args; return(op); }
public static nfs_argop4 normalREAD(String path, int sequenceId, clientid4 clientid, int access) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_OPEN; op.opopen = new OPEN4args(); op.opopen.seqid = new seqid4(new uint32_t(sequenceId)); // if ((access & nfs4_prot.OPEN4_SHARE_ACCESS_WANT_DELEG_MASK) == 0){ // access |= nfs4_prot.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; // } // op.opopen.share_access = new uint32_t(access); op.opopen.share_access = new uint32_t(NFSv4Protocol.OPEN4_SHARE_ACCESS_READ); op.opopen.share_deny = new uint32_t(NFSv4Protocol.OPEN4_SHARE_DENY_NONE); state_owner4 owner = new state_owner4(); owner.clientid = clientid; owner.owner = encoding.GetBytes("nfsclient"); op.opopen.owner = new open_owner4(owner); openflag4 flag = new openflag4(); flag.opentype = opentype4.OPEN4_NOCREATE; createhow4 how = new createhow4(); how.mode = createmode4.UNCHECKED4; flag.how = how; op.opopen.openhow = flag; open_claim4 claim = new open_claim4(); claim.claim = open_claim_type4.CLAIM_NULL; claim.file = new component4(new utf8str_cs(new utf8string(encoding.GetBytes(path)))); claim.delegate_type = NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; claim.file_delegate_prev = null; claim.oc_delegate_stateid = null; claim.delegate_type = 0; claim.delegate_cur_info = null; op.opopen.claim = claim; return(op); }
public static nfs_argop4 generateRequest(long cookie, verifier4 verifier) { nfs_argop4 op = new nfs_argop4(); op.opreaddir = new READDIR4args(); op.opreaddir.cookie = new nfs_cookie4(new uint64_t(cookie)); op.opreaddir.dircount = new count4(new uint32_t(10000)); op.opreaddir.maxcount = new count4(new uint32_t(10000)); op.opreaddir.attr_request = new bitmap4(new uint32_t[] { new uint32_t(0), new uint32_t(0) }); op.opreaddir.cookieverf = verifier; op.argop = nfs_opnum4.OP_READDIR; return(op); }
public static nfs_argop4 generateRequest(String path) { REMOVE4args args = new REMOVE4args(); args.target = new component4(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); args.target.value = new utf8str_cs(new utf8string(encoding.GetBytes(path))); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_REMOVE; op.opremove = args; return(op); }
public static nfs_argop4 generateRequest(int count, long offset, stateid4 stateid) { READ4args args = new READ4args(); args.count = new count4(new uint32_t(count)); args.offset = new offset4(new uint64_t(offset)); args.stateid = stateid; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_READ; op.opread = args; return op; }
public static nfs_argop4 generateRequest(int count, long offset, stateid4 stateid) { READ4args args = new READ4args(); args.count = new count4(new uint32_t(count)); args.offset = new offset4(new uint64_t(offset)); args.stateid = stateid; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_READ; op.opread = args; return(op); }
public static nfs_argop4 generateRequest(String name, fattr4 attribs) { nfs_argop4 op = new nfs_argop4(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); op.argop = nfs_opnum4.OP_CREATE; op.opcreate = new CREATE4args(); op.opcreate.objname = new component4(); op.opcreate.objname.value = new utf8str_cs(new utf8string(encoding.GetBytes(name))); op.opcreate.createattrs = attribs; op.opcreate.objtype = new createtype4(); //we will create only directories op.opcreate.objtype.type = nfs_ftype4.NF4DIR; return(op); }
public static nfs_argop4 generateRequest(String name,fattr4 attribs) { nfs_argop4 op = new nfs_argop4(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); op.argop = nfs_opnum4.OP_CREATE; op.opcreate = new CREATE4args(); op.opcreate.objname = new component4(); op.opcreate.objname.value = new utf8str_cs(new utf8string(encoding.GetBytes(name))); op.opcreate.createattrs = attribs; op.opcreate.objtype = new createtype4(); //we will create only directories op.opcreate.objtype.type = nfs_ftype4.NF4DIR; return op; }
public static nfs_argop4 generateRequest(long cookie, verifier4 verifier) { nfs_argop4 op = new nfs_argop4(); op.opreaddir = new READDIR4args(); op.opreaddir.cookie = new nfs_cookie4(new uint64_t(cookie)); op.opreaddir.dircount = new count4(new uint32_t(10000)); op.opreaddir.maxcount = new count4(new uint32_t(10000)); op.opreaddir.attr_request = new bitmap4(new uint32_t[] { new uint32_t(0), new uint32_t(0) }); op.opreaddir.cookieverf = verifier; op.argop = nfs_opnum4.OP_READDIR; return op; }
public static nfs_argop4 generateRequest(String path) { REMOVE4args args = new REMOVE4args(); args.target = new component4(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); args.target.value = new utf8str_cs(new utf8string(encoding.GetBytes(path))); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_REMOVE; op.opremove = args; return op; }
public static nfs_argop4 normal(string nii_domain, string nii_name, string co_ownerid, int flags, int how) { //for transormation System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_EXCHANGE_ID; op.opexchange_id = new EXCHANGE_ID4args(); op.opexchange_id.eia_client_impl_id = new nfs_impl_id4[1]; nfs_impl_id4 n4 = new nfs_impl_id4(); n4.nii_domain = new utf8str_cis(new utf8string(encoding.GetBytes(nii_domain))); n4.nii_name = new utf8str_cs(new utf8string(encoding.GetBytes(nii_name))); op.opexchange_id.eia_client_impl_id[0] = n4; nfstime4 releaseDate = new nfstime4(); releaseDate.nseconds = new uint32_t(0); releaseDate.seconds = new int64_t((long)(DateTime.UtcNow - new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds); //seconds here op.opexchange_id.eia_client_impl_id[0].nii_date = releaseDate; op.opexchange_id.eia_clientowner = new client_owner4(); op.opexchange_id.eia_clientowner.co_ownerid = encoding.GetBytes(co_ownerid); op.opexchange_id.eia_clientowner.co_verifier = new verifier4(); op.opexchange_id.eia_clientowner.co_verifier.value = releaseDate.seconds.value; //new byte[NFSv4Protocol.NFS4_VERIFIER_SIZE]; //byte[] locVerifier = encoding.GetBytes(releaseDate.seconds.value.ToString("X")); //int len = locVerifier.Length > NFSv4Protocol.NFS4_VERIFIER_SIZE ? NFSv4Protocol.NFS4_VERIFIER_SIZE : locVerifier.Length; // Array.Copy(locVerifier, 0, op.opexchange_id.eia_clientowner.co_verifier.value, 0, len); op.opexchange_id.eia_flags = new uint32_t(flags); op.opexchange_id.eia_state_protect = new state_protect4_a(); op.opexchange_id.eia_state_protect.spa_how = how; return(op); }
public static nfs_argop4 generateRequest(stateid4 stateid) { CLOSE4args args = new CLOSE4args(); args.seqid = new seqid4(new uint32_t(0)); args.open_stateid = stateid; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_CLOSE; op.opclose = args; return op; }
public static nfs_argop4 normalREAD(String path, int sequenceId, clientid4 clientid, int access) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_OPEN; op.opopen = new OPEN4args(); op.opopen.seqid = new seqid4(new uint32_t(sequenceId)); // if ((access & nfs4_prot.OPEN4_SHARE_ACCESS_WANT_DELEG_MASK) == 0){ // access |= nfs4_prot.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; // } // op.opopen.share_access = new uint32_t(access); op.opopen.share_access = new uint32_t(NFSv4Protocol.OPEN4_SHARE_ACCESS_READ); op.opopen.share_deny = new uint32_t(NFSv4Protocol.OPEN4_SHARE_DENY_NONE); state_owner4 owner = new state_owner4(); owner.clientid = clientid; owner.owner = encoding.GetBytes("nfsclient"); op.opopen.owner = new open_owner4(owner); openflag4 flag = new openflag4(); flag.opentype = opentype4.OPEN4_NOCREATE; createhow4 how = new createhow4(); how.mode = createmode4.UNCHECKED4; flag.how = how; op.opopen.openhow = flag; open_claim4 claim = new open_claim4(); claim.claim = open_claim_type4.CLAIM_NULL; claim.file = new component4(new utf8str_cs(new utf8string(encoding.GetBytes(path)))); claim.delegate_type = NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; claim.file_delegate_prev = null; claim.oc_delegate_stateid = null; claim.delegate_type = 0; claim.delegate_cur_info = null; op.opopen.claim = claim; return op; }
public static nfs_argop4 normal(string nii_domain, string nii_name, string co_ownerid, int flags, int how) { //for transormation System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_EXCHANGE_ID; op.opexchange_id = new EXCHANGE_ID4args(); op.opexchange_id.eia_client_impl_id = new nfs_impl_id4[1]; nfs_impl_id4 n4 = new nfs_impl_id4(); n4.nii_domain = new utf8str_cis(new utf8string(encoding.GetBytes(nii_domain))); n4.nii_name = new utf8str_cs(new utf8string(encoding.GetBytes(nii_name))); op.opexchange_id.eia_client_impl_id[0] = n4; nfstime4 releaseDate = new nfstime4(); releaseDate.nseconds = new uint32_t(0); releaseDate.seconds = new int64_t((long)(DateTime.UtcNow - new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds); //seconds here op.opexchange_id.eia_client_impl_id[0].nii_date = releaseDate; op.opexchange_id.eia_clientowner = new client_owner4(); op.opexchange_id.eia_clientowner.co_ownerid = encoding.GetBytes(co_ownerid); op.opexchange_id.eia_clientowner.co_verifier = new verifier4(); op.opexchange_id.eia_clientowner.co_verifier.value = releaseDate.seconds.value; //new byte[NFSv4Protocol.NFS4_VERIFIER_SIZE]; //byte[] locVerifier = encoding.GetBytes(releaseDate.seconds.value.ToString("X")); //int len = locVerifier.Length > NFSv4Protocol.NFS4_VERIFIER_SIZE ? NFSv4Protocol.NFS4_VERIFIER_SIZE : locVerifier.Length; // Array.Copy(locVerifier, 0, op.opexchange_id.eia_clientowner.co_verifier.value, 0, len); op.opexchange_id.eia_flags = new uint32_t(flags); op.opexchange_id.eia_state_protect = new state_protect4_a(); op.opexchange_id.eia_state_protect.spa_how = how; return op; }
public static nfs_argop4 generateRequest(List <int> attrs) { nfs_argop4 op = new nfs_argop4(); GETATTR4args args = new GETATTR4args(); args.attr_request = new bitmap4(); args.attr_request.value = new uint32_t[2]; args.attr_request.value[0] = new uint32_t(); args.attr_request.value[1] = new uint32_t(); foreach (int mask in attrs) { int bit = mask - (32 * (mask / 32)); args.attr_request.value[mask / 32].value |= 1 << bit; } op.argop = nfs_opnum4.OP_GETATTR; op.opgetattr = args; return(op); }
public static nfs_argop4 generateRequest(long offset, byte[] data, stateid4 stateid) { WRITE4args args = new WRITE4args(); //enable this for sycronized stable writes //args.stable = stable_how4.FILE_SYNC4; args.stable = stable_how4.UNSTABLE4; args.offset = new offset4(new uint64_t(offset)); args.stateid = stateid; args.data = data; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_WRITE; op.opwrite = args; return op; }
public static nfs_argop4 generateRequest(List<int> attrs) { nfs_argop4 op = new nfs_argop4(); GETATTR4args args = new GETATTR4args(); args.attr_request = new bitmap4(); args.attr_request.value = new uint32_t[2]; args.attr_request.value[0] = new uint32_t(); args.attr_request.value[1] = new uint32_t(); foreach( int mask in attrs) { int bit = mask -(32*(mask/32)); args.attr_request.value[mask/32].value |= 1 << bit; } op.argop = nfs_opnum4.OP_GETATTR; op.opgetattr = args; return op; }
public static nfs_argop4 generateRequest(long offset, byte[] data, stateid4 stateid) { WRITE4args args = new WRITE4args(); //enable this for sycronized stable writes //args.stable = stable_how4.FILE_SYNC4; args.stable = stable_how4.UNSTABLE4; args.offset = new offset4(new uint64_t(offset)); args.stateid = stateid; args.data = data; nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_WRITE; op.opwrite = args; return(op); }
public static nfs_argop4 normalCREATE(String path, int sequenceId, clientid4 clientid, int access) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_OPEN; op.opopen = new OPEN4args(); op.opopen.seqid = new seqid4(new uint32_t(sequenceId)); state_owner4 owner = new state_owner4(); owner.clientid = clientid; owner.owner = encoding.GetBytes("nfsclient"); op.opopen.owner = new open_owner4(owner); //if ((access & NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_DELEG_MASK) == 0) // { // access |= NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; // } op.opopen.share_access = new uint32_t(access); op.opopen.share_deny = new uint32_t(NFSv4Protocol.OPEN4_SHARE_DENY_NONE); openflag4 flag = new openflag4(); flag.opentype = opentype4.OPEN4_CREATE; // createhow4(mode, attrs, verifier) createhow4 how = new createhow4(); how.mode = createmode4.GUARDED4; //how.mode = createmode4.EXCLUSIVE4_1; fattr4 attr = new fattr4(); attr.attrmask = openFattrBitmap(); attr.attr_vals = new attrlist4(); attr.attr_vals.value = openAttrs(7, 7, 7, 0); how.createattrs = attr; how.createverf = new verifier4(0); //it is long //how.mode = createmode4.GUARDED4; flag.how = how; op.opopen.openhow = flag; open_claim4 claim = new open_claim4(); claim.claim = open_claim_type4.CLAIM_NULL; claim.file = new component4(new utf8str_cs(new utf8string(encoding .GetBytes(path)))); claim.delegate_type = NFSv4Protocol.OPEN4_SHARE_ACCESS_WANT_NO_DELEG; claim.file_delegate_prev = null; claim.oc_delegate_stateid = null; claim.delegate_type = 0; claim.delegate_cur_info = null; op.opopen.claim = claim; return(op); }
public static nfs_argop4 standard(clientid4 eir_clientid, sequenceid4 eir_sequenceid) { nfs_argop4 op = new nfs_argop4(); op.argop = nfs_opnum4.OP_CREATE_SESSION; op.opcreate_session = new CREATE_SESSION4args(); channel_attrs4 chan_attrs = new channel_attrs4(); chan_attrs.ca_headerpadsize = new count4(new uint32_t(0)); chan_attrs.ca_maxoperations = new count4(new uint32_t(8)); chan_attrs.ca_maxrequests = new count4(new uint32_t(128)); chan_attrs.ca_maxrequestsize = new count4(new uint32_t(1049620)); chan_attrs.ca_maxresponsesize = new count4(new uint32_t(1049480)); chan_attrs.ca_maxresponsesize_cached = new count4(new uint32_t(2868)); chan_attrs.ca_rdma_ird = new uint32_t[0]; op.opcreate_session.csa_clientid = eir_clientid; op.opcreate_session.csa_sequence = eir_sequenceid; //connection back channel op.opcreate_session.csa_flags = new uint32_t(0); //3 if u want to use the back channel op.opcreate_session.csa_fore_chan_attrs = chan_attrs; //diferent chan attrs for fore channel channel_attrs4 back_chan_attrs = new channel_attrs4(); back_chan_attrs.ca_headerpadsize = new count4(new uint32_t(0)); back_chan_attrs.ca_maxoperations = new count4(new uint32_t(2)); back_chan_attrs.ca_maxrequests = new count4(new uint32_t(1)); back_chan_attrs.ca_maxrequestsize = new count4(new uint32_t(4096)); back_chan_attrs.ca_maxresponsesize = new count4(new uint32_t(4096)); back_chan_attrs.ca_maxresponsesize_cached = new count4(new uint32_t(0)); back_chan_attrs.ca_rdma_ird = new uint32_t[0]; op.opcreate_session.csa_back_chan_attrs = back_chan_attrs; op.opcreate_session.csa_cb_program = new uint32_t(0x40000000); callback_sec_parms4[] cb = new callback_sec_parms4[1]; callback_sec_parms4 callb = new callback_sec_parms4(); //new auth_sys params callb.cb_secflavor = auth_flavor.AUTH_SYS; callb.cbsp_sys_cred = new authsys_parms(); Random r = new Random(); callb.cbsp_sys_cred.stamp = r.Next(); //just random number callb.cbsp_sys_cred.gid = 0; //maybe root ? callb.cbsp_sys_cred.uid = 0; //maybe root ? callb.cbsp_sys_cred.machinename = System.Environment.MachineName; callb.cbsp_sys_cred.gids = new int[0]; //callb.cb_secflavor = auth_flavor.AUTH_NONE; cb[0] = callb; // op.opcreate_session.csa_sec_parms = new callback_sec_parms4[1]; op.opcreate_session.csa_sec_parms = cb; return op; }