draft-ietf-nfsv4-minorversion2-dot-x-00.txt   draft-ietf-nfsv4-minorversion2-dot-x-01.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Editors
Intended status: Standards Track April 18, 2011 Intended status: Standards Track April 21, 2011
Expires: October 20, 2011 Expires: October 23, 2011
NFSv4 Minor Version 2 Protocol External Data Representation Standard NFSv4 Minor Version 2 Protocol External Data Representation Standard
(XDR) Description (XDR) Description
draft-ietf-nfsv4-minorversion2-dot-x-00.txt draft-ietf-nfsv4-minorversion2-dot-x-01.txt
Abstract Abstract
This Internet-Draft provides the XDR description for NFSv4 minor This Internet-Draft provides the XDR description for NFSv4 minor
version two. version two.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [1]. document are to be interpreted as described in RFC 2119 [1].
Status of this Memo Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF). Note that other groups may also distribute
other groups may also distribute working documents as Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This Internet-Draft will expire on October 23, 2011.
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on October 20, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the BSD License. described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this 10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process. modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 3 1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 4
2. Security Considerations . . . . . . . . . . . . . . . . . . . 70 2. Security Considerations . . . . . . . . . . . . . . . . . . . 77
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 77
4. Normative References . . . . . . . . . . . . . . . . . . . . . 70 4. Normative References . . . . . . . . . . . . . . . . . . . . . 77
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 71 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 78
1. XDR Description of NFSv4.2 1. XDR Description of NFSv4.2
This document contains the XDR ([2]) description of NFSv4.2 protocol This document contains the XDR ([2]) description of NFSv4.2 protocol
([3]). In order to facilitate implementations that support all of ([3]). In order to facilitate implementations that support all of
NFSv4.0, NFSv4.1, and NFSv4.2, the description includes operations, NFSv4.0, NFSv4.1, and NFSv4.2, the description includes operations,
and other features of NFSv4.0 and NFSv4.1 that do not apply to and other features of NFSv4.0 and NFSv4.1 that do not apply to
NFSv4.2. NFSv4.2.
The XDR description is provided in this document in a way that makes The XDR description is provided in this document in a way that makes
skipping to change at page 4, line 33 skipping to change at page 4, line 33
sh extract.sh < spec.txt > nfs4_prot.x sh extract.sh < spec.txt > nfs4_prot.x
The effect of the script is to remove leading white space from each The effect of the script is to remove leading white space from each
line, plus a sentinel sequence of "///". line, plus a sentinel sequence of "///".
The XDR description, with the sentinel sequence follows: The XDR description, with the sentinel sequence follows:
/// /* /// /*
/// * This file was machine generated for /// * This file was machine generated for
/// * draft-ietf-nfsv4-minorversion2-00 /// * draft-ietf-nfsv4-minorversion2-01
/// * Last updated Sun Feb 27 12:17:22 CST 2011 /// * Last updated Thu Apr 21 10:33:42 CDT 2011
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2007-2008) /// * Copyright (C) The IETF Trust (2007-2008)
/// * All Rights Reserved. /// * All Rights Reserved.
/// * /// *
/// * Copyright (C) The Internet Society (1998-2006). /// * Copyright (C) The Internet Society (1998-2006).
/// * All Rights Reserved. /// * All Rights Reserved.
/// */ /// */
/// ///
/// /* /// /*
/// * nfs4_prot.x /// * nfs4_prot.x
/// */ /// */
/// ///
/// %#ifndef _AUTH_SYS_DEFINE_FOR_NFSv41 /// %#ifndef _AUTH_SYS_DEFINE_FOR_NFSv42
/// %#define _AUTH_SYS_DEFINE_FOR_NFSv41 /// %#define _AUTH_SYS_DEFINE_FOR_NFSv42
/// %#include <rpc/auth_sys.h> /// %#include <rpc/auth_sys.h>
/// %typedef struct authsys_parms authsys_parms; /// %typedef struct authsys_parms authsys_parms;
/// %#endif _AUTH_SYS_DEFINE_FOR_NFSv41 /// %#endif /* _AUTH_SYS_DEFINE_FOR_NFSv42 */
/// ///
/// /* /// /*
/// * Basic typedefs for RFC 1832 data type definitions /// * Basic typedefs for RFC 1832 data type definitions
/// */ /// */
/// ///
/// /* /// /*
/// * typedef int int32_t; /// * typedef int int32_t;
/// * typedef unsigned int uint32_t; /// * typedef unsigned int uint32_t;
/// * typedef hyper int64_t; /// * typedef hyper int64_t;
/// * typedef unsigned hyper uint64_t; /// * typedef unsigned hyper uint64_t;
skipping to change at page 6, line 15 skipping to change at page 6, line 15
/// */ /// */
/// enum nfsstat4 { /// enum nfsstat4 {
/// NFS4_OK = 0, /* everything is okay */ /// NFS4_OK = 0, /* everything is okay */
/// NFS4ERR_PERM = 1, /* caller not privileged */ /// NFS4ERR_PERM = 1, /* caller not privileged */
/// NFS4ERR_NOENT = 2, /* no such file/directory */ /// NFS4ERR_NOENT = 2, /* no such file/directory */
/// NFS4ERR_IO = 5, /* hard I/O error */ /// NFS4ERR_IO = 5, /* hard I/O error */
/// NFS4ERR_NXIO = 6, /* no such device */ /// NFS4ERR_NXIO = 6, /* no such device */
/// NFS4ERR_ACCESS = 13, /* access denied */ /// NFS4ERR_ACCESS = 13, /* access denied */
/// NFS4ERR_EXIST = 17, /* file already exists */ /// NFS4ERR_EXIST = 17, /* file already exists */
/// NFS4ERR_XDEV = 18, /* different filesystems */ /// NFS4ERR_XDEV = 18, /* different filesystems */
/// /* Unused/reserved 19 */ ///
/// /*
/// * Please do not allocate value 19; it was used in NFSv3
/// * and we do not want a value in NFSv3 to have a different
/// * meaning in NFSv4.x.
/// */
///
/// NFS4ERR_NOTDIR = 20, /* should be a directory */ /// NFS4ERR_NOTDIR = 20, /* should be a directory */
/// NFS4ERR_ISDIR = 21, /* should not be directory */ /// NFS4ERR_ISDIR = 21, /* should not be directory */
/// NFS4ERR_INVAL = 22, /* invalid argument */ /// NFS4ERR_INVAL = 22, /* invalid argument */
/// NFS4ERR_FBIG = 27, /* file exceeds server max */ /// NFS4ERR_FBIG = 27, /* file exceeds server max */
/// NFS4ERR_NOSPC = 28, /* no space on filesystem */ /// NFS4ERR_NOSPC = 28, /* no space on filesystem */
/// NFS4ERR_ROFS = 30, /* read-only filesystem */ /// NFS4ERR_ROFS = 30, /* read-only filesystem */
/// NFS4ERR_MLINK = 31, /* too many hard links */ /// NFS4ERR_MLINK = 31, /* too many hard links */
/// NFS4ERR_NAMETOOLONG = 63, /* name exceeds server max */ /// NFS4ERR_NAMETOOLONG = 63, /* name exceeds server max */
/// NFS4ERR_NOTEMPTY = 66, /* directory not empty */ /// NFS4ERR_NOTEMPTY = 66, /* directory not empty */
/// NFS4ERR_DQUOT = 69, /* hard quota limit reached*/ /// NFS4ERR_DQUOT = 69, /* hard quota limit reached*/
skipping to change at page 8, line 22 skipping to change at page 8, line 28
/// NFS4ERR_BAD_HIGH_SLOT = 10077,/* req has bad highest_slot*/ /// NFS4ERR_BAD_HIGH_SLOT = 10077,/* req has bad highest_slot*/
/// NFS4ERR_DEADSESSION = 10078,/*new req sent to dead sess*/ /// NFS4ERR_DEADSESSION = 10078,/*new req sent to dead sess*/
/// NFS4ERR_ENCR_ALG_UNSUPP= 10079,/* encr alg. not supp. */ /// NFS4ERR_ENCR_ALG_UNSUPP= 10079,/* encr alg. not supp. */
/// NFS4ERR_PNFS_NO_LAYOUT = 10080,/* I/O without a layout */ /// NFS4ERR_PNFS_NO_LAYOUT = 10080,/* I/O without a layout */
/// NFS4ERR_NOT_ONLY_OP = 10081,/* addl ops not allowed */ /// NFS4ERR_NOT_ONLY_OP = 10081,/* addl ops not allowed */
/// NFS4ERR_WRONG_CRED = 10082,/* op done by wrong cred */ /// NFS4ERR_WRONG_CRED = 10082,/* op done by wrong cred */
/// NFS4ERR_WRONG_TYPE = 10083,/* op on wrong type object */ /// NFS4ERR_WRONG_TYPE = 10083,/* op on wrong type object */
/// NFS4ERR_DIRDELEG_UNAVAIL=10084,/* delegation not avail. */ /// NFS4ERR_DIRDELEG_UNAVAIL=10084,/* delegation not avail. */
/// NFS4ERR_REJECT_DELEG = 10085,/* cb rejected delegation */ /// NFS4ERR_REJECT_DELEG = 10085,/* cb rejected delegation */
/// NFS4ERR_RETURNCONFLICT = 10086,/* layout get before return*/ /// NFS4ERR_RETURNCONFLICT = 10086,/* layout get before return*/
/// NFS4ERR_DELEG_REVOKED = 10087 /// NFS4ERR_DELEG_REVOKED = 10087,/* deleg./layout revoked */
///
/// /* NFSv4.2 errors start here. */
///
/// NFS4ERR_PARTNER_NOTSUPP= 10088,/* s2s not supported */
/// NFS4ERR_PARTNER_NO_AUTH= 10089,/* s2s not authorized */
/// NFS4ERR_METADATA_NOTSUPP=10090 /* dest metadata diff sourc*/
/// }; /// };
/// ///
/// /* /// /*
/// * Basic data types /// * Basic data types
/// */ /// */
/// typedef opaque attrlist4<>; /// typedef opaque attrlist4<>;
/// typedef uint32_t bitmap4<>; /// typedef uint32_t bitmap4<>;
/// typedef uint64_t changeid4; /// typedef uint64_t changeid4;
/// typedef uint64_t clientid4; /// typedef uint64_t clientid4;
/// typedef uint32_t count4; /// typedef uint32_t count4;
skipping to change at page 9, line 4 skipping to change at page 9, line 16
/// typedef opaque sessionid4[NFS4_SESSIONID_SIZE]; /// typedef opaque sessionid4[NFS4_SESSIONID_SIZE];
/// typedef uint32_t slotid4; /// typedef uint32_t slotid4;
/// typedef opaque utf8string<>; /// typedef opaque utf8string<>;
/// typedef utf8string utf8str_cis; /// typedef utf8string utf8str_cis;
/// typedef utf8string utf8str_cs; /// typedef utf8string utf8str_cs;
/// typedef utf8string utf8str_mixed; /// typedef utf8string utf8str_mixed;
/// typedef utf8str_cs component4; /// typedef utf8str_cs component4;
/// typedef utf8str_cs linktext4; /// typedef utf8str_cs linktext4;
/// typedef component4 pathname4<>; /// typedef component4 pathname4<>;
/// typedef opaque verifier4[NFS4_VERIFIER_SIZE]; /// typedef opaque verifier4[NFS4_VERIFIER_SIZE];
/// typedef string secret4<>;
/// ///
/// /* /// /*
/// * Timeval /// * Timeval
/// */ /// */
/// struct nfstime4 { /// struct nfstime4 {
/// int64_t seconds; /// int64_t seconds;
/// uint32_t nseconds; /// uint32_t nseconds;
/// }; /// };
/// ///
/// enum time_how4 { /// enum time_how4 {
skipping to change at page 14, line 21 skipping to change at page 14, line 34
/// const FH4_VOL_MIGRATION = 0x00000004; /// const FH4_VOL_MIGRATION = 0x00000004;
/// const FH4_VOL_RENAME = 0x00000008; /// const FH4_VOL_RENAME = 0x00000008;
/// ///
/// ///
/// struct netaddr4 { /// struct netaddr4 {
/// /* see struct rpcb in RFC 1833 */ /// /* see struct rpcb in RFC 1833 */
/// string na_r_netid<>; /* network id */ /// string na_r_netid<>; /* network id */
/// string na_r_addr<>; /* universal address */ /// string na_r_addr<>; /* universal address */
/// }; /// };
/// ///
///
/// /* /// /*
/// * data structures new to NFSv4.1 /// * data structures new to NFSv4.1
/// */ /// */
/// ///
/// struct nfs_impl_id4 { /// struct nfs_impl_id4 {
/// utf8str_cis nii_domain; /// utf8str_cis nii_domain;
/// utf8str_cs nii_name; /// utf8str_cs nii_name;
/// nfstime4 nii_date; /// nfstime4 nii_date;
/// }; /// };
/// ///
skipping to change at page 15, line 5 skipping to change at page 15, line 19
/// LAYOUT4_BLOCK_VOLUME = 0x3 /// LAYOUT4_BLOCK_VOLUME = 0x3
/// }; /// };
/// ///
/// struct layout_content4 { /// struct layout_content4 {
/// layouttype4 loc_type; /// layouttype4 loc_type;
/// opaque loc_body<>; /// opaque loc_body<>;
/// }; /// };
/// ///
/// ///
/// %/* /// %/*
/// %/* LAYOUT4_OSD2_OBJECTS loc_body description /// % * LAYOUT4_OSD2_OBJECTS loc_body description
/// % * is in a separate .x file /// % * is in a separate .x file
/// % */ /// % */
/// % /// %
/// %/* /// %/*
/// %/* LAYOUT4_BLOCK_VOLUME loc_body description /// % * LAYOUT4_BLOCK_VOLUME loc_body description
/// % * is in a separate .x file /// % * is in a separate .x file
/// % */ /// % */
/// ///
/// struct layouthint4 { /// struct layouthint4 {
/// layouttype4 loh_type; /// layouttype4 loh_type;
/// opaque loh_body<>; /// opaque loh_body<>;
/// }; /// };
/// ///
/// enum layoutiomode4 { /// enum layoutiomode4 {
/// LAYOUTIOMODE4_READ = 1, /// LAYOUTIOMODE4_READ = 1,
skipping to change at page 15, line 49 skipping to change at page 16, line 15
/// }; /// };
/// ///
/// ///
/// struct layoutupdate4 { /// struct layoutupdate4 {
/// layouttype4 lou_type; /// layouttype4 lou_type;
/// opaque lou_body<>; /// opaque lou_body<>;
/// }; /// };
/// ///
/// % /// %
/// /* Constants used for LAYOUTRETURN and CB_LAYOUTRECALL */ /// /* Constants used for LAYOUTRETURN and CB_LAYOUTRECALL */
/// const LAYOUT4_RET_REC_FILE = 1; /// const LAYOUT4_RET_REC_FILE = 1;
/// const LAYOUT4_RET_REC_FSID = 2; /// const LAYOUT4_RET_REC_FSID = 2;
/// const LAYOUT4_RET_REC_ALL = 3; /// const LAYOUT4_RET_REC_ALL = 3;
/// % /// %
/// enum layoutreturn_type4 { /// enum layoutreturn_type4 {
/// LAYOUTRETURN4_FILE = LAYOUT4_RET_REC_FILE, /// LAYOUTRETURN4_FILE = LAYOUT4_RET_REC_FILE,
/// LAYOUTRETURN4_FSID = LAYOUT4_RET_REC_FSID, /// LAYOUTRETURN4_FSID = LAYOUT4_RET_REC_FSID,
/// LAYOUTRETURN4_ALL = LAYOUT4_RET_REC_ALL /// LAYOUTRETURN4_ALL = LAYOUT4_RET_REC_ALL,
/// }; /// };
/// ///
/// struct layoutreturn_file4 { /// struct layoutreturn_file4 {
/// offset4 lrf_offset; /// offset4 lrf_offset;
/// length4 lrf_length; /// length4 lrf_length;
/// stateid4 lrf_stateid; /// stateid4 lrf_stateid;
/// % /* layouttype4 specific data */ /// % /* layouttype4 specific data */
/// opaque lrf_body<>; /// opaque lrf_body<>;
/// }; /// };
/// ///
skipping to change at page 17, line 35 skipping to change at page 17, line 49
/// uint64_t rs_duration<1>; /// uint64_t rs_duration<1>;
/// }; /// };
/// ///
/// const FSCHARSET_CAP4_CONTAINS_NON_UTF8 = 0x1; /// const FSCHARSET_CAP4_CONTAINS_NON_UTF8 = 0x1;
/// const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 = 0x2; /// const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 = 0x2;
/// ///
/// typedef uint32_t fs_charset_cap4; /// typedef uint32_t fs_charset_cap4;
/// ///
/// ///
/// /* /// /*
/// * data structures new to NFSv4.2
/// */
///
/// enum netloc_type4 {
/// NL4_NAME = 0,
/// NL4_URL = 1,
/// NL4_NETADDR = 2
/// };
/// union netloc4 switch (netloc_type4 nl_type) {
/// case NL4_NAME: utf8str_cis nl_name;
/// case NL4_URL: utf8str_cis nl_url;
/// case NL4_NETADDR: netaddr4 nl_addr;
/// };
///
/// enum change_attr_typeinfo {
/// NFS4_CHANGE_TYPE_IS_MONOTONIC_INCR = 0,
/// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER = 1,
/// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER_NOPNFS = 2,
/// NFS4_CHANGE_TYPE_IS_TIME_METADATA = 3,
/// NFS4_CHANGE_TYPE_IS_UNDEFINED = 4
/// };
///
///
/// struct copy_from_auth_priv {
/// secret4 cfap_shared_secret;
/// netloc4 cfap_destination;
/// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed cfap_username;
/// /* equal to seq_num of rpc_gss_cred_vers_3_t */
/// unsigned int cfap_seq_num;
/// };
///
/// struct copy_to_auth_priv {
/// /* equal to cfap_shared_secret */
/// secret4 ctap_shared_secret;
/// netloc4 ctap_source;
/// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed ctap_username;
/// /* equal to seq_num of rpc_gss_cred_vers_3_t */
/// unsigned int ctap_seq_num;
/// };
///
/// struct copy_confirm_auth_priv {
/// /* equal to GSS_GetMIC() of cfap_shared_secret */
/// opaque ccap_shared_secret_mic<>;
/// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed ccap_username;
/// /* equal to seq_num of rpc_gss_cred_vers_3_t */
/// unsigned int ccap_seq_num;
/// };
///
///
/// /*
/// * NFSv4.1 attributes /// * NFSv4.1 attributes
/// */ /// */
/// typedef bitmap4 fattr4_supported_attrs; /// typedef bitmap4 fattr4_supported_attrs;
/// typedef bitmap4 fattr4_suppattr_exclcreat;
/// typedef nfs_ftype4 fattr4_type; /// typedef nfs_ftype4 fattr4_type;
/// typedef uint32_t fattr4_fh_expire_type; /// typedef uint32_t fattr4_fh_expire_type;
/// typedef changeid4 fattr4_change; /// typedef changeid4 fattr4_change;
/// typedef uint64_t fattr4_size; /// typedef uint64_t fattr4_size;
/// typedef bool fattr4_link_support; /// typedef bool fattr4_link_support;
/// typedef bool fattr4_symlink_support; /// typedef bool fattr4_symlink_support;
/// typedef bool fattr4_named_attr; /// typedef bool fattr4_named_attr;
/// typedef fsid4 fattr4_fsid; /// typedef fsid4 fattr4_fsid;
/// typedef bool fattr4_unique_handles; /// typedef bool fattr4_unique_handles;
/// typedef nfs_lease4 fattr4_lease_time; /// typedef nfs_lease4 fattr4_lease_time;
skipping to change at page 18, line 50 skipping to change at page 20, line 20
/// typedef settime4 fattr4_time_access_set; /// typedef settime4 fattr4_time_access_set;
/// typedef nfstime4 fattr4_time_backup; /// typedef nfstime4 fattr4_time_backup;
/// typedef nfstime4 fattr4_time_create; /// typedef nfstime4 fattr4_time_create;
/// typedef nfstime4 fattr4_time_delta; /// typedef nfstime4 fattr4_time_delta;
/// typedef nfstime4 fattr4_time_metadata; /// typedef nfstime4 fattr4_time_metadata;
/// typedef nfstime4 fattr4_time_modify; /// typedef nfstime4 fattr4_time_modify;
/// typedef settime4 fattr4_time_modify_set; /// typedef settime4 fattr4_time_modify_set;
/// /* /// /*
/// * attributes new to NFSv4.1 /// * attributes new to NFSv4.1
/// */ /// */
/// typedef bitmap4 fattr4_suppattr_exclcreat;
/// typedef nfstime4 fattr4_dir_notif_delay; /// typedef nfstime4 fattr4_dir_notif_delay;
/// typedef nfstime4 fattr4_dirent_notif_delay; /// typedef nfstime4 fattr4_dirent_notif_delay;
/// typedef bool fattr4_absent;
/// typedef layouttype4 fattr4_fs_layout_types<>; /// typedef layouttype4 fattr4_fs_layout_types<>;
/// typedef fs4_status fattr4_fs_status; /// typedef fs4_status fattr4_fs_status;
/// typedef fs_charset_cap4 fattr4_fs_charset_cap4; /// typedef fs_charset_cap4 fattr4_fs_charset_cap;
/// typedef uint32_t fattr4_layout_alignment; /// typedef uint32_t fattr4_layout_alignment;
/// typedef uint32_t fattr4_layout_blksize; /// typedef uint32_t fattr4_layout_blksize;
/// typedef layouthint4 fattr4_layout_hint; /// typedef layouthint4 fattr4_layout_hint;
/// typedef layouttype4 fattr4_layout_types<>; /// typedef layouttype4 fattr4_layout_types<>;
/// typedef mdsthreshold4 fattr4_mdsthreshold; /// typedef mdsthreshold4 fattr4_mdsthreshold;
/// typedef retention_get4 fattr4_retention_get; /// typedef retention_get4 fattr4_retention_get;
/// typedef retention_set4 fattr4_retention_set; /// typedef retention_set4 fattr4_retention_set;
/// typedef retention_get4 fattr4_retentevt_get; /// typedef retention_get4 fattr4_retentevt_get;
/// typedef retention_set4 fattr4_retentevt_set; /// typedef retention_set4 fattr4_retentevt_set;
/// typedef uint64_t fattr4_retention_hold; /// typedef uint64_t fattr4_retention_hold;
/// typedef nfsacl41 fattr4_dacl; /// typedef nfsacl41 fattr4_dacl;
/// typedef nfsacl41 fattr4_sacl; /// typedef nfsacl41 fattr4_sacl;
/// typedef change_policy4 fattr4_change_policy;
/// ///
/// /// %/*
/// /* /// % * REQUIRED Attributes
/// * Mandatory Attributes /// % */
/// */
/// const FATTR4_SUPPORTED_ATTRS = 0; /// const FATTR4_SUPPORTED_ATTRS = 0;
/// const FATTR4_TYPE = 1; /// const FATTR4_TYPE = 1;
/// const FATTR4_FH_EXPIRE_TYPE = 2; /// const FATTR4_FH_EXPIRE_TYPE = 2;
/// const FATTR4_CHANGE = 3; /// const FATTR4_CHANGE = 3;
/// const FATTR4_SIZE = 4; /// const FATTR4_SIZE = 4;
/// const FATTR4_LINK_SUPPORT = 5; /// const FATTR4_LINK_SUPPORT = 5;
/// const FATTR4_SYMLINK_SUPPORT = 6; /// const FATTR4_SYMLINK_SUPPORT = 6;
/// const FATTR4_NAMED_ATTR = 7; /// const FATTR4_NAMED_ATTR = 7;
/// const FATTR4_FSID = 8; /// const FATTR4_FSID = 8;
/// const FATTR4_UNIQUE_HANDLES = 9; /// const FATTR4_UNIQUE_HANDLES = 9;
/// const FATTR4_LEASE_TIME = 10; /// const FATTR4_LEASE_TIME = 10;
/// const FATTR4_RDATTR_ERROR = 11; /// const FATTR4_RDATTR_ERROR = 11;
/// const FATTR4_FILEHANDLE = 19; /// const FATTR4_FILEHANDLE = 19;
///
/// %/*
/// % * new to NFSV4.1
/// % */
/// const FATTR4_SUPPATTR_EXCLCREAT = 75; /// const FATTR4_SUPPATTR_EXCLCREAT = 75;
/// ///
/// /* /// %/*
/// * Recommended Attributes /// % * RECOMMENDED Attributes
/// */ /// % */
/// const FATTR4_ACL = 12; /// const FATTR4_ACL = 12;
/// const FATTR4_ACLSUPPORT = 13; /// const FATTR4_ACLSUPPORT = 13;
/// const FATTR4_ARCHIVE = 14; /// const FATTR4_ARCHIVE = 14;
/// const FATTR4_CANSETTIME = 15; /// const FATTR4_CANSETTIME = 15;
/// const FATTR4_CASE_INSENSITIVE = 16; /// const FATTR4_CASE_INSENSITIVE = 16;
/// const FATTR4_CASE_PRESERVING = 17; /// const FATTR4_CASE_PRESERVING = 17;
/// const FATTR4_CHOWN_RESTRICTED = 18; /// const FATTR4_CHOWN_RESTRICTED = 18;
/// const FATTR4_FILEID = 20; /// const FATTR4_FILEID = 20;
/// const FATTR4_FILES_AVAIL = 21; /// const FATTR4_FILES_AVAIL = 21;
/// const FATTR4_FILES_FREE = 22; /// const FATTR4_FILES_FREE = 22;
skipping to change at page 20, line 38 skipping to change at page 22, line 12
/// const FATTR4_SYSTEM = 46; /// const FATTR4_SYSTEM = 46;
/// const FATTR4_TIME_ACCESS = 47; /// const FATTR4_TIME_ACCESS = 47;
/// const FATTR4_TIME_ACCESS_SET = 48; /// const FATTR4_TIME_ACCESS_SET = 48;
/// const FATTR4_TIME_BACKUP = 49; /// const FATTR4_TIME_BACKUP = 49;
/// const FATTR4_TIME_CREATE = 50; /// const FATTR4_TIME_CREATE = 50;
/// const FATTR4_TIME_DELTA = 51; /// const FATTR4_TIME_DELTA = 51;
/// const FATTR4_TIME_METADATA = 52; /// const FATTR4_TIME_METADATA = 52;
/// const FATTR4_TIME_MODIFY = 53; /// const FATTR4_TIME_MODIFY = 53;
/// const FATTR4_TIME_MODIFY_SET = 54; /// const FATTR4_TIME_MODIFY_SET = 54;
/// const FATTR4_MOUNTED_ON_FILEID = 55; /// const FATTR4_MOUNTED_ON_FILEID = 55;
///
/// %/*
/// % * new to NFSV4.1
/// % */
/// const FATTR4_DIR_NOTIF_DELAY = 56; /// const FATTR4_DIR_NOTIF_DELAY = 56;
/// const FATTR4_DIRENT_NOTIF_DELAY = 57; /// const FATTR4_DIRENT_NOTIF_DELAY = 57;
/// const FATTR4_DACL = 58; /// const FATTR4_DACL = 58;
/// const FATTR4_SACL = 59; /// const FATTR4_SACL = 59;
/// const FATTR4_CHANGE_POLICY = 60; /// const FATTR4_CHANGE_POLICY = 60;
///
/// %/*
/// % * new to NFSV4.2
/// % */
/// const FATTR4_FS_STATUS = 61; /// const FATTR4_FS_STATUS = 61;
/// const FATTR4_FS_LAYOUT_TYPE = 62; /// const FATTR4_FS_LAYOUT_TYPES = 62;
/// const FATTR4_LAYOUT_HINT = 63; /// const FATTR4_LAYOUT_HINT = 63;
/// const FATTR4_LAYOUT_TYPE = 64; /// const FATTR4_LAYOUT_TYPES = 64;
/// const FATTR4_LAYOUT_BLKSIZE = 65; /// const FATTR4_LAYOUT_BLKSIZE = 65;
/// const FATTR4_LAYOUT_ALIGNMENT = 66; /// const FATTR4_LAYOUT_ALIGNMENT = 66;
/// const FATTR4_FS_LOCATIONS_INFO = 67; /// const FATTR4_FS_LOCATIONS_INFO = 67;
/// const FATTR4_MDSTHRESHOLD = 68; /// const FATTR4_MDSTHRESHOLD = 68;
/// const FATTR4_RETENTION_GET = 69; /// const FATTR4_RETENTION_GET = 69;
/// const FATTR4_RETENTION_SET = 70; /// const FATTR4_RETENTION_SET = 70;
/// const FATTR4_RETENTEVT_GET = 71; /// const FATTR4_RETENTEVT_GET = 71;
/// const FATTR4_RETENTEVT_SET = 72; /// const FATTR4_RETENTEVT_SET = 72;
/// const FATTR4_RETENTION_HOLD = 73; /// const FATTR4_RETENTION_HOLD = 73;
/// const FATTR4_MODE_SET_MASKED = 74; /// const FATTR4_MODE_SET_MASKED = 74;
/// const FATTR4_FS_CHARSET_CAP = 76; /// const FATTR4_FS_CHARSET_CAP = 76;
/// const FATTR4_SPACE_RESERVED = 77;
/// const FATTR4_SPACE_FREED = 78;
/// const FATTR4_MAX_HOLE_PUNCHED = 79;
/// const FATTR4_CHANGE_ATTR_TYPE = 80;
/// ///
/// /* /// /*
/// * File attribute container /// * File attribute container
/// */ /// */
/// struct fattr4 { /// struct fattr4 {
/// bitmap4 attrmask; /// bitmap4 attrmask;
/// attrlist4 attr_vals; /// attrlist4 attr_vals;
/// }; /// };
/// ///
/// /* /// /*
skipping to change at page 25, line 29 skipping to change at page 27, line 15
/// ///
/// NFLH4_CARE_COMMIT_THRU_MDS /// NFLH4_CARE_COMMIT_THRU_MDS
/// = NFL4_UFLG_COMMIT_THRU_MDS, /// = NFL4_UFLG_COMMIT_THRU_MDS,
/// ///
/// NFLH4_CARE_STRIPE_UNIT_SIZE /// NFLH4_CARE_STRIPE_UNIT_SIZE
/// = 0x00000040, /// = 0x00000040,
/// ///
/// NFLH4_CARE_STRIPE_COUNT = 0x00000080 /// NFLH4_CARE_STRIPE_COUNT = 0x00000080
/// }; /// };
/// % /// %
/// %/* Encoded in the loh_body field of type layouthint4: */ /// %/*
/// % * Encoded in the loh_body field of data type layouthint4:
/// %*/
/// % /// %
/// struct nfsv4_1_file_layouthint4 { /// struct nfsv4_1_file_layouthint4 {
/// uint32_t nflh_care; /// uint32_t nflh_care;
/// nfl_util4 nflh_util; /// nfl_util4 nflh_util;
/// count4 nflh_stripe_count; /// count4 nflh_stripe_count;
/// }; /// };
/// ///
/// % /// %
/// ///
/// % /// %
/// typedef netaddr4 multipath_list4<>; /// typedef netaddr4 multipath_list4<>;
/// % /// %
/// %/* Encoded in the da_addr_body field of type device_addr4: */ /// %/*
/// % * Encoded in the da_addr_body field of data type device_addr4:
/// %*/
/// struct nfsv4_1_file_layout_ds_addr4 { /// struct nfsv4_1_file_layout_ds_addr4 {
/// uint32_t nflda_stripe_indices<>; /// uint32_t nflda_stripe_indices<>;
/// multipath_list4 nflda_multipath_ds_list<>; /// multipath_list4 nflda_multipath_ds_list<>;
/// }; /// };
/// ///
/// % /// %
/// ///
/// % /// %
/// %/* Encoded in the loc_body field of type layout_content4: */ /// %/*
/// % * Encoded in the loc_body field of data type layout_content4:
/// %*/
/// struct nfsv4_1_file_layout4 { /// struct nfsv4_1_file_layout4 {
/// deviceid4 nfl_deviceid; /// deviceid4 nfl_deviceid;
/// nfl_util4 nfl_util; /// nfl_util4 nfl_util;
/// uint32_t nfl_first_stripe_index; /// uint32_t nfl_first_stripe_index;
/// offset4 nfl_pattern_offset; /// offset4 nfl_pattern_offset;
/// nfs_fh4 nfl_fh_list<>; /// nfs_fh4 nfl_fh_list<>;
/// }; /// };
/// ///
/// % /// %
/// ///
/// %/* /// %/*
/// % * Encoded in the lou_body field of type layoutupdate4: /// % * Encoded in the lou_body field of data type layoutupdate4:
/// % * Nothing. lou_body is a zero length array of octets. /// % * Nothing. lou_body is a zero length array of bytes.
/// % */ /// % */
/// % /// %
/// ///
/// %/*
/// % * Encoded in the lrf_body field of
/// % * data type layoutreturn_file4:
/// % */
/// struct layoutreturn_device_error4 {
/// deviceid4 lrde_deviceid;
/// nfsstat4 lrde_status;
/// nfs_opnum4 lrde_opnum;
/// };
///
/// struct layoutreturn_error_report4 {
/// layoutreturn_device_error4 lrer_errors<>;
/// };
///
/// %
/// ///
/// ///
/// const ACCESS4_READ = 0x00000001; /// const ACCESS4_READ = 0x00000001;
/// const ACCESS4_LOOKUP = 0x00000002; /// const ACCESS4_LOOKUP = 0x00000002;
/// const ACCESS4_MODIFY = 0x00000004; /// const ACCESS4_MODIFY = 0x00000004;
/// const ACCESS4_EXTEND = 0x00000008; /// const ACCESS4_EXTEND = 0x00000008;
/// const ACCESS4_DELETE = 0x00000010; /// const ACCESS4_DELETE = 0x00000010;
/// const ACCESS4_EXECUTE = 0x00000020; /// const ACCESS4_EXECUTE = 0x00000020;
/// ///
/// struct ACCESS4args { /// struct ACCESS4args {
skipping to change at page 35, line 29 skipping to change at page 37, line 36
/// /* /// /*
/// * Right to file based on a delegation /// * Right to file based on a delegation
/// * granted to a previous boot instance /// * granted to a previous boot instance
/// * of the client. File is specified by name. /// * of the client. File is specified by name.
/// */ /// */
/// case CLAIM_DELEGATE_PREV: /// case CLAIM_DELEGATE_PREV:
/// /* CURRENT_FH: directory */ /// /* CURRENT_FH: directory */
/// component4 file_delegate_prev; /// component4 file_delegate_prev;
/// ///
/// /* /// /*
/// * Like CLAIM_NULL. No special rights /// * Like CLAIM_NULL. No special rights
/// * to file. Ordinary OPEN of the /// * to file. Ordinary OPEN of the
/// * specified file by current filehandle. /// * specified file by current filehandle.
/// */ /// */
/// case CLAIM_FH: /* new to v4.1 */ /// case CLAIM_FH: /* new to v4.1 */
/// /* CURRENT_FH: regular file to open */ /// /* CURRENT_FH: regular file to open */
/// void; /// void;
/// ///
/// /* /// /*
/// * Like CLAIM_DELEGATE_PREV. Right to file based on a /// * Like CLAIM_DELEGATE_PREV. Right to file based on a
/// * delegation granted to a previous boot /// * delegation granted to a previous boot
/// * instance of the client. File is identified by /// * instance of the client. File is identified by
/// * by filehandle. /// * by filehandle.
/// */ /// */
/// case CLAIM_DELEG_PREV_FH: /* new to v4.1 */ /// case CLAIM_DELEG_PREV_FH: /* new to v4.1 */
/// /* CURRENT_FH: file being opened */ /// /* CURRENT_FH: file being opened */
/// void; /// void;
/// ///
/// /* /// /*
/// * Like CLAIM_DELEGATE_CUR. Right to file based on /// * Like CLAIM_DELEGATE_CUR. Right to file based on
/// * a delegation granted by the server. /// * a delegation granted by the server.
/// * File is identified by filehandle. /// * File is identified by filehandle.
/// */ /// */
/// case CLAIM_DELEG_CUR_FH: /* new to v4.1 */ /// case CLAIM_DELEG_CUR_FH: /* new to v4.1 */
/// /* CURRENT_FH: file being opened */ /// /* CURRENT_FH: file being opened */
/// stateid4 oc_delegate_stateid; /// stateid4 oc_delegate_stateid;
/// ///
/// }; /// };
/// ///
/// /* /// /*
skipping to change at page 37, line 14 skipping to change at page 39, line 21
/// ///
/// ///
/// enum why_no_delegation4 { /* new to v4.1 */ /// enum why_no_delegation4 { /* new to v4.1 */
/// WND4_NOT_WANTED = 0, /// WND4_NOT_WANTED = 0,
/// WND4_CONTENTION = 1, /// WND4_CONTENTION = 1,
/// WND4_RESOURCE = 2, /// WND4_RESOURCE = 2,
/// WND4_NOT_SUPP_FTYPE = 3, /// WND4_NOT_SUPP_FTYPE = 3,
/// WND4_WRITE_DELEG_NOT_SUPP_FTYPE = 4, /// WND4_WRITE_DELEG_NOT_SUPP_FTYPE = 4,
/// WND4_NOT_SUPP_UPGRADE = 5, /// WND4_NOT_SUPP_UPGRADE = 5,
/// WND4_NOT_SUPP_DOWNGRADE = 6, /// WND4_NOT_SUPP_DOWNGRADE = 6,
/// WND4_CANCELED = 7, /// WND4_CANCELLED = 7,
/// WND4_IS_DIR = 8 /// WND4_IS_DIR = 8
/// }; /// };
/// ///
/// union open_none_delegation4 /* new to v4.1 */ /// union open_none_delegation4 /* new to v4.1 */
/// switch (why_no_delegation4 ond_why) { /// switch (why_no_delegation4 ond_why) {
/// case WND4_CONTENTION: /// case WND4_CONTENTION:
/// bool ond_server_will_push_deleg; /// bool ond_server_will_push_deleg;
/// case WND4_RESOURCE: /// case WND4_RESOURCE:
/// bool ond_server_will_signal_avail; /// bool ond_server_will_signal_avail;
/// default: /// default:
skipping to change at page 55, line 27 skipping to change at page 57, line 33
/// ///
/// union TEST_STATEID4res switch (nfsstat4 tsr_status) { /// union TEST_STATEID4res switch (nfsstat4 tsr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// TEST_STATEID4resok tsr_resok4; /// TEST_STATEID4resok tsr_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// union deleg_claim4 switch (open_claim_type4 dc_claim) { /// union deleg_claim4 switch (open_claim_type4 dc_claim) {
/// /* /// /*
/// * No special rights to object. Ordinary delegation /// * No special rights to object. Ordinary delegation
/// * request of the specified object. Object identified /// * request of the specified object. Object identified
/// * by filehandle. /// * by filehandle.
/// */ /// */
/// case CLAIM_FH: /* new to v4.1 */ /// case CLAIM_FH: /* new to v4.1 */
/// /* CURRENT_FH: object being delegated */ /// /* CURRENT_FH: object being delegated */
/// void; /// void;
/// ///
/// /* /// /*
/// * Right to file based on a delegation granted /// * Right to file based on a delegation granted
/// * to a previous boot instance of the client. /// * to a previous boot instance of the client.
/// * File is specified by filehandle. /// * File is specified by filehandle.
skipping to change at page 56, line 40 skipping to change at page 58, line 47
/// * filesystem reclaim is /// * filesystem reclaim is
/// * complete for. /// * complete for.
/// */ /// */
/// bool rca_one_fs; /// bool rca_one_fs;
/// }; /// };
/// ///
/// struct RECLAIM_COMPLETE4res { /// struct RECLAIM_COMPLETE4res {
/// nfsstat4 rcr_status; /// nfsstat4 rcr_status;
/// }; /// };
/// ///
///
/// const COPY4_GUARDED = 0x00000001;
/// const COPY4_METADATA = 0x00000002;
///
/// struct COPY4args {
/// /* SAVED_FH: source file */
/// /* CURRENT_FH: destination file or */
/// /* directory */
/// offset4 ca_src_offset;
/// offset4 ca_dst_offset;
/// length4 ca_count;
/// uint32_t ca_flags;
/// component4 ca_destination;
/// netloc4 ca_source_server<>;
/// };
///
/// union COPY4res switch (nfsstat4 cr_status) {
/// case NFS4_OK:
/// stateid4 cr_callback_id<1>;
/// default:
/// length4 cr_bytes_copied;
/// };
///
/// struct COPY_ABORT4args {
/// /* CURRENT_FH: desination file */
/// stateid4 caa_stateid;
/// };
///
/// struct COPY_ABORT4res {
/// nfsstat4 car_status;
/// };
///
/// struct COPY_NOTIFY4args {
/// /* CURRENT_FH: source file */
/// netloc4 cna_destination_server;
/// };
///
/// struct COPY_NOTIFY4resok {
/// nfstime4 cnr_lease_time;
/// netloc4 cnr_source_server<>;
/// };
///
/// union COPY_NOTIFY4res switch (nfsstat4 cnr_status) {
/// case NFS4_OK:
/// COPY_NOTIFY4resok resok4;
/// default:
/// void;
/// };
///
/// struct COPY_REVOKE4args {
/// /* CURRENT_FH: source file */
/// netloc4 cra_destination_server;
/// };
///
/// struct COPY_REVOKE4res {
/// nfsstat4 crr_status;
/// };
///
///
/// struct COPY_STATUS4args {
/// /* CURRENT_FH: destination file */
/// stateid4 csa_stateid;
/// };
///
/// struct COPY_STATUS4resok {
/// length4 csr_bytes_copied;
/// nfsstat4 csr_complete<1>;
/// };
///
/// union COPY_STATUS4res switch (nfsstat4 csr_status) {
/// case NFS4_OK:
/// COPY_STATUS4resok resok4;
/// default:
/// void;
/// };
///
///
/// struct HOLE_PUNCH4args {
/// /* CURRENT_FH: file */
/// offset4 hpa_offset;
/// length4 hpa_count;
/// };
///
///
/// struct HOLE_PUNCH4res {
/// nfsstat4 hpr_status;
/// };
///
/// struct READ_PLUS4args {
/// /* CURRENT_FH: file */
/// stateid4 rpa_stateid;
/// offset4 rpa_offset;
/// count4 rpa_count;
/// };
/// struct read_plus_hole_info {
/// offset4 rphi_offset;
/// length4 rphi_length;
/// };
///
/// enum holeres4 {
/// HOLE_NOINFO = 0,
/// HOLE_INFO = 1
/// };
///
/// union read_plus_hole switch (holeres4 resop) {
/// case HOLE_INFO:
/// read_plus_hole_info rph_info;
/// case HOLE_NOINFO:
/// void;
/// };
///
/// enum read_plusrestype4 {
/// READ_OK = 0,
/// READ_HOLE = 1
/// };
///
/// union read_plus_data switch (read_plusrestype4 resop) {
/// case READ_OK:
/// opaque rpd_data<>;
/// case READ_HOLE:
/// read_plus_hole rpd_hole4;
/// };
///
/// struct READ_PLUS4resok {
/// bool rpr_eof;
/// read_plus_data rpr_data;
/// };
///
/// union READ_PLUS4res switch (nfsstat4 status) {
/// case NFS4_OK:
/// READ_PLUS4resok resok4;
/// default:
/// void;
/// };
/// /* /// /*
/// * Operation arrays /// * Operation arrays
/// */ /// */
/// ///
/// enum nfs_opnum4 { /// enum nfs_opnum4 {
/// OP_ACCESS = 3, /// OP_ACCESS = 3,
/// OP_CLOSE = 4, /// OP_CLOSE = 4,
/// OP_COMMIT = 5, /// OP_COMMIT = 5,
/// OP_CREATE = 6, /// OP_CREATE = 6,
/// OP_DELEGPURGE = 7, /// OP_DELEGPURGE = 7,
skipping to change at page 58, line 8 skipping to change at page 63, line 5
/// OP_LAYOUTCOMMIT = 49, /// OP_LAYOUTCOMMIT = 49,
/// OP_LAYOUTGET = 50, /// OP_LAYOUTGET = 50,
/// OP_LAYOUTRETURN = 51, /// OP_LAYOUTRETURN = 51,
/// OP_SECINFO_NO_NAME = 52, /// OP_SECINFO_NO_NAME = 52,
/// OP_SEQUENCE = 53, /// OP_SEQUENCE = 53,
/// OP_SET_SSV = 54, /// OP_SET_SSV = 54,
/// OP_TEST_STATEID = 55, /// OP_TEST_STATEID = 55,
/// OP_WANT_DELEGATION = 56, /// OP_WANT_DELEGATION = 56,
/// OP_DESTROY_CLIENTID = 57, /// OP_DESTROY_CLIENTID = 57,
/// OP_RECLAIM_COMPLETE = 58, /// OP_RECLAIM_COMPLETE = 58,
/// %
/// %/* new operations for NFSv4.2 */
/// %
/// OP_COPY = 59,
/// OP_COPY_ABORT = 60,
/// OP_COPY_NOTIFY = 61,
/// OP_COPY_REVOKE = 62,
/// OP_COPY_STATUS = 63,
/// OP_HOLE_PUNCH = 64,
/// OP_READ_PLUS = 65,
/// OP_ILLEGAL = 10044 /// OP_ILLEGAL = 10044
/// }; /// };
/// ///
/// union nfs_argop4 switch (nfs_opnum4 argop) { /// union nfs_argop4 switch (nfs_opnum4 argop) {
/// case OP_ACCESS: ACCESS4args opaccess; /// case OP_ACCESS: ACCESS4args opaccess;
/// case OP_CLOSE: CLOSE4args opclose; /// case OP_CLOSE: CLOSE4args opclose;
/// case OP_COMMIT: COMMIT4args opcommit; /// case OP_COMMIT: COMMIT4args opcommit;
/// case OP_CREATE: CREATE4args opcreate; /// case OP_CREATE: CREATE4args opcreate;
/// case OP_DELEGPURGE: DELEGPURGE4args opdelegpurge; /// case OP_DELEGPURGE: DELEGPURGE4args opdelegpurge;
/// case OP_DELEGRETURN: DELEGRETURN4args opdelegreturn; /// case OP_DELEGRETURN: DELEGRETURN4args opdelegreturn;
skipping to change at page 60, line 17 skipping to change at page 65, line 24
/// WANT_DELEGATION4args opwant_delegation; /// WANT_DELEGATION4args opwant_delegation;
/// ///
/// case OP_DESTROY_CLIENTID: /// case OP_DESTROY_CLIENTID:
/// DESTROY_CLIENTID4args /// DESTROY_CLIENTID4args
/// opdestroy_clientid; /// opdestroy_clientid;
/// ///
/// case OP_RECLAIM_COMPLETE: /// case OP_RECLAIM_COMPLETE:
/// RECLAIM_COMPLETE4args /// RECLAIM_COMPLETE4args
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4args opcopy_notify;
/// case OP_COPY_REVOKE: COPY_REVOKE4args opcopy_revoke;
/// case OP_COPY: COPY4args opcopy;
/// case OP_COPY_ABORT: COPY_ABORT4args opcopy_abort;
/// case OP_COPY_STATUS: COPY_STATUS4args opcopy_status;
/// case OP_HOLE_PUNCH: HOLE_PUNCH4args ophole_punch;
/// case OP_READ_PLUS: READ_PLUS4args opread_plus;
///
/// /* Operations not new to NFSv4.1 */ /// /* Operations not new to NFSv4.1 */
/// case OP_ILLEGAL: void; /// case OP_ILLEGAL: void;
/// }; /// };
/// ///
/// union nfs_resop4 switch (nfs_opnum4 resop) { /// union nfs_resop4 switch (nfs_opnum4 resop) {
/// case OP_ACCESS: ACCESS4res opaccess; /// case OP_ACCESS: ACCESS4res opaccess;
/// case OP_CLOSE: CLOSE4res opclose; /// case OP_CLOSE: CLOSE4res opclose;
/// case OP_COMMIT: COMMIT4res opcommit; /// case OP_COMMIT: COMMIT4res opcommit;
/// case OP_CREATE: CREATE4res opcreate; /// case OP_CREATE: CREATE4res opcreate;
/// case OP_DELEGPURGE: DELEGPURGE4res opdelegpurge; /// case OP_DELEGPURGE: DELEGPURGE4res opdelegpurge;
skipping to change at page 62, line 35 skipping to change at page 67, line 51
/// opwant_delegation; /// opwant_delegation;
/// ///
/// case OP_DESTROY_CLIENTID: /// case OP_DESTROY_CLIENTID:
/// DESTROY_CLIENTID4res /// DESTROY_CLIENTID4res
/// opdestroy_clientid; /// opdestroy_clientid;
/// ///
/// case OP_RECLAIM_COMPLETE: /// case OP_RECLAIM_COMPLETE:
/// RECLAIM_COMPLETE4res /// RECLAIM_COMPLETE4res
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.1 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4res opcopy_notify;
/// case OP_COPY_REVOKE: COPY_REVOKE4res opcopy_revoke;
/// case OP_COPY: COPY4res opcopy;
/// case OP_COPY_ABORT: COPY_ABORT4res opcopy_abort;
/// case OP_COPY_STATUS: COPY_STATUS4res opcopy_status;
/// case OP_HOLE_PUNCH: HOLE_PUNCH4res ophole_punch;
/// case OP_READ_PLUS: READ_PLUS4res opread_plus;
///
/// /* Operations not new to NFSv4.1 */ /// /* Operations not new to NFSv4.1 */
/// case OP_ILLEGAL: ILLEGAL4res opillegal; /// case OP_ILLEGAL: ILLEGAL4res opillegal;
/// }; /// };
/// ///
/// struct COMPOUND4args { /// struct COMPOUND4args {
/// utf8str_cs tag; /// utf8str_cs tag;
/// uint32_t minorversion; /// uint32_t minorversion;
/// nfs_argop4 argarray<>; /// nfs_argop4 argarray<>;
/// }; /// };
/// ///
skipping to change at page 69, line 5 skipping to change at page 74, line 30
/// }; /// };
/// ///
/// struct CB_NOTIFY_DEVICEID4args { /// struct CB_NOTIFY_DEVICEID4args {
/// notify4 cnda_changes<>; /// notify4 cnda_changes<>;
/// }; /// };
/// ///
/// struct CB_NOTIFY_DEVICEID4res { /// struct CB_NOTIFY_DEVICEID4res {
/// nfsstat4 cndr_status; /// nfsstat4 cndr_status;
/// }; /// };
/// ///
/// union copy_info4 switch (nfsstat4 cca_status) {
/// case NFS4_OK:
/// void;
/// default:
/// length4 cca_bytes_copied;
/// };
///
/// struct CB_COPY4args {
/// nfs_fh4 cca_fh;
/// stateid4 cca_stateid;
/// copy_info4 cca_copy_info;
/// };
/// struct CB_COPY4res {
/// nfsstat4 ccr_status;
/// };
/// /* /// /*
/// * Various definitions for CB_COMPOUND /// * Various definitions for CB_COMPOUND
/// */ /// */
/// % /// %
/// enum nfs_cb_opnum4 { /// enum nfs_cb_opnum4 {
/// OP_CB_GETATTR = 3, /// OP_CB_GETATTR = 3,
/// OP_CB_RECALL = 4, /// OP_CB_RECALL = 4,
/// %/* Callback operations new to NFSv4.1 */ /// %/* Callback operations new to NFSv4.1 */
/// OP_CB_LAYOUTRECALL = 5, /// OP_CB_LAYOUTRECALL = 5,
/// OP_CB_NOTIFY = 6, /// OP_CB_NOTIFY = 6,
/// OP_CB_PUSH_DELEG = 7, /// OP_CB_PUSH_DELEG = 7,
/// OP_CB_RECALL_ANY = 8, /// OP_CB_RECALL_ANY = 8,
/// OP_CB_RECALLABLE_OBJ_AVAIL = 9, /// OP_CB_RECALLABLE_OBJ_AVAIL = 9,
/// OP_CB_RECALL_SLOT = 10, /// OP_CB_RECALL_SLOT = 10,
/// OP_CB_SEQUENCE = 11, /// OP_CB_SEQUENCE = 11,
/// OP_CB_WANTS_CANCELLED = 12, /// OP_CB_WANTS_CANCELLED = 12,
/// OP_CB_NOTIFY_LOCK = 13, /// OP_CB_NOTIFY_LOCK = 13,
/// OP_CB_NOTIFY_DEVICEID = 14, /// OP_CB_NOTIFY_DEVICEID = 14,
/// %/* Callback operations new to NFSv4.2 */
/// OP_CB_COPY = 15,
/// ///
/// OP_CB_ILLEGAL = 10044 /// OP_CB_ILLEGAL = 10044
/// }; /// };
/// ///
/// union nfs_cb_argop4 switch (unsigned argop) { /// union nfs_cb_argop4 switch (unsigned argop) {
/// case OP_CB_GETATTR: /// case OP_CB_GETATTR:
/// CB_GETATTR4args opcbgetattr; /// CB_GETATTR4args opcbgetattr;
///
/// /* new NFSv4.1 operations */
/// case OP_CB_RECALL: /// case OP_CB_RECALL:
/// CB_RECALL4args opcbrecall; /// CB_RECALL4args opcbrecall;
/// case OP_CB_LAYOUTRECALL: /// case OP_CB_LAYOUTRECALL:
/// CB_LAYOUTRECALL4args opcblayoutrecall; /// CB_LAYOUTRECALL4args opcblayoutrecall;
/// case OP_CB_NOTIFY: /// case OP_CB_NOTIFY:
/// CB_NOTIFY4args opcbnotify; /// CB_NOTIFY4args opcbnotify;
/// case OP_CB_PUSH_DELEG: /// case OP_CB_PUSH_DELEG:
/// CB_PUSH_DELEG4args opcbpush_deleg; /// CB_PUSH_DELEG4args opcbpush_deleg;
/// case OP_CB_RECALL_ANY: /// case OP_CB_RECALL_ANY:
/// CB_RECALL_ANY4args opcbrecall_any; /// CB_RECALL_ANY4args opcbrecall_any;
skipping to change at page 70, line 4 skipping to change at page 75, line 48
/// case OP_CB_RECALL_SLOT: /// case OP_CB_RECALL_SLOT:
/// CB_RECALL_SLOT4args opcbrecall_slot; /// CB_RECALL_SLOT4args opcbrecall_slot;
/// case OP_CB_SEQUENCE: /// case OP_CB_SEQUENCE:
/// CB_SEQUENCE4args opcbsequence; /// CB_SEQUENCE4args opcbsequence;
/// case OP_CB_WANTS_CANCELLED: /// case OP_CB_WANTS_CANCELLED:
/// CB_WANTS_CANCELLED4args opcbwants_cancelled; /// CB_WANTS_CANCELLED4args opcbwants_cancelled;
/// case OP_CB_NOTIFY_LOCK: /// case OP_CB_NOTIFY_LOCK:
/// CB_NOTIFY_LOCK4args opcbnotify_lock; /// CB_NOTIFY_LOCK4args opcbnotify_lock;
/// case OP_CB_NOTIFY_DEVICEID: /// case OP_CB_NOTIFY_DEVICEID:
/// CB_NOTIFY_DEVICEID4args opcbnotify_deviceid; /// CB_NOTIFY_DEVICEID4args opcbnotify_deviceid;
///
/// /* new NFSv4.2 operations */
/// case OP_CB_COPY:
/// CB_COPY4args opcbcopy;
///
/// case OP_CB_ILLEGAL: void; /// case OP_CB_ILLEGAL: void;
/// }; /// };
/// ///
/// union nfs_cb_resop4 switch (unsigned resop) { /// union nfs_cb_resop4 switch (unsigned resop) {
/// case OP_CB_GETATTR: CB_GETATTR4res opcbgetattr; /// case OP_CB_GETATTR: CB_GETATTR4res opcbgetattr;
/// case OP_CB_RECALL: CB_RECALL4res opcbrecall; /// case OP_CB_RECALL: CB_RECALL4res opcbrecall;
/// ///
/// /* new NFSv4.1 operations */ /// /* new NFSv4.1 operations */
/// case OP_CB_LAYOUTRECALL: /// case OP_CB_LAYOUTRECALL:
/// CB_LAYOUTRECALL4res /// CB_LAYOUTRECALL4res
skipping to change at page 70, line 46 skipping to change at page 76, line 47
/// opcbwants_cancelled; /// opcbwants_cancelled;
/// ///
/// case OP_CB_NOTIFY_LOCK: /// case OP_CB_NOTIFY_LOCK:
/// CB_NOTIFY_LOCK4res /// CB_NOTIFY_LOCK4res
/// opcbnotify_lock; /// opcbnotify_lock;
/// ///
/// case OP_CB_NOTIFY_DEVICEID: /// case OP_CB_NOTIFY_DEVICEID:
/// CB_NOTIFY_DEVICEID4res /// CB_NOTIFY_DEVICEID4res
/// opcbnotify_deviceid; /// opcbnotify_deviceid;
/// ///
/// /* new NFSv4.2 operations */
/// case OP_CB_COPY: CB_COPY4res opcbcopy;
///
/// /* Not new operation */ /// /* Not new operation */
/// case OP_CB_ILLEGAL: CB_ILLEGAL4res opcbillegal; /// case OP_CB_ILLEGAL: CB_ILLEGAL4res opcbillegal;
/// }; /// };
/// ///
/// ///
/// struct CB_COMPOUND4args { /// struct CB_COMPOUND4args {
/// utf8str_cs tag; /// utf8str_cs tag;
/// uint32_t minorversion; /// uint32_t minorversion;
/// uint32_t callback_ident; /// uint32_t callback_ident;
/// nfs_cb_argop4 argarray<>; /// nfs_cb_argop4 argarray<>;
skipping to change at page 71, line 48 skipping to change at page 78, line 8
See the IANA Considerations section of [3]. See the IANA Considerations section of [3].
4. Normative References 4. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", March 1997. Levels", March 1997.
[2] Eisler, M., "XDR: External Data Representation Standard", [2] Eisler, M., "XDR: External Data Representation Standard",
STD 67, RFC 4506, May 2006. STD 67, RFC 4506, May 2006.
[3] Haynes, T., "NFS Version 4 Minor Version 2", Mar 2011. [3] Haynes, T., "NFS Version 4 Minor Version 2",
draft-ietf-nfsv4-minorversion2-00 (Work In Progress),
March 2011.
Author's Address Author's Address
Thomas Haynes Thomas Haynes
NetApp NetApp
9110 E 66th St 9110 E 66th St
Tulsa, OK 74133 Tulsa, OK 74133
USA USA
Phone: +1-918-307-1415 Phone: +1-918-307-1415
 End of changes. 54 change blocks. 
71 lines changed or deleted 359 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/