draft-ietf-nfsv4-minorversion2-dot-x-05.txt   draft-ietf-nfsv4-minorversion2-dot-x-06.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Editors
Intended status: Standards Track September 06, 2011 Intended status: Standards Track November 14, 2011
Expires: March 9, 2012 Expires: May 17, 2012
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-05.txt draft-ietf-nfsv4-minorversion2-dot-x-06.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 March 9, 2012. This Internet-Draft will expire on May 17, 2012.
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
skipping to change at page 3, line 8 skipping to change at page 3, line 8
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 . . . . . . . . . . . . . . . . . . 4 1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 4
2. Security Considerations . . . . . . . . . . . . . . . . . . . 79 2. Security Considerations . . . . . . . . . . . . . . . . . . . 81
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 81
4. Normative References . . . . . . . . . . . . . . . . . . . . . 79 4. Normative References . . . . . . . . . . . . . . . . . . . . . 81
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 80 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 81
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-05 /// * draft-ietf-nfsv4-minorversion2-06
/// * Last updated Tue Sep 6 13:39:39 CDT 2011 /// * Last updated Mon Nov 14 10:45:33 CST 2011
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2007-2011) /// * Copyright (C) The IETF Trust (2007-2011)
/// * 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.
/// */ /// */
/// ///
/// /* /// /*
skipping to change at page 19, line 32 skipping to change at page 19, line 32
/// offset4 adb_offset; /// offset4 adb_offset;
/// length4 adb_block_size; /// length4 adb_block_size;
/// length4 adb_block_count; /// length4 adb_block_count;
/// length4 adb_reloff_blocknum; /// length4 adb_reloff_blocknum;
/// count4 adb_block_num; /// count4 adb_block_num;
/// length4 adb_reloff_pattern; /// length4 adb_reloff_pattern;
/// opaque adb_pattern<>; /// opaque adb_pattern<>;
/// }; /// };
/// ///
/// ///
/// struct hole_info4 { /// struct data_info4 {
/// offset4 hi_offset; /// offset4 di_offset;
/// length4 hi_length; /// length4 di_length;
/// bool di_allocated;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * 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_BLOCK = 1, /// NFS4_CONTENT_APP_BLOCK = 1,
/// NFS4_CONTENT_HOLE = 2 /// NFS4_CONTENT_HOLE = 2
skipping to change at page 21, line 39 skipping to change at page 21, line 40
/// 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 bool fattr_space_reserved;
/// typedef uint64_t fattr_space_freed; /// typedef uint64_t fattr_space_freed;
/// typedef uint64_t fattr_max_hole_punch;
/// typedef change_attr_typeinfo /// typedef change_attr_typeinfo
/// fattr4_change_attr_type; /// fattr4_change_attr_type;
/// typedef sec_label_attr_info /// typedef sec_label_attr_info
/// fattr_sec_label<>; /// 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 23, line 47 skipping to change at page 23, line 47
/// 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_RESERVED = 77;
/// const FATTR4_SPACE_FREED = 78; /// const FATTR4_SPACE_FREED = 78;
/// const FATTR4_MAX_HOLE_PUNCH = 79; /// const FATTR4_CHANGE_ATTR_TYPE = 79;
/// const FATTR4_CHANGE_ATTR_TYPE = 80; /// const FATTR4_SEC_LABEL = 80;
/// const FATTR4_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 27, line 47 skipping to change at page 27, line 46
/// fs_locations_item4 fli_items<>; /// fs_locations_item4 fli_items<>;
/// }; /// };
/// ///
/// /* /// /*
/// * Flag bits in fli_flags. /// * Flag bits in fli_flags.
/// */ /// */
/// const FSLI4IF_VAR_SUB = 0x00000001; /// const FSLI4IF_VAR_SUB = 0x00000001;
/// ///
/// typedef fs_locations_info4 fattr4_fs_locations_info; /// typedef fs_locations_info4 fattr4_fs_locations_info;
/// ///
/// const NFL4_UFLG_MASK = 0x0000003F; /// const NFL4_UFLG_MASK = 0x0000003F;
/// const NFL4_UFLG_DENSE = 0x00000001; /// const NFL4_UFLG_DENSE = 0x00000001;
/// const NFL4_UFLG_COMMIT_THRU_MDS = 0x00000002; /// const NFL4_UFLG_COMMIT_THRU_MDS = 0x00000002;
/// const NFL4_UFLG_STRIPE_UNIT_SIZE_MASK /// const NFL42_UFLG_IO_ADVISE_THRU_MDS = 0x00000004;
/// = 0xFFFFFFC0; /// const NFL4_UFLG_STRIPE_UNIT_SIZE_MASK = 0xFFFFFFC0;
/// ///
/// typedef uint32_t nfl_util4; /// typedef uint32_t nfl_util4;
/// ///
/// % /// %
/// ///
/// enum filelayout_hint_care4 { /// enum filelayout_hint_care4 {
/// NFLH4_CARE_DENSE = NFL4_UFLG_DENSE, /// NFLH4_CARE_DENSE = NFL4_UFLG_DENSE,
/// ///
/// NFLH4_CARE_COMMIT_THRU_MDS /// NFLH4_CARE_COMMIT_THRU_MDS
/// = NFL4_UFLG_COMMIT_THRU_MDS, /// = NFL4_UFLG_COMMIT_THRU_MDS,
/// ///
/// NFL42_CARE_IO_ADVISE_THRU_MDS
/// = NFL42_UFLG_IO_ADVISE_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 data type layouthint4: /// % * Encoded in the loh_body field of data type layouthint4:
/// %*/ /// %*/
/// % /// %
skipping to change at page 29, line 32 skipping to change at page 29, line 34
/// uint32_t access; /// uint32_t access;
/// }; /// };
/// ///
/// struct ACCESS4resok { /// struct ACCESS4resok {
/// uint32_t supported; /// uint32_t supported;
/// uint32_t access; /// uint32_t access;
/// }; /// };
/// ///
/// union ACCESS4res switch (nfsstat4 status) { /// union ACCESS4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// ACCESS4resok resok4; /// ACCESS4resok resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct CLOSE4args { /// struct CLOSE4args {
/// /* CURRENT_FH: object */ /// /* CURRENT_FH: object */
/// seqid4 seqid; /// seqid4 seqid;
/// stateid4 open_stateid; /// stateid4 open_stateid;
/// }; /// };
/// ///
/// union CLOSE4res switch (nfsstat4 status) { /// union CLOSE4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
skipping to change at page 61, line 22 skipping to change at page 61, line 24
/// ///
/// /* /// /*
/// * We use data_content4 in case we wish to /// * We use data_content4 in case we wish to
/// * extend new types later. Note that we /// * extend new types later. Note that we
/// * are explicitly disallowing data. /// * are explicitly disallowing data.
/// */ /// */
/// union initialize_arg4 switch (data_content4 content) { /// union initialize_arg4 switch (data_content4 content) {
/// case NFS4_CONTENT_APP_BLOCK: /// case NFS4_CONTENT_APP_BLOCK:
/// app_data_block4 ia_adb; /// app_data_block4 ia_adb;
/// case NFS4_CONTENT_HOLE: /// case NFS4_CONTENT_HOLE:
/// hole_info4 ia_hole; /// data_info4 ia_hole;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct INITIALIZE4args { /// struct INITIALIZE4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 ia_stateid; /// stateid4 ia_stateid;
/// stable_how4 ia_stable; /// stable_how4 ia_stable;
/// initialize_arg4 ia_data<>; /// initialize_arg4 ia_data<>;
/// }; /// };
skipping to change at page 61, line 49 skipping to change at page 61, line 51
/// data_content4 ir_sparse; /// data_content4 ir_sparse;
/// }; /// };
/// ///
/// union INITIALIZE4res switch (nfsstat4 status) { /// union INITIALIZE4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// INITIALIZE4resok resok4; /// INITIALIZE4resok resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// enum IO_ADVISE_type4 {
/// IO_ADVISE4_NORMAL = 0,
/// IO_ADVISE4_SEQUENTIAL = 1,
/// IO_ADVISE4_SEQUENTIAL_BACKWARDS = 2,
/// IO_ADVISE4_RANDOM = 3,
/// IO_ADVISE4_WILLNEED = 4,
/// IO_ADVISE4_WILLNEED_OPPORTUNISTIC = 5,
/// IO_ADVISE4_DONTNEED = 6,
/// IO_ADVISE4_NOREUSE = 7,
/// IO_ADVISE4_READ = 8,
/// IO_ADVISE4_WRITE = 9
/// };
///
/// struct IO_ADVISE4args {
/// /* CURRENT_FH: file */
/// stateid4 iar_stateid;
/// offset4 iar_offset;
/// length4 iar_count;
/// bitmap4 iar_hints;
/// };
///
/// struct IO_ADVISE4resok {
/// bitmap4 ior_hints;
/// };
///
/// union IO_ADVISE4res switch (nfsstat4 _status) {
/// case NFS4_OK:
/// IO_ADVISE4resok resok4;
/// default:
/// void;
/// };
///
/// 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 content) { /// union read_plus_content switch (data_content4 content) {
/// case NFS4_CONTENT_DATA: /// case NFS4_CONTENT_DATA:
/// opaque rpc_data<>; /// opaque rpc_data<>;
/// case NFS4_CONTENT_APP_BLOCK: /// case NFS4_CONTENT_APP_BLOCK:
/// app_data_block4 rpc_block; /// app_data_block4 rpc_block;
/// case NFS4_CONTENT_HOLE: /// case NFS4_CONTENT_HOLE:
/// hole_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 {
/// bool rpr_eof; /// bool rpr_eof;
/// read_plus_content rpr_contents<>; /// read_plus_content rpr_contents<>;
/// }; /// };
/// ///
/// union READ_PLUS4res switch (nfsstat4 status) { /// union READ_PLUS4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// read_plus_res4 resok4; /// read_plus_res4 resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// struct SEEK4args {
/// /* CURRENT_FH: file */
/// stateid4 sa_stateid;
/// offset4 sa_offset;
/// count4 sa_count;
/// };
///
/// union seek_content switch (data_content4 content) {
/// case NFS4_CONTENT_DATA:
/// data_info4 sc_data;
/// case NFS4_CONTENT_APP_BLOCK:
/// app_data_block4 sc_block;
/// case NFS4_CONTENT_HOLE:
/// data_info4 sc_hole;
/// default:
/// void;
/// };
///
/// /*
/// * Allow a return of an array of contents.
/// */
/// struct seek_res4 {
/// bool sr_eof;
/// seek_content sr_contents;
/// };
///
/// union SEEK4res switch (nfsstat4 status) {
/// case NFS4_OK:
/// seek_res4 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 64, line 11 skipping to change at page 65, line 30
/// % /// %
/// %/* new operations for NFSv4.2 */ /// %/* new operations for NFSv4.2 */
/// % /// %
/// OP_COPY = 59, /// OP_COPY = 59,
/// OP_COPY_ABORT = 60, /// OP_COPY_ABORT = 60,
/// OP_COPY_NOTIFY = 61, /// OP_COPY_NOTIFY = 61,
/// OP_COPY_REVOKE = 62, /// OP_COPY_REVOKE = 62,
/// OP_COPY_STATUS = 63, /// OP_COPY_STATUS = 63,
/// OP_INITIALIZE = 64, /// OP_INITIALIZE = 64,
/// OP_READ_PLUS = 65, /// OP_READ_PLUS = 65,
/// OP_SEEK = 66,
/// OP_IO_ADVISE = 67,
/// 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 28 skipping to change at page 67, line 49
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.2 */ /// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4args opcopy_notify; /// case OP_COPY_NOTIFY: COPY_NOTIFY4args opcopy_notify;
/// case OP_COPY_REVOKE: COPY_REVOKE4args opcopy_revoke; /// case OP_COPY_REVOKE: COPY_REVOKE4args opcopy_revoke;
/// case OP_COPY: COPY4args opcopy; /// case OP_COPY: COPY4args opcopy;
/// case OP_COPY_ABORT: COPY_ABORT4args opcopy_abort; /// case OP_COPY_ABORT: COPY_ABORT4args opcopy_abort;
/// case OP_COPY_STATUS: COPY_STATUS4args opcopy_status; /// case OP_COPY_STATUS: COPY_STATUS4args opcopy_status;
/// case OP_INITIALIZE: INITIALIZE4args opinitialize; /// case OP_INITIALIZE: INITIALIZE4args opinitialize;
/// case OP_READ_PLUS: READ_PLUS4args opread_plus; /// case OP_READ_PLUS: READ_PLUS4args opread_plus;
/// case OP_SEEK: SEEK4args opseek;
/// case OP_IO_ADVISE: IO_ADVISE4args opio_advise;
/// ///
/// /* 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 69, line 7 skipping to change at page 70, line 30
/// 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_COPY_REVOKE: COPY_REVOKE4res opcopy_revoke; /// case OP_COPY_REVOKE: COPY_REVOKE4res opcopy_revoke;
/// case OP_COPY: COPY4res opcopy; /// case OP_COPY: COPY4res opcopy;
/// case OP_COPY_ABORT: COPY_ABORT4res opcopy_abort; /// case OP_COPY_ABORT: COPY_ABORT4res opcopy_abort;
/// case OP_COPY_STATUS: COPY_STATUS4res opcopy_status; /// case OP_COPY_STATUS: COPY_STATUS4res opcopy_status;
/// case OP_INITIALIZE: INITIALIZE4res opinitialize; /// case OP_INITIALIZE: INITIALIZE4res opinitialize;
/// case OP_READ_PLUS: READ_PLUS4res opread_plus; /// case OP_READ_PLUS: READ_PLUS4res opread_plus;
/// case OP_SEEK: SEEK4res opseek;
/// case OP_IO_ADVISE: IO_ADVISE4res opio_advise;
/// ///
/// /* 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. 19 change blocks. 
26 lines changed or deleted 99 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/