draft-ietf-nfsv4-minorversion2-dot-x-22.txt   draft-ietf-nfsv4-minorversion2-dot-x-23.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Primary Data Internet-Draft Primary Data
Intended status: Standards Track April 13, 2014 Intended status: Standards Track April 29, 2014
Expires: October 15, 2014 Expires: October 31, 2014
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-22.txt draft-ietf-nfsv4-minorversion2-dot-x-23.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
skipping to change at page 1, line 38 skipping to change at page 1, line 38
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. 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."
This Internet-Draft will expire on October 15, 2014. This Internet-Draft will expire on October 31, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 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
skipping to change at page 2, line 16 skipping to change at page 2, line 16
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . 2 1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . 2
2. Security Considerations . . . . . . . . . . . . . . . . . . . 79 2. Security Considerations . . . . . . . . . . . . . . . . . . . 79
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79
4. Normative References . . . . . . . . . . . . . . . . . . . . 79 4. Normative References . . . . . . . . . . . . . . . . . . . . 79
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 79 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 79
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 79 Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 80
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 80 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 80
1. XDR Description of NFSv4.2 1. XDR Description of NFSv4.2
This document contains the XDR ([RFC4506]) description of NFSv4.2 This document contains the XDR ([RFC4506]) description of NFSv4.2
protocol ([NFSv42]). In order to facilitate implementations that protocol ([NFSv42]). In order to facilitate implementations that
support all of NFSv4.0, NFSv4.1, and NFSv4.2, the description support all of NFSv4.0, NFSv4.1, and NFSv4.2, the description
includes operations, and other features of NFSv4.0 and NFSv4.1 that includes operations, and other features of NFSv4.0 and NFSv4.1 that
do not apply to NFSv4.2. do not apply to NFSv4.2.
skipping to change at page 2, line 48 skipping to change at page 2, line 48
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-22 /// * draft-ietf-nfsv4-minorversion2-23
/// * Last updated Sun Apr 13 23:24:25 PDT 2014 /// * Last updated Tue Apr 29 14:45:32 PDT 2014
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2007-2012) /// * Copyright (C) The IETF Trust (2007-2014)
/// * 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.
/// */ /// */
/// ///
/// /* /// /*
/// * nfsv42.x /// * nfsv42.x
/// */ /// */
/// ///
skipping to change at page 3, line 37 skipping to change at page 3, line 37
/// * 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;
/// */ /// */
/// ///
/// /* /// /*
/// * Sizes /// * Sizes
/// */ /// */
/// const NFS4_FHSIZE = 128; /// const NFS4_FHSIZE = 128;
/// const NFS4_VERIFIER_SIZE = 8; /// const NFS4_VERIFIER_SIZE = 8;
/// const NFS4_OTHER_SIZE = 12;
/// const NFS4_OPAQUE_LIMIT = 1024; /// const NFS4_OPAQUE_LIMIT = 1024;
/// const NFS4_SESSIONID_SIZE = 16; /// const NFS4_SESSIONID_SIZE = 16;
/// ///
/// const NFS4_INT64_MAX = 0x7fffffffffffffff; /// const NFS4_INT64_MAX = 0x7fffffffffffffff;
/// const NFS4_UINT64_MAX = 0xffffffffffffffff; /// const NFS4_UINT64_MAX = 0xffffffffffffffff;
/// const NFS4_INT32_MAX = 0x7fffffff; /// const NFS4_INT32_MAX = 0x7fffffff;
/// const NFS4_UINT32_MAX = 0xffffffff; /// const NFS4_UINT32_MAX = 0xffffffff;
/// ///
/// const NFS4_MAXFILELEN = 0xffffffffffffffff; /// const NFS4_MAXFILELEN = 0xffffffffffffffff;
/// const NFS4_MAXFILEOFF = 0xfffffffffffffffe; /// const NFS4_MAXFILEOFF = 0xfffffffffffffffe;
skipping to change at page 7, line 31 skipping to change at page 7, line 32
/// typedef opaque sec_oid4<>; /// typedef opaque sec_oid4<>;
/// typedef uint32_t sequenceid4; /// typedef uint32_t sequenceid4;
/// typedef uint32_t seqid4; /// typedef uint32_t seqid4;
/// 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 opaque linktext4<>;
/// typedef utf8string ascii_REQUIRED4;
/// typedef component4 pathname4<>; /// typedef component4 pathname4<>;
/// typedef opaque verifier4[NFS4_VERIFIER_SIZE]; /// typedef opaque verifier4[NFS4_VERIFIER_SIZE];
/// typedef string secret4<>; /// typedef string secret4<>;
/// typedef uint32_t policy4; /// typedef uint32_t policy4;
/// typedef uint64_t change_sec_label4; /// typedef uint64_t change_sec_label4;
/// ///
/// /* /// /*
/// * Timeval /// * Timeval
/// */ /// */
/// struct nfstime4 { /// struct nfstime4 {
skipping to change at page 13, line 23 skipping to change at page 13, line 25
/// utf8str_cs nii_name; /// utf8str_cs nii_name;
/// nfstime4 nii_date; /// nfstime4 nii_date;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Stateid /// * Stateid
/// */ /// */
/// struct stateid4 { /// struct stateid4 {
/// uint32_t seqid; /// uint32_t seqid;
/// opaque other[12]; /// opaque other[NFS4_OTHER_SIZE];
/// }; /// };
/// ///
/// enum layouttype4 { /// enum layouttype4 {
/// LAYOUT4_NFSV4_1_FILES = 0x1, /// LAYOUT4_NFSV4_1_FILES = 0x1,
/// LAYOUT4_OSD2_OBJECTS = 0x2, /// LAYOUT4_OSD2_OBJECTS = 0x2,
/// LAYOUT4_BLOCK_VOLUME = 0x3 /// LAYOUT4_BLOCK_VOLUME = 0x3
/// }; /// };
/// ///
/// struct layout_content4 { /// struct layout_content4 {
/// layouttype4 loc_type; /// layouttype4 loc_type;
skipping to change at page 17, line 23 skipping to change at page 17, line 25
/// struct copy_to_auth_priv { /// struct copy_to_auth_priv {
/// /* equal to cfap_shared_secret */ /// /* equal to cfap_shared_secret */
/// secret4 ctap_shared_secret; /// secret4 ctap_shared_secret;
/// netloc4 ctap_source; /// netloc4 ctap_source;
/// /* the NFSv4 user name that the user principal maps to */ /// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed ctap_username; /// utf8str_mixed ctap_username;
/// /* /// /*
/// * user principal RPCSEC_GSSv1 (or v2) handle shared /// * user principal RPCSEC_GSSv1 (or v2) handle shared
/// * with the source server /// * with the source server
/// */ /// */
/// opaque ctap_handle; /// opaque ctap_handle<>;
/// int ctap_handle_vers; /// int ctap_handle_vers;
/// /* A nounce and a mic of the nounce using ctap_handle */ /// /* A nounce and a mic of the nounce using ctap_handle */
/// opaque ctap_nounce; /// opaque ctap_nounce<>;
/// opaque ctap_nounce_mic; /// opaque ctap_nounce_mic<>;
/// }; /// };
/// ///
/// struct copy_confirm_auth_priv { /// struct copy_confirm_auth_priv {
/// /* equal to GSS_GetMIC() of cfap_shared_secret */ /// /* equal to GSS_GetMIC() of cfap_shared_secret */
/// opaque ccap_shared_secret_mic<>; /// opaque ccap_shared_secret_mic<>;
/// /* the NFSv4 user name that the user principal maps to */ /// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed ccap_username; /// utf8str_mixed ccap_username;
/// }; /// };
/// ///
/// ///
/// struct app_data_hole4 { /// struct app_data_block4 {
/// offset4 adh_offset; /// offset4 adb_offset;
/// length4 adh_block_size; /// length4 adb_block_size;
/// length4 adh_block_count; /// length4 adb_block_count;
/// length4 adh_reloff_blocknum; /// length4 adb_reloff_blocknum;
/// count4 adh_block_num; /// count4 adb_block_num;
/// length4 adh_reloff_pattern; /// length4 adb_reloff_pattern;
/// opaque adh_pattern<>; /// opaque adb_pattern<>;
/// }; /// };
/// ///
/// ///
/// struct data4 { /// struct data4 {
/// offset4 d_offset; /// offset4 d_offset;
/// bool d_allocated; /// bool d_allocated;
/// opaque d_data<>; /// opaque d_data<>;
/// }; /// };
/// ///
/// enum space_info4 {
/// SPACE_RESERVED4 = 0,
/// SPACE_UNRESERVED4 = 1,
/// SPACE_UNKNOWN4 = 2
/// };
/// ///
/// struct data_info4 { /// struct data_info4 {
/// offset4 di_offset; /// offset4 di_offset;
/// length4 di_length; /// length4 di_length;
/// bool di_allocated; /// space_info4 di_reserved;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Use an enum such that we can extend new types. /// * Use an enum such that we can extend new types.
/// */ /// */
/// enum data_content4 { /// enum data_content4 {
/// NFS4_CONTENT_DATA = 0, /// NFS4_CONTENT_DATA = 0,
/// NFS4_CONTENT_APP_DATA_HOLE = 1, /// NFS4_CONTENT_HOLE = 1
/// NFS4_CONTENT_HOLE = 2
/// }; /// };
/// ///
/// ///
/// ///
/// enum stable_how4 { /// enum stable_how4 {
/// UNSTABLE4 = 0, /// UNSTABLE4 = 0,
/// DATA_SYNC4 = 1, /// DATA_SYNC4 = 1,
/// FILE_SYNC4 = 2 /// FILE_SYNC4 = 2
/// }; /// };
/// ///
skipping to change at page 19, line 29 skipping to change at page 19, line 35
/// typedef uint64_t fattr4_files_free; /// typedef uint64_t fattr4_files_free;
/// typedef uint64_t fattr4_files_total; /// typedef uint64_t fattr4_files_total;
/// typedef fs_locations4 fattr4_fs_locations; /// typedef fs_locations4 fattr4_fs_locations;
/// typedef bool fattr4_hidden; /// typedef bool fattr4_hidden;
/// typedef bool fattr4_homogeneous; /// typedef bool fattr4_homogeneous;
/// typedef uint64_t fattr4_maxfilesize; /// typedef uint64_t fattr4_maxfilesize;
/// typedef uint32_t fattr4_maxlink; /// typedef uint32_t fattr4_maxlink;
/// typedef uint32_t fattr4_maxname; /// typedef uint32_t fattr4_maxname;
/// typedef uint64_t fattr4_maxread; /// typedef uint64_t fattr4_maxread;
/// typedef uint64_t fattr4_maxwrite; /// typedef uint64_t fattr4_maxwrite;
/// typedef utf8str_cs fattr4_mimetype; /// typedef ascii_REQUIRED4 fattr4_mimetype;
/// typedef mode4 fattr4_mode; /// typedef mode4 fattr4_mode;
/// typedef mode_masked4 fattr4_mode_set_masked; /// typedef mode_masked4 fattr4_mode_set_masked;
/// typedef uint64_t fattr4_mounted_on_fileid; /// typedef uint64_t fattr4_mounted_on_fileid;
/// typedef bool fattr4_no_trunc; /// typedef bool fattr4_no_trunc;
/// typedef uint32_t fattr4_numlinks; /// typedef uint32_t fattr4_numlinks;
/// typedef utf8str_mixed fattr4_owner; /// typedef utf8str_mixed fattr4_owner;
/// typedef utf8str_mixed fattr4_owner_group; /// typedef utf8str_mixed fattr4_owner_group;
/// typedef uint64_t fattr4_quota_avail_hard; /// typedef uint64_t fattr4_quota_avail_hard;
/// typedef uint64_t fattr4_quota_avail_soft; /// typedef uint64_t fattr4_quota_avail_soft;
/// typedef uint64_t fattr4_quota_used; /// typedef uint64_t fattr4_quota_used;
skipping to change at page 20, line 31 skipping to change at page 20, line 37
/// 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; /// typedef change_policy4 fattr4_change_policy;
/// /* /// /*
/// * attributes new to NFSv4.2 /// * attributes new to NFSv4.2
/// */ /// */
/// typedef bool fattr_space_reserved;
/// typedef uint64_t fattr_space_freed; /// typedef uint64_t fattr_space_freed;
/// typedef change_attr_type4 /// typedef change_attr_type4
/// fattr4_change_attr_type; /// fattr4_change_attr_type;
/// typedef sec_label4 fattr_sec_label<>; /// typedef sec_label4 fattr_sec_label<>;
/// ///
/// %/* /// %/*
/// % * REQUIRED Attributes /// % * REQUIRED Attributes
/// % */ /// % */
/// const FATTR4_SUPPORTED_ATTRS = 0; /// const FATTR4_SUPPORTED_ATTRS = 0;
/// const FATTR4_TYPE = 1; /// const FATTR4_TYPE = 1;
skipping to change at page 22, line 37 skipping to change at page 22, line 42
/// 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_CHANGE_SEC_LABEL = 77;
/// const FATTR4_SPACE_FREED = 78; /// const FATTR4_SPACE_FREED = 78;
/// const FATTR4_CHANGE_ATTR_TYPE = 79; /// const FATTR4_CHANGE_ATTR_TYPE = 79;
/// const FATTR4_SEC_LABEL = 80; /// const FATTR4_SEC_LABEL = 80;
/// const FATTR4_CHANGE_SEC_LABEL = 81;
/// ///
/// /* /// /*
/// * 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 59, line 45 skipping to change at page 59, line 49
/// nfsstat4 osr_complete<1>; /// nfsstat4 osr_complete<1>;
/// }; /// };
/// ///
/// union OFFLOAD_STATUS4res switch (nfsstat4 osr_status) { /// union OFFLOAD_STATUS4res switch (nfsstat4 osr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// OFFLOAD_STATUS4resok osr_resok4; /// OFFLOAD_STATUS4resok osr_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// /// struct ALLOCATE4args {
/// struct WRITE_HOLE4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 wh_stateid; /// stateid4 aa_stateid;
/// stable_how4 wh_stable; /// offset4 aa_offset;
/// data_info4 wh_hole; /// length4 aa_length;
/// };
/// struct ALLOCATE4res {
/// nfsstat4 ar_status;
/// }; /// };
/// ///
/// /// struct DEALLOCATE4args {
/// union WRITE_HOLE4res switch (nfsstat4 wh_status) { /// /* CURRENT_FH: file */
/// case NFS4_OK: /// stateid4 da_stateid;
/// write_response4 wh_resok4; /// offset4 da_offset;
/// default: /// length4 da_length;
/// void;
/// }; /// };
/// ///
/// struct DEALLOCATE4res {
/// nfsstat4 dr_status;
/// };
/// enum IO_ADVISE_type4 { /// enum IO_ADVISE_type4 {
/// IO_ADVISE4_NORMAL = 0, /// IO_ADVISE4_NORMAL = 0,
/// IO_ADVISE4_SEQUENTIAL = 1, /// IO_ADVISE4_SEQUENTIAL = 1,
/// IO_ADVISE4_SEQUENTIAL_BACKWARDS = 2, /// IO_ADVISE4_SEQUENTIAL_BACKWARDS = 2,
/// IO_ADVISE4_RANDOM = 3, /// IO_ADVISE4_RANDOM = 3,
/// IO_ADVISE4_WILLNEED = 4, /// IO_ADVISE4_WILLNEED = 4,
/// IO_ADVISE4_WILLNEED_OPPORTUNISTIC = 5, /// IO_ADVISE4_WILLNEED_OPPORTUNISTIC = 5,
/// IO_ADVISE4_DONTNEED = 6, /// IO_ADVISE4_DONTNEED = 6,
/// IO_ADVISE4_NOREUSE = 7, /// IO_ADVISE4_NOREUSE = 7,
/// IO_ADVISE4_READ = 8, /// IO_ADVISE4_READ = 8,
skipping to change at page 61, line 8 skipping to change at page 61, line 16
/// struct READ_PLUS4args { /// struct READ_PLUS4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 rpa_stateid; /// stateid4 rpa_stateid;
/// offset4 rpa_offset; /// offset4 rpa_offset;
/// count4 rpa_count; /// count4 rpa_count;
/// }; /// };
/// ///
/// union read_plus_content switch (data_content4 rpc_content) { /// union read_plus_content switch (data_content4 rpc_content) {
/// case NFS4_CONTENT_DATA: /// case NFS4_CONTENT_DATA:
/// data4 rpc_data; /// data4 rpc_data;
/// case NFS4_CONTENT_APP_DATA_HOLE:
/// app_data_hole4 rpc_adh;
/// case NFS4_CONTENT_HOLE: /// case NFS4_CONTENT_HOLE:
/// data_info4 rpc_hole; /// data_info4 rpc_hole;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// /* /// /*
/// * Allow a return of an array of contents. /// * Allow a return of an array of contents.
/// */ /// */
/// struct read_plus_res4 { /// struct read_plus_res4 {
skipping to change at page 61, line 41 skipping to change at page 61, line 47
/// struct SEEK4args { /// struct SEEK4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 sa_stateid; /// stateid4 sa_stateid;
/// offset4 sa_offset; /// offset4 sa_offset;
/// data_content4 sa_what; /// data_content4 sa_what;
/// }; /// };
/// ///
/// union seek_content switch (data_content4 content) { /// union seek_content switch (data_content4 content) {
/// case NFS4_CONTENT_DATA: /// case NFS4_CONTENT_DATA:
/// data_info4 sc_data; /// data_info4 sc_data;
/// case NFS4_CONTENT_APP_DATA_HOLE:
/// app_data_hole4 sc_adh;
/// case NFS4_CONTENT_HOLE: /// case NFS4_CONTENT_HOLE:
/// data_info4 sc_hole; /// data_info4 sc_hole;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct seek_res4 { /// struct seek_res4 {
/// bool sr_eof; /// bool sr_eof;
/// seek_content sr_contents; /// seek_content sr_contents;
/// }; /// };
skipping to change at page 62, line 17 skipping to change at page 62, line 21
/// case NFS4_OK: /// case NFS4_OK:
/// seek_res4 resok4; /// seek_res4 resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct WRITE_SAME4args { /// struct WRITE_SAME4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 ws_stateid; /// stateid4 ws_stateid;
/// stable_how4 ws_stable; /// stable_how4 ws_stable;
/// app_data_hole4 ws_adh; /// app_data_block4 ws_adb;
/// }; /// };
/// ///
/// ///
/// union WRITE_SAME4res switch (nfsstat4 ws_status) { /// union WRITE_SAME4res switch (nfsstat4 ws_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// write_response4 ws_resok4; /// write_response4 ws_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
skipping to change at page 63, line 48 skipping to change at page 64, line 4
/// 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 */ /// %/* new operations for NFSv4.2 */
/// % /// %
/// OP_COPY = 59, /// OP_ALLOCATE = 59,
/// OP_OFFLOAD_ABORT = 60, /// OP_COPY = 60,
/// OP_COPY_NOTIFY = 61, /// OP_COPY_NOTIFY = 61,
/// OP_OFFLOAD_REVOKE = 62, /// OP_DEALLOCATE = 62,
/// OP_OFFLOAD_STATUS = 63, /// OP_IO_ADVISE = 63,
/// OP_WRITE_HOLE = 64, /// OP_OFFLOAD_ABORT = 64,
/// OP_READ_PLUS = 65, /// OP_OFFLOAD_REVOKE = 65,
/// OP_SEEK = 66, /// OP_OFFLOAD_STATUS = 66,
/// OP_IO_ADVISE = 67, /// OP_READ_PLUS = 67,
/// OP_WRITE_SAME = 68, /// OP_SEEK = 68,
/// OP_WRITE_SAME = 69,
/// 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 66, line 25 skipping to change at page 66, line 30
/// case OP_RECLAIM_COMPLETE: /// case OP_RECLAIM_COMPLETE:
/// RECLAIM_COMPLETE4args /// RECLAIM_COMPLETE4args
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.2 */ /// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4args opoffload_notify; /// case OP_COPY_NOTIFY: COPY_NOTIFY4args opoffload_notify;
/// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4args opcopy_revoke; /// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4args opcopy_revoke;
/// case OP_COPY: COPY4args opcopy; /// case OP_COPY: COPY4args opcopy;
/// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4args opoffload_abort; /// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4args opoffload_abort;
/// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4args opoffload_status; /// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4args opoffload_status;
/// case OP_WRITE_HOLE: WRITE_HOLE4args opwrite_hole;
/// case OP_READ_PLUS: READ_PLUS4args opread_plus; /// case OP_READ_PLUS: READ_PLUS4args opread_plus;
/// case OP_SEEK: SEEK4args opseek; /// case OP_SEEK: SEEK4args opseek;
/// case OP_IO_ADVISE: IO_ADVISE4args opio_advise; /// case OP_IO_ADVISE: IO_ADVISE4args opio_advise;
/// case OP_WRITE_SAME: WRITE_SAME4args opwrite_same; /// case OP_WRITE_SAME: WRITE_SAME4args opwrite_same;
/// case OP_ALLOCATE: ALLOCATE4args opallocate;
/// case OP_DEALLOCATE: DEALLOCATE4args opdeallocate;
/// ///
/// /* 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;
skipping to change at page 68, line 46 skipping to change at page 69, line 4
/// ///
/// case OP_WANT_DELEGATION: /// case OP_WANT_DELEGATION:
/// WANT_DELEGATION4res /// WANT_DELEGATION4res
/// 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.2 */ /// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4res opcopy_notify; /// case OP_COPY_NOTIFY: COPY_NOTIFY4res opcopy_notify;
/// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4res opoffload_revoke; /// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4res opoffload_revoke;
/// case OP_COPY: COPY4res opcopy; /// case OP_COPY: COPY4res opcopy;
/// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4res opoffload_abort; /// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4res opoffload_abort;
/// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4res opoffload_status; /// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4res opoffload_status;
/// case OP_WRITE_HOLE: WRITE_HOLE4res opwrite_hole;
/// case OP_READ_PLUS: READ_PLUS4res opread_plus; /// case OP_READ_PLUS: READ_PLUS4res opread_plus;
/// case OP_SEEK: SEEK4res opseek; /// case OP_SEEK: SEEK4res opseek;
/// case OP_IO_ADVISE: IO_ADVISE4res opio_advise; /// case OP_IO_ADVISE: IO_ADVISE4res opio_advise;
/// case OP_WRITE_SAME: WRITE_SAME4res opwrite_same; /// case OP_WRITE_SAME: WRITE_SAME4res opwrite_same;
/// case OP_ALLOCATE: ALLOCATE4res opallocate;
/// case OP_DEALLOCATE: DEALLOCATE4res opdeallocate;
/// ///
/// /* 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<>;
/// }; /// };
 End of changes. 33 change blocks. 
55 lines changed or deleted 63 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/