Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        public static nfs_argop4 generateRequest()
        {
            nfs_argop4 op = new nfs_argop4();

            op.argop = nfs_opnum4.OP_GETFH;

            return(op);
        }
Пример #5
0
        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;
        }
Пример #6
0
        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);
        }
Пример #7
0
        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;
        }
Пример #8
0
        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;
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        public static nfs_argop4 generateRequest()
        {


            nfs_argop4 op = new nfs_argop4();

            op.argop = nfs_opnum4.OP_GETFH;

            return op;

        }
Пример #13
0
        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);
        }
Пример #14
0
    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;

    }
Пример #15
0
    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;

    }
Пример #16
0
        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;
        }
Пример #17
0
            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;

        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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);
        }
Пример #23
0
        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;

        }
Пример #24
0
        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);
        }
Пример #25
0
        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);
        }
Пример #26
0
                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;
                }
Пример #27
0
        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;

        }
Пример #28
0
        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;

        }
Пример #29
0
        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);
        }
Пример #30
0
        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;

        }
Пример #31
0
        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;
        }
Пример #32
0
        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;
        }
Пример #33
0
        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);
        }
Пример #34
0
        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;
        }
Пример #35
0
            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;

    }
Пример #36
0
        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);
        }
Пример #37
0
        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);
        }
Пример #38
0
        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;
        }