Example #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;
        }
Example #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);
        }
Example #3
0
 public void xdrDecode(XdrDecodingStream xdr) {
     csa_sequenceid = new sequenceid4(xdr);
     csa_slotid = new slotid4(xdr);
     csa_highest_slotid = new slotid4(xdr);
     csa_cachethis = xdr.xdrDecodeBoolean();
     { int _size = xdr.xdrDecodeInt(); csa_referring_call_lists = new referring_call_list4[_size]; for ( int _idx = 0; _idx < _size; ++_idx ) { csa_referring_call_lists[_idx] = new referring_call_list4(xdr); } }
 }
Example #4
0
 public void xdrDecode(XdrDecodingStream xdr)
 {
     csr_sequenceid = new sequenceid4(xdr);
     csr_slotid = new slotid4(xdr);
     csr_highest_slotid = new slotid4(xdr);
     csr_target_highest_slotid = new slotid4(xdr);
 }
Example #5
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);
        }
Example #6
0
 public void xdrDecode(XdrDecodingStream xdr)
 {
     csa_sequenceid = new sequenceid4(xdr);
     csa_slotid = new slotid4(xdr);
     csa_highest_slotid = new slotid4(xdr);
     csa_cachethis = xdr.xdrDecodeBoolean();
     { int _size = xdr.xdrDecodeInt(); csa_referring_call_lists = new referring_call_list4[_size]; for (int _idx = 0; _idx < _size; ++_idx) { csa_referring_call_lists[_idx] = new referring_call_list4(xdr); } }
 }
Example #7
0
        private void exchange_ids()
        {
            List <nfs_argop4> ops = new List <nfs_argop4>();

            String domain = "localhost";
            String name   = "NFS Client ";

            //String guid = System.Environment.MachineName + "@" + domain;
            String guid = System.Guid.NewGuid().ToString();

            ops.Add(ExchengeIDStub.normal(domain, name, guid, NFSv4Protocol.EXCHGID4_FLAG_SUPP_MOVED_REFER + NFSv4Protocol.EXCHGID4_FLAG_USE_NON_PNFS, state_protect_how4.SP4_NONE));

            COMPOUND4res compound4res = sendCompound(ops, "");

            if (compound4res.status == nfsstat4.NFS4_OK)
            {
                /*if (compound4res.resarray[0].opexchange_id.eir_resok4.eir_server_impl_id.Length > 0)
                 * {
                 *  string serverId = System.Text.Encoding.UTF8.GetString(compound4res.resarray[0].opexchange_id.eir_resok4.eir_server_impl_id[0].nii_name.value.value);
                 * }
                 * else
                 * {
                 *  if (compound4res.resarray[0].opexchange_id.eir_resok4.eir_server_owner.so_major_id.Length > 0)
                 *  {
                 *      string serverId = System.Text.Encoding.UTF8.GetString(compound4res.resarray[0].opexchange_id.eir_resok4.eir_server_owner.so_major_id);
                 *      //throw new NFSConnectionException("Server name: ="+serverId);
                 *  }
                 * }*/

                _clientIdByServer = compound4res.resarray[0].opexchange_id.eir_resok4.eir_clientid;
                _sequenceID       = compound4res.resarray[0].opexchange_id.eir_resok4.eir_sequenceid;
            }
            else
            {
                throw new NFSConnectionException(nfsstat4.getErrorString(compound4res.status));
            }
        }
Example #8
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;
        }
Example #9
0
 public void xdrDecode(XdrDecodingStream xdr) {
     csr_sequenceid = new sequenceid4(xdr);
     csr_slotid = new slotid4(xdr);
     csr_highest_slotid = new slotid4(xdr);
     csr_target_highest_slotid = new slotid4(xdr);
 }