Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 7863

Network File System (NFS) Version 4 Minor Version 2 External Data Representation Standard (XDR) Description

Pages: 87
Proposed Standard
Part 3 of 4 – Pages 39 to 59
First   Prev   Next

Top   ToC   RFC7863 - Page 39   prevText
   /// union createhow4 switch (createmode4 mode) {
   ///  case UNCHECKED4:
   ///  case GUARDED4:
   ///          fattr4         createattrs;
   ///  case EXCLUSIVE4:
   ///          verifier4      createverf;
   ///  case EXCLUSIVE4_1:
   ///          creatverfattr  ch_createboth;
   /// };
   ///
   /// enum opentype4 {
   ///         OPEN4_NOCREATE  = 0,
   ///         OPEN4_CREATE    = 1
   /// };
   ///
   /// union openflag4 switch (opentype4 opentype) {
   ///  case OPEN4_CREATE:
   ///          createhow4     how;
   ///  default:
   ///          void;
   /// };
   ///
   /// /* Next definitions used for OPEN delegation */
   /// enum limit_by4 {
   ///         NFS_LIMIT_SIZE          = 1,
   ///         NFS_LIMIT_BLOCKS        = 2
   ///         /* Others as needed */
   /// };
   ///
   /// struct nfs_modified_limit4 {
   ///         uint32_t        num_blocks;
   ///         uint32_t        bytes_per_block;
   /// };
   ///
   /// union nfs_space_limit4 switch (limit_by4 limitby) {
   ///  /* Limit specified as file size */
   ///  case NFS_LIMIT_SIZE:
   ///          uint64_t               filesize;
   ///  /* Limit specified by number of blocks */
   ///  case NFS_LIMIT_BLOCKS:
   ///          nfs_modified_limit4    mod_blocks;
   /// };
   ///
Top   ToC   RFC7863 - Page 40
   /// /*
   ///  * Share Access and Deny constants for open argument
   ///  */
   /// const OPEN4_SHARE_ACCESS_READ   = 0x00000001;
   /// const OPEN4_SHARE_ACCESS_WRITE  = 0x00000002;
   /// const OPEN4_SHARE_ACCESS_BOTH   = 0x00000003;
   ///
   /// const OPEN4_SHARE_DENY_NONE     = 0x00000000;
   /// const OPEN4_SHARE_DENY_READ     = 0x00000001;
   /// const OPEN4_SHARE_DENY_WRITE    = 0x00000002;
   /// const OPEN4_SHARE_DENY_BOTH     = 0x00000003;
   ///
   ///
   /// /* New flags for share_access field of OPEN4args */
   /// const OPEN4_SHARE_ACCESS_WANT_DELEG_MASK        = 0xFF00;
   /// const OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE     = 0x0000;
   /// const OPEN4_SHARE_ACCESS_WANT_READ_DELEG        = 0x0100;
   /// const OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG       = 0x0200;
   /// const OPEN4_SHARE_ACCESS_WANT_ANY_DELEG         = 0x0300;
   /// const OPEN4_SHARE_ACCESS_WANT_NO_DELEG          = 0x0400;
   /// const OPEN4_SHARE_ACCESS_WANT_CANCEL            = 0x0500;
   ///
   /// const
   ///  OPEN4_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL
   ///  = 0x10000;
   ///
   /// const
   ///  OPEN4_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED
   ///  = 0x20000;
   ///
   /// enum open_delegation_type4 {
   ///         OPEN_DELEGATE_NONE      = 0,
   ///         OPEN_DELEGATE_READ      = 1,
   ///         OPEN_DELEGATE_WRITE     = 2,
   ///         OPEN_DELEGATE_NONE_EXT  = 3 /* New to NFSv4.1 */
   /// };
   ///
Top   ToC   RFC7863 - Page 41
   /// enum open_claim_type4 {
   ///         /*
   ///          * Not a reclaim
   ///          */
   ///         CLAIM_NULL              = 0,
   ///
   ///         CLAIM_PREVIOUS          = 1,
   ///         CLAIM_DELEGATE_CUR      = 2,
   ///         CLAIM_DELEGATE_PREV     = 3,
   ///
   ///         /*
   ///          * Not a reclaim
   ///          *
   ///          * Like CLAIM_NULL, but object identified
   ///          * by the current filehandle
   ///          */
   ///         CLAIM_FH                = 4, /* New to NFSv4.1 */
   ///
   ///         /*
   ///          * Like CLAIM_DELEGATE_CUR, but object identified
   ///          * by current filehandle
   ///          */
   ///         CLAIM_DELEG_CUR_FH      = 5, /* New to NFSv4.1 */
   ///
   ///         /*
   ///          * Like CLAIM_DELEGATE_PREV, but object identified
   ///          * by current filehandle
   ///          */
   ///         CLAIM_DELEG_PREV_FH     = 6 /* New to NFSv4.1 */
   /// };
   ///
   /// struct open_claim_delegate_cur4 {
   ///         stateid4        delegate_stateid;
   ///         component4      file;
   /// };
   ///
   /// union open_claim4 switch (open_claim_type4 claim) {
   ///  /*
   ///   * No special rights to file.
   ///   * Ordinary OPEN of the specified file.
   ///   */
   ///  case CLAIM_NULL:
   ///         /* CURRENT_FH: directory */
   ///         component4      file;
Top   ToC   RFC7863 - Page 42
   ///  /*
   ///   * Right to the file established by an
   ///   * open previous to server reboot.  File
   ///   * identified by filehandle obtained at
   ///   * that time rather than by name.
   ///   */
   ///  case CLAIM_PREVIOUS:
   ///         /* CURRENT_FH: file being reclaimed */
   ///         open_delegation_type4   delegate_type;
   ///
   ///  /*
   ///   * Right to file based on a delegation
   ///   * granted by the server.  File is
   ///   * specified by name.
   ///   */
   ///  case CLAIM_DELEGATE_CUR:
   ///         /* CURRENT_FH: directory */
   ///         open_claim_delegate_cur4        delegate_cur_info;
   ///
   ///  /*
   ///   * Right to file based on a delegation
   ///   * granted to a previous boot instance
   ///   * of the client.  File is specified by name.
   ///   */
   ///  case CLAIM_DELEGATE_PREV:
   ///          /* CURRENT_FH: directory */
   ///         component4      file_delegate_prev;
   ///
   ///  /*
   ///   * Like CLAIM_NULL.  No special rights
   ///   * to file.  Ordinary OPEN of the
   ///   * specified file by current filehandle.
   ///   */
   ///  case CLAIM_FH: /* New to NFSv4.1 */
   ///         /* CURRENT_FH: regular file to open */
   ///         void;
   ///
   ///  /*
   ///   * Like CLAIM_DELEGATE_PREV.  Right to file based on a
   ///   * delegation granted to a previous boot
   ///   * instance of the client.  File is identified
   ///   * by filehandle.
   ///   */
   ///  case CLAIM_DELEG_PREV_FH: /* New to NFSv4.1 */
   ///         /* CURRENT_FH: file being opened */
   ///         void;
   ///
Top   ToC   RFC7863 - Page 43
   ///  /*
   ///   * Like CLAIM_DELEGATE_CUR.  Right to file based on
   ///   * a delegation granted by the server.
   ///   * File is identified by filehandle.
   ///   */
   ///  case CLAIM_DELEG_CUR_FH: /* New to NFSv4.1 */
   ///          /* CURRENT_FH: file being opened */
   ///          stateid4       oc_delegate_stateid;
   ///
   /// };
   ///
   /// /*
   ///  * OPEN: Open a file, potentially receiving an open delegation.
   ///  */
   /// struct OPEN4args {
   ///         seqid4          seqid;
   ///         uint32_t        share_access;
   ///         uint32_t        share_deny;
   ///         open_owner4     owner;
   ///         openflag4       openhow;
   ///         open_claim4     claim;
   /// };
   ///
   /// struct open_read_delegation4 {
   ///  stateid4 stateid;    /* Stateid for delegation */
   ///  bool     recall;     /* Pre-recalled flag for
   ///                          delegations obtained
   ///                          by reclaim (CLAIM_PREVIOUS) */
   ///
   ///  nfsace4 permissions; /* Defines users who don't
   ///                          need an ACCESS call to
   ///                          open for read */
   /// };
   ///
   /// struct open_write_delegation4 {
   ///  stateid4 stateid;      /* Stateid for delegation */
   ///  bool     recall;       /* Pre-recalled flag for
   ///                            delegations obtained
   ///                            by reclaim
   ///                            (CLAIM_PREVIOUS) */
   ///
   ///  nfs_space_limit4
   ///            space_limit; /* Defines condition that
   ///                            the client must check to
   ///                            determine whether the
   ///                            file needs to be flushed
   ///                            to the server on close */
   ///
Top   ToC   RFC7863 - Page 44
   ///  nfsace4   permissions; /* Defines users who don't
   ///                            need an ACCESS call as
   ///                            part of a delegated
   ///                            open */
   /// };
   ///
   ///
   /// enum why_no_delegation4 { /* New to NFSv4.1 */
   ///         WND4_NOT_WANTED                 = 0,
   ///         WND4_CONTENTION                 = 1,
   ///         WND4_RESOURCE                   = 2,
   ///         WND4_NOT_SUPP_FTYPE             = 3,
   ///         WND4_WRITE_DELEG_NOT_SUPP_FTYPE = 4,
   ///         WND4_NOT_SUPP_UPGRADE           = 5,
   ///         WND4_NOT_SUPP_DOWNGRADE         = 6,
   ///         WND4_CANCELLED                  = 7,
   ///         WND4_IS_DIR                     = 8
   /// };
   ///
   /// union open_none_delegation4 /* New to NFSv4.1 */
   ///  switch (why_no_delegation4 ond_why) {
   ///          case WND4_CONTENTION:
   ///                  bool ond_server_will_push_deleg;
   ///          case WND4_RESOURCE:
   ///                  bool ond_server_will_signal_avail;
   ///          default:
   ///                  void;
   /// };
   ///
   /// union open_delegation4
   ///  switch (open_delegation_type4 delegation_type) {
   ///          case OPEN_DELEGATE_NONE:
   ///                  void;
   ///          case OPEN_DELEGATE_READ:
   ///                  open_read_delegation4 read;
   ///          case OPEN_DELEGATE_WRITE:
   ///                  open_write_delegation4 write;
   ///          case OPEN_DELEGATE_NONE_EXT: /* New to NFSv4.1 */
   ///                  open_none_delegation4 od_whynone;
   /// };
   ///
   /// /*
   ///  * Result flags
   ///  */
   ///
Top   ToC   RFC7863 - Page 45
   /// /* Client must confirm open. */
   /// const OPEN4_RESULT_CONFIRM      = 0x00000002;
   /// /* Type of file-locking behavior at the server */
   /// const OPEN4_RESULT_LOCKTYPE_POSIX = 0x00000004;
   /// /* Server will preserve file if removed while open. */
   /// const OPEN4_RESULT_PRESERVE_UNLINKED = 0x00000008;
   ///
   /// /*
   ///  * Server may use CB_NOTIFY_LOCK on locks
   ///  * derived from this open.
   ///  */
   /// const OPEN4_RESULT_MAY_NOTIFY_LOCK = 0x00000020;
   ///
   /// struct OPEN4resok {
   ///  stateid4         stateid;      /* Stateid for open */
   ///  change_info4     cinfo;        /* Directory change info */
   ///  uint32_t         rflags;       /* Result flags */
   ///  bitmap4          attrset;      /* Attribute set for create */
   ///  open_delegation4 delegation;   /* Info on any open
   ///                                    delegation */
   /// };
   ///
   /// union OPEN4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          /* New CURRENT_FH: opened file */
   ///          OPEN4resok      resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct OPENATTR4args {
   ///         /* CURRENT_FH: object */
   ///         bool    createdir;
   /// };
   ///
   /// struct OPENATTR4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New CURRENT_FH: named attribute
   ///          *                   directory
   ///          */
   ///         nfsstat4        status;
   /// };
   ///
Top   ToC   RFC7863 - Page 46
   /// /* Obsolete in NFSv4.1 */
   /// struct OPEN_CONFIRM4args {
   ///         /* CURRENT_FH: opened file */
   ///         stateid4        open_stateid;
   ///         seqid4          seqid;
   /// };
   ///
   /// struct OPEN_CONFIRM4resok {
   ///         stateid4        open_stateid;
   /// };
   ///
   /// union OPEN_CONFIRM4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          OPEN_CONFIRM4resok     resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct OPEN_DOWNGRADE4args {
   ///         /* CURRENT_FH: opened file */
   ///         stateid4        open_stateid;
   ///         seqid4          seqid;
   ///         uint32_t        share_access;
   ///         uint32_t        share_deny;
   /// };
   ///
   /// struct OPEN_DOWNGRADE4resok {
   ///         stateid4        open_stateid;
   /// };
   ///
   /// union OPEN_DOWNGRADE4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          OPEN_DOWNGRADE4resok    resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct PUTFH4args {
   ///         nfs_fh4         object;
   /// };
   ///
   /// struct PUTFH4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New CURRENT_FH: argument to PUTFH
   ///          */
   ///         nfsstat4        status;
   /// };
Top   ToC   RFC7863 - Page 47
   ///
   /// struct PUTPUBFH4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New CURRENT_FH: public fh
   ///          */
   ///         nfsstat4        status;
   /// };
   ///
   /// struct PUTROOTFH4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New CURRENT_FH: root fh
   ///          */
   ///         nfsstat4        status;
   /// };
   ///
   /// struct READ4args {
   ///         /* CURRENT_FH: file */
   ///         stateid4        stateid;
   ///         offset4         offset;
   ///         count4          count;
   /// };
   ///
   /// struct READ4resok {
   ///         bool            eof;
   ///         opaque          data<>;
   /// };
   ///
   /// union READ4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          READ4resok     resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct READDIR4args {
   ///         /* CURRENT_FH: directory */
   ///         nfs_cookie4     cookie;
   ///         verifier4       cookieverf;
   ///         count4          dircount;
   ///         count4          maxcount;
   ///         bitmap4         attr_request;
   /// };
   ///
Top   ToC   RFC7863 - Page 48
   /// struct entry4 {
   ///         nfs_cookie4     cookie;
   ///         component4      name;
   ///         fattr4          attrs;
   ///         entry4          *nextentry;
   /// };
   ///
   /// struct dirlist4 {
   ///         entry4          *entries;
   ///         bool            eof;
   /// };
   ///
   /// struct READDIR4resok {
   ///         verifier4       cookieverf;
   ///         dirlist4        reply;
   /// };
   ///
   ///
   /// union READDIR4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          READDIR4resok  resok4;
   ///  default:
   ///          void;
   /// };
   ///
   ///
   /// struct READLINK4resok {
   ///         linktext4       link;
   /// };
   ///
   /// union READLINK4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          READLINK4resok resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct REMOVE4args {
   ///         /* CURRENT_FH: directory */
   ///         component4      target;
   /// };
   ///
   /// struct REMOVE4resok {
   ///         change_info4    cinfo;
   /// };
   ///
Top   ToC   RFC7863 - Page 49
   /// union REMOVE4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          REMOVE4resok   resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct RENAME4args {
   ///         /* SAVED_FH: source directory */
   ///         component4      oldname;
   ///         /* CURRENT_FH: target directory */
   ///         component4      newname;
   /// };
   ///
   /// struct RENAME4resok {
   ///         change_info4    source_cinfo;
   ///         change_info4    target_cinfo;
   /// };
   ///
   /// union RENAME4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          RENAME4resok    resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// /* Obsolete in NFSv4.1 */
   /// struct RENEW4args {
   ///         clientid4       clientid;
   /// };
   ///
   /// struct RENEW4res {
   ///         nfsstat4        status;
   /// };
   ///
   /// struct RESTOREFH4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New CURRENT_FH: value of saved fh
   ///          */
   ///         nfsstat4        status;
   /// };
   ///
Top   ToC   RFC7863 - Page 50
   /// struct SAVEFH4res {
   ///         /*
   ///          * If status is NFS4_OK,
   ///          *   New SAVED_FH: value of current fh
   ///          */
   ///         nfsstat4        status;
   /// };
   ///
   /// struct SECINFO4args {
   ///         /* CURRENT_FH: directory */
   ///         component4      name;
   /// };
   ///
   /// /*
   ///  * From RFC 2203
   ///  */
   /// enum rpc_gss_svc_t {
   ///         RPC_GSS_SVC_NONE        = 1,
   ///         RPC_GSS_SVC_INTEGRITY   = 2,
   ///         RPC_GSS_SVC_PRIVACY     = 3
   /// };
   ///
   /// struct rpcsec_gss_info {
   ///         sec_oid4        oid;
   ///         qop4            qop;
   ///         rpc_gss_svc_t   service;
   /// };
   ///
   /// /* RPCSEC_GSS has a value of "6".  See RFC 2203. */
   /// union secinfo4 switch (uint32_t flavor) {
   ///  case RPCSEC_GSS:
   ///          rpcsec_gss_info        flavor_info;
   ///  default:
   ///          void;
   /// };
   ///
   /// typedef secinfo4 SECINFO4resok<>;
   ///
   /// union SECINFO4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          /* CURRENTFH: consumed */
   ///          SECINFO4resok resok4;
   ///  default:
   ///          void;
   /// };
   ///
Top   ToC   RFC7863 - Page 51
   /// struct SETATTR4args {
   ///         /* CURRENT_FH: target object */
   ///         stateid4        stateid;
   ///         fattr4          obj_attributes;
   /// };
   ///
   /// struct SETATTR4res {
   ///         nfsstat4        status;
   ///         bitmap4         attrsset;
   /// };
   ///
   /// /* Obsolete in NFSv4.1 */
   /// struct SETCLIENTID4args {
   ///         nfs_client_id4  client;
   ///         cb_client4      callback;
   ///         uint32_t        callback_ident;
   /// };
   ///
   /// struct SETCLIENTID4resok {
   ///         clientid4       clientid;
   ///         verifier4       setclientid_confirm;
   /// };
   ///
   /// union SETCLIENTID4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          SETCLIENTID4resok      resok4;
   ///  case NFS4ERR_CLID_INUSE:
   ///          clientaddr4    client_using;
   ///  default:
   ///          void;
   /// };
   ///
   /// /* Obsolete in NFSv4.1 */
   /// struct SETCLIENTID_CONFIRM4args {
   ///         clientid4       clientid;
   ///         verifier4       setclientid_confirm;
   /// };
   ///
   /// struct SETCLIENTID_CONFIRM4res {
   ///         nfsstat4        status;
   /// };
   ///
   /// struct VERIFY4args {
   ///         /* CURRENT_FH: object */
   ///         fattr4          obj_attributes;
   /// };
   ///
Top   ToC   RFC7863 - Page 52
   /// struct VERIFY4res {
   ///         nfsstat4        status;
   /// };
   ///
   /// struct WRITE4args {
   ///         /* CURRENT_FH: file */
   ///         stateid4        stateid;
   ///         offset4         offset;
   ///         stable_how4     stable;
   ///         opaque          data<>;
   /// };
   ///
   /// struct WRITE4resok {
   ///         count4          count;
   ///         stable_how4     committed;
   ///         verifier4       writeverf;
   /// };
   ///
   /// union WRITE4res switch (nfsstat4 status) {
   ///  case NFS4_OK:
   ///          WRITE4resok    resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// /* Obsolete in NFSv4.1 */
   /// struct RELEASE_LOCKOWNER4args {
   ///         lock_owner4     lock_owner;
   /// };
   ///
   /// struct RELEASE_LOCKOWNER4res {
   ///         nfsstat4        status;
   /// };
   ///
   /// struct ILLEGAL4res {
   ///         nfsstat4        status;
   /// };
   ///
   /// typedef opaque gsshandle4_t<>;
   ///
   /// struct gss_cb_handles4 {
   ///         rpc_gss_svc_t           gcbp_service; /* RFC 2203 */
   ///         gsshandle4_t            gcbp_handle_from_server;
   ///         gsshandle4_t            gcbp_handle_from_client;
   /// };
   ///
Top   ToC   RFC7863 - Page 53
   /// union callback_sec_parms4 switch (uint32_t cb_secflavor) {
   ///  case AUTH_NONE:
   ///          void;
   ///  case AUTH_SYS:
   ///          authsys_parms   cbsp_sys_cred; /* RFC 5531 */
   ///  case RPCSEC_GSS:
   ///          gss_cb_handles4 cbsp_gss_handles;
   /// };
   ///
   /// struct BACKCHANNEL_CTL4args {
   ///         uint32_t                bca_cb_program;
   ///         callback_sec_parms4     bca_sec_parms<>;
   /// };
   ///
   /// struct BACKCHANNEL_CTL4res {
   ///         nfsstat4                bcr_status;
   /// };
   ///
   /// enum channel_dir_from_client4 {
   ///  CDFC4_FORE             = 0x1,
   ///  CDFC4_BACK             = 0x2,
   ///  CDFC4_FORE_OR_BOTH     = 0x3,
   ///  CDFC4_BACK_OR_BOTH     = 0x7
   /// };
   ///
   /// struct BIND_CONN_TO_SESSION4args {
   ///  sessionid4     bctsa_sessid;
   ///
   ///  channel_dir_from_client4
   ///                 bctsa_dir;
   ///
   ///  bool           bctsa_use_conn_in_rdma_mode;
   /// };
   ///
   /// enum channel_dir_from_server4 {
   ///  CDFS4_FORE     = 0x1,
   ///  CDFS4_BACK     = 0x2,
   ///  CDFS4_BOTH     = 0x3
   /// };
   ///
   /// struct BIND_CONN_TO_SESSION4resok {
   ///  sessionid4     bctsr_sessid;
   ///
   ///  channel_dir_from_server4
   ///                 bctsr_dir;
   ///
   ///  bool           bctsr_use_conn_in_rdma_mode;
   /// };
Top   ToC   RFC7863 - Page 54
   ///
   /// union BIND_CONN_TO_SESSION4res
   ///  switch (nfsstat4 bctsr_status) {
   ///          case NFS4_OK:
   ///                  BIND_CONN_TO_SESSION4resok  bctsr_resok4;
   ///          default:
   ///                  void;
   /// };
   ///
   /// const EXCHGID4_FLAG_SUPP_MOVED_REFER    = 0x00000001;
   /// const EXCHGID4_FLAG_SUPP_MOVED_MIGR     = 0x00000002;
   /// const EXCHGID4_FLAG_SUPP_FENCE_OPS      = 0x00000004;
   ///
   /// const EXCHGID4_FLAG_BIND_PRINC_STATEID  = 0x00000100;
   ///
   /// const EXCHGID4_FLAG_USE_NON_PNFS        = 0x00010000;
   /// const EXCHGID4_FLAG_USE_PNFS_MDS        = 0x00020000;
   /// const EXCHGID4_FLAG_USE_PNFS_DS         = 0x00040000;
   ///
   /// const EXCHGID4_FLAG_MASK_PNFS           = 0x00070000;
   ///
   /// const EXCHGID4_FLAG_UPD_CONFIRMED_REC_A = 0x40000000;
   /// const EXCHGID4_FLAG_CONFIRMED_R         = 0x80000000;
   ///
   /// struct state_protect_ops4 {
   ///         bitmap4 spo_must_enforce;
   ///         bitmap4 spo_must_allow;
   /// };
   ///
   /// struct ssv_sp_parms4 {
   ///         state_protect_ops4      ssp_ops;
   ///         sec_oid4                ssp_hash_algs<>;
   ///         sec_oid4                ssp_encr_algs<>;
   ///         uint32_t                ssp_window;
   ///         uint32_t                ssp_num_gss_handles;
   /// };
   ///
   /// enum state_protect_how4 {
   ///         SP4_NONE      = 0,
   ///         SP4_MACH_CRED = 1,
   ///         SP4_SSV       = 2
   /// };
   ///
Top   ToC   RFC7863 - Page 55
   /// union state_protect4_a switch (state_protect_how4 spa_how) {
   ///         case SP4_NONE:
   ///                 void;
   ///         case SP4_MACH_CRED:
   ///                 state_protect_ops4      spa_mach_ops;
   ///         case SP4_SSV:
   ///                 ssv_sp_parms4           spa_ssv_parms;
   /// };
   ///
   /// struct EXCHANGE_ID4args {
   ///         client_owner4           eia_clientowner;
   ///         uint32_t                eia_flags;
   ///         state_protect4_a        eia_state_protect;
   ///         nfs_impl_id4            eia_client_impl_id<1>;
   /// };
   ///
   /// struct ssv_prot_info4 {
   ///  state_protect_ops4     spi_ops;
   ///  uint32_t               spi_hash_alg;
   ///  uint32_t               spi_encr_alg;
   ///  uint32_t               spi_ssv_len;
   ///  uint32_t               spi_window;
   ///  gsshandle4_t           spi_handles<>;
   /// };
   ///
   /// union state_protect4_r switch (state_protect_how4 spr_how) {
   ///  case SP4_NONE:
   ///          void;
   ///  case SP4_MACH_CRED:
   ///          state_protect_ops4     spr_mach_ops;
   ///  case SP4_SSV:
   ///          ssv_prot_info4         spr_ssv_info;
   /// };
   ///
   /// struct EXCHANGE_ID4resok {
   ///  clientid4        eir_clientid;
   ///  sequenceid4      eir_sequenceid;
   ///  uint32_t         eir_flags;
   ///  state_protect4_r eir_state_protect;
   ///  server_owner4    eir_server_owner;
   ///  opaque           eir_server_scope<NFS4_OPAQUE_LIMIT>;
   ///  nfs_impl_id4     eir_server_impl_id<1>;
   /// };
   ///
Top   ToC   RFC7863 - Page 56
   /// union EXCHANGE_ID4res switch (nfsstat4 eir_status) {
   ///  case NFS4_OK:
   ///          EXCHANGE_ID4resok      eir_resok4;
   ///
   ///  default:
   ///          void;
   /// };
   ///
   /// struct channel_attrs4 {
   ///         count4                  ca_headerpadsize;
   ///         count4                  ca_maxrequestsize;
   ///         count4                  ca_maxresponsesize;
   ///         count4                  ca_maxresponsesize_cached;
   ///         count4                  ca_maxoperations;
   ///         count4                  ca_maxrequests;
   ///         uint32_t                ca_rdma_ird<1>;
   /// };
   ///
   /// const CREATE_SESSION4_FLAG_PERSIST              = 0x00000001;
   /// const CREATE_SESSION4_FLAG_CONN_BACK_CHAN       = 0x00000002;
   /// const CREATE_SESSION4_FLAG_CONN_RDMA            = 0x00000004;
   ///
   /// struct CREATE_SESSION4args {
   ///         clientid4               csa_clientid;
   ///         sequenceid4             csa_sequence;
   ///
   ///         uint32_t                csa_flags;
   ///
   ///         channel_attrs4          csa_fore_chan_attrs;
   ///         channel_attrs4          csa_back_chan_attrs;
   ///
   ///         uint32_t                csa_cb_program;
   ///         callback_sec_parms4     csa_sec_parms<>;
   /// };
   ///
   /// struct CREATE_SESSION4resok {
   ///         sessionid4              csr_sessionid;
   ///         sequenceid4             csr_sequence;
   ///
   ///         uint32_t                csr_flags;
   ///
   ///         channel_attrs4          csr_fore_chan_attrs;
   ///         channel_attrs4          csr_back_chan_attrs;
   /// };
   ///
Top   ToC   RFC7863 - Page 57
   /// union CREATE_SESSION4res switch (nfsstat4 csr_status) {
   ///  case NFS4_OK:
   ///          CREATE_SESSION4resok   csr_resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// struct DESTROY_SESSION4args {
   ///         sessionid4      dsa_sessionid;
   /// };
   ///
   /// struct DESTROY_SESSION4res {
   ///         nfsstat4        dsr_status;
   /// };
   ///
   /// struct FREE_STATEID4args {
   ///         stateid4        fsa_stateid;
   /// };
   ///
   /// struct FREE_STATEID4res {
   ///         nfsstat4        fsr_status;
   /// };
   ///
   ///
   /// typedef nfstime4 attr_notice4;
   ///
   /// struct GET_DIR_DELEGATION4args {
   ///         /* CURRENT_FH: delegated directory */
   ///         bool            gdda_signal_deleg_avail;
   ///         bitmap4         gdda_notification_types;
   ///         attr_notice4    gdda_child_attr_delay;
   ///         attr_notice4    gdda_dir_attr_delay;
   ///         bitmap4         gdda_child_attributes;
   ///         bitmap4         gdda_dir_attributes;
   /// };
   /// struct GET_DIR_DELEGATION4resok {
   ///         verifier4       gddr_cookieverf;
   ///         /* Stateid for get_dir_delegation */
   ///         stateid4        gddr_stateid;
   ///         /* Which notifications can the server support? */
   ///         bitmap4         gddr_notification;
   ///         bitmap4         gddr_child_attributes;
   ///         bitmap4         gddr_dir_attributes;
   /// };
   ///
Top   ToC   RFC7863 - Page 58
   /// enum gddrnf4_status {
   ///         GDD4_OK         = 0,
   ///         GDD4_UNAVAIL    = 1
   /// };
   ///
   /// union GET_DIR_DELEGATION4res_non_fatal
   ///  switch (gddrnf4_status gddrnf_status) {
   ///          case GDD4_OK:
   ///               GET_DIR_DELEGATION4resok      gddrnf_resok4;
   ///          case GDD4_UNAVAIL:
   ///           bool                gddrnf_will_signal_deleg_avail;
   /// };
   ///
   /// union GET_DIR_DELEGATION4res
   ///  switch (nfsstat4 gddr_status) {
   ///          case NFS4_OK:
   ///           GET_DIR_DELEGATION4res_non_fatal   gddr_res_non_fatal4;
   ///          default:
   ///                  void;
   /// };
   ///
   /// struct GETDEVICEINFO4args {
   ///         deviceid4       gdia_device_id;
   ///         layouttype4     gdia_layout_type;
   ///         count4          gdia_maxcount;
   ///         bitmap4         gdia_notify_types;
   /// };
   ///
   /// struct GETDEVICEINFO4resok {
   ///         device_addr4    gdir_device_addr;
   ///         bitmap4         gdir_notification;
   /// };
   ///
   /// union GETDEVICEINFO4res switch (nfsstat4 gdir_status) {
   ///  case NFS4_OK:
   ///          GETDEVICEINFO4resok     gdir_resok4;
   ///  case NFS4ERR_TOOSMALL:
   ///          count4                  gdir_mincount;
   ///  default:
   ///          void;
   /// };
   ///
Top   ToC   RFC7863 - Page 59
   /// struct GETDEVICELIST4args {
   ///         /* CURRENT_FH: object belonging to the file system */
   ///         layouttype4     gdla_layout_type;
   ///
   ///         /* Number of device IDs to return */
   ///         count4          gdla_maxdevices;
   ///
   ///         nfs_cookie4     gdla_cookie;
   ///         verifier4       gdla_cookieverf;
   /// };
   ///
   /// struct GETDEVICELIST4resok {
   ///         nfs_cookie4             gdlr_cookie;
   ///         verifier4               gdlr_cookieverf;
   ///         deviceid4               gdlr_deviceid_list<>;
   ///         bool                    gdlr_eof;
   /// };
   ///
   /// union GETDEVICELIST4res switch (nfsstat4 gdlr_status) {
   ///  case NFS4_OK:
   ///          GETDEVICELIST4resok     gdlr_resok4;
   ///  default:
   ///          void;
   /// };
   ///
   /// union newtime4 switch (bool nt_timechanged) {
   ///  case TRUE:
   ///          nfstime4           nt_time;
   ///  case FALSE:
   ///          void;
   /// };
   ///
   /// union newoffset4 switch (bool no_newoffset) {
   ///  case TRUE:
   ///          offset4           no_offset;
   ///  case FALSE:
   ///          void;
   /// };
   ///


(next page on part 4)

Next Section