draft-ietf-nfsv4-minorversion2-dot-x-15.txt   draft-ietf-nfsv4-minorversion2-dot-x-16.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Editors
Intended status: Standards Track October 03, 2012 Intended status: Standards Track October 18, 2012
Expires: April 6, 2013 Expires: April 21, 2013
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-15.txt draft-ietf-nfsv4-minorversion2-dot-x-16.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 April 6, 2013. This Internet-Draft will expire on April 21, 2013.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 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 Simplified BSD License. described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
than English.
Table of Contents Table of Contents
1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 4 1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 3
2. Security Considerations . . . . . . . . . . . . . . . . . . . 80 2. Security Considerations . . . . . . . . . . . . . . . . . . . 80
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80
4. Normative References . . . . . . . . . . . . . . . . . . . . . 81 4. Normative References . . . . . . . . . . . . . . . . . . . . . 80
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 81 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 80
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 3, 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-15 /// * draft-ietf-nfsv4-minorversion2-16
/// * Last updated Wed Oct 3 14:11:44 PDT 2012 /// * Last updated Thu Oct 18 14:07:14 CDT 2012
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2007-2012) /// * Copyright (C) The IETF Trust (2007-2012)
/// * 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 18, line 39 skipping to change at page 17, line 39
/// policy4 lfs_lfs; /// policy4 lfs_lfs;
/// policy4 lfs_pi; /// policy4 lfs_pi;
/// }; /// };
/// ///
/// struct sec_label4 { /// struct sec_label4 {
/// labelformat_spec4 slai_lfs; /// labelformat_spec4 slai_lfs;
/// opaque slai_data<>; /// opaque slai_data<>;
/// }; /// };
/// ///
/// ///
/// typedef uint32_t change_sec_label4; /// struct change_sec_label4 {
/// uint64_t csl_major;
/// uint64_t csl_minor;
/// };
/// ///
/// ///
/// struct copy_from_auth_priv { /// struct copy_from_auth_priv {
/// secret4 cfap_shared_secret; /// secret4 cfap_shared_secret;
/// netloc4 cfap_destination; /// netloc4 cfap_destination;
/// /* the NFSv4 user name that the user principal maps to */ /// /* the NFSv4 user name that the user principal maps to */
/// utf8str_mixed cfap_username; /// utf8str_mixed cfap_username;
/// /* equal to seq_num of rpc_gss_cred_vers_3_t */ /// /* equal to seq_num of rpc_gss_cred_vers_3_t */
/// unsigned int cfap_seq_num; /// unsigned int cfap_seq_num;
/// }; /// };
skipping to change at page 19, line 34 skipping to change at page 18, line 37
/// offset4 adh_offset; /// offset4 adh_offset;
/// length4 adh_block_size; /// length4 adh_block_size;
/// length4 adh_block_count; /// length4 adh_block_count;
/// length4 adh_reloff_blocknum; /// length4 adh_reloff_blocknum;
/// count4 adh_block_num; /// count4 adh_block_num;
/// length4 adh_reloff_pattern; /// length4 adh_reloff_pattern;
/// opaque adh_pattern<>; /// opaque adh_pattern<>;
/// }; /// };
/// ///
/// ///
/// struct data4 {
/// offset4 d_offset;
/// bool d_allocated;
/// opaque d_data<>;
/// };
///
///
/// struct data_info4 { /// struct data_info4 {
/// offset4 di_offset; /// offset4 di_offset;
/// length4 di_length; /// length4 di_length;
/// bool di_allocated; /// 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_DATA_HOLE = 1, /// NFS4_CONTENT_APP_DATA_HOLE = 1,
/// NFS4_CONTENT_HOLE = 2 /// NFS4_CONTENT_HOLE = 2
/// }; /// };
/// ///
/// ///
///
/// enum stable_how4 {
/// UNSTABLE4 = 0,
/// DATA_SYNC4 = 1,
/// FILE_SYNC4 = 2
/// };
///
///
///
/// struct write_response4 {
/// stateid4 wr_callback_id<1>;
/// count4 wr_count;
/// stable_how4 wr_committed;
/// verifier4 wr_writeverf;
/// };
///
///
/// /* /// /*
/// * NFSv4.1 attributes /// * NFSv4.1 attributes
/// */ /// */
/// typedef bitmap4 fattr4_supported_attrs; /// typedef bitmap4 fattr4_supported_attrs;
/// 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;
skipping to change at page 47, line 27 skipping to change at page 47, line 5
/// ///
/// struct VERIFY4args { /// struct VERIFY4args {
/// /* CURRENT_FH: object */ /// /* CURRENT_FH: object */
/// fattr4 obj_attributes; /// fattr4 obj_attributes;
/// }; /// };
/// ///
/// struct VERIFY4res { /// struct VERIFY4res {
/// nfsstat4 status; /// nfsstat4 status;
/// }; /// };
/// ///
/// enum stable_how4 {
/// UNSTABLE4 = 0,
/// DATA_SYNC4 = 1,
/// FILE_SYNC4 = 2
/// };
///
/// struct WRITE4args { /// struct WRITE4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 stateid; /// stateid4 stateid;
/// offset4 offset; /// offset4 offset;
/// stable_how4 stable; /// stable_how4 stable;
/// opaque data<>; /// opaque data<>;
/// }; /// };
/// ///
/// struct WRITE4resok { /// struct WRITE4resok {
/// count4 count; /// count4 count;
skipping to change at page 60, line 7 skipping to change at page 59, line 28
/// stateid4 ca_dst_stateid; /// stateid4 ca_dst_stateid;
/// offset4 ca_src_offset; /// offset4 ca_src_offset;
/// offset4 ca_dst_offset; /// offset4 ca_dst_offset;
/// length4 ca_count; /// length4 ca_count;
/// uint32_t ca_flags; /// uint32_t ca_flags;
/// component4 ca_destination; /// component4 ca_destination;
/// netloc4 ca_source_server<>; /// netloc4 ca_source_server<>;
/// }; /// };
/// ///
/// union COPY4res switch (nfsstat4 cr_status) { /// union COPY4res switch (nfsstat4 cr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// stateid4 cr_callback_id<1>; /// write_response4 resok4;
/// default: /// default:
/// length4 cr_bytes_copied; /// length4 cr_bytes_copied;
/// }; /// };
/// ///
/// struct OFFLOAD_ABORT4args { /// struct OFFLOAD_ABORT4args {
/// /* CURRENT_FH: destination file */ /// /* CURRENT_FH: destination file */
/// stateid4 oaa_stateid; /// stateid4 oaa_stateid;
/// }; /// };
/// ///
/// struct OFFLOAD_ABORT4res { /// struct OFFLOAD_ABORT4res {
/// nfsstat4 oar_status; /// nfsstat4 oar_status;
/// }; /// };
skipping to change at page 60, line 34 skipping to change at page 60, line 7
/// stateid4 cna_src_stateid; /// stateid4 cna_src_stateid;
/// netloc4 cna_destination_server; /// netloc4 cna_destination_server;
/// }; /// };
/// ///
/// struct COPY_NOTIFY4resok { /// struct COPY_NOTIFY4resok {
/// nfstime4 cnr_lease_time; /// nfstime4 cnr_lease_time;
/// netloc4 cnr_source_server<>; /// netloc4 cnr_source_server<>;
/// }; /// };
/// ///
/// union COPY_NOTIFY4res switch (nfsstat4 cnr_status) { /// union COPY_NOTIFY4res switch (nfsstat4 cnr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// COPY_NOTIFY4resok resok4; /// COPY_NOTIFY4resok resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct OFFLOAD_REVOKE4args { /// struct OFFLOAD_REVOKE4args {
/// /* CURRENT_FH: source file */ /// /* CURRENT_FH: source file */
/// netloc4 ora_destination_server; /// netloc4 ora_destination_server;
/// }; /// };
/// ///
/// struct OFFLOAD_REVOKE4res { /// struct OFFLOAD_REVOKE4res {
/// nfsstat4 orr_status; /// nfsstat4 orr_status;
/// }; /// };
skipping to change at page 61, line 13 skipping to change at page 60, line 34
/// /* CURRENT_FH: destination file */ /// /* CURRENT_FH: destination file */
/// stateid4 osa_stateid; /// stateid4 osa_stateid;
/// }; /// };
/// ///
/// struct OFFLOAD_STATUS4resok { /// struct OFFLOAD_STATUS4resok {
/// length4 osr_bytes_copied; /// length4 osr_bytes_copied;
/// 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 resok4; /// OFFLOAD_STATUS4resok osr_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// ///
/// /* /// union write_plus_arg4 switch (data_content4 wpa_content) {
/// * We use data_content4 in case we wish to /// case NFS4_CONTENT_DATA:
/// * extend new types later. Note that we /// data4 wpa_data;
/// * are explicitly disallowing data.
/// */
/// union initialize_arg4 switch (data_content4 content) {
/// case NFS4_CONTENT_APP_DATA_HOLE: /// case NFS4_CONTENT_APP_DATA_HOLE:
/// app_data_hole4 ia_adh; /// app_data_hole4 wpa_adh;
/// case NFS4_CONTENT_HOLE: /// case NFS4_CONTENT_HOLE:
/// data_info4 ia_hole; /// data_info4 wpa_hole;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct INITIALIZE4args { /// struct WRITE_PLUS4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 ia_stateid; /// stateid4 wp_stateid;
/// stable_how4 ia_stable; /// stable_how4 wp_stable;
/// initialize_arg4 ia_data<>; /// write_plus_arg4 wp_data<>;
/// }; /// };
/// ///
/// ///
/// struct INITIALIZE4resok { /// union WRITE_PLUS4res switch (nfsstat4 wp_status) {
/// count4 ir_count;
/// stable_how4 ir_committed;
/// verifier4 ir_writeverf;
/// data_content4 ir_sparse;
/// };
///
/// union INITIALIZE4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// INITIALIZE4resok resok4; /// write_response4 wp_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// 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,
skipping to change at page 62, line 48 skipping to change at page 62, line 11
/// void; /// 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 rpc_content) {
/// case NFS4_CONTENT_DATA: /// case NFS4_CONTENT_DATA:
/// opaque rpc_data<>; /// data4 rpc_data;
/// case NFS4_CONTENT_APP_DATA_HOLE: /// case NFS4_CONTENT_APP_DATA_HOLE:
/// app_data_hole4 rpc_adh; /// 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.
/// */ /// */
skipping to change at page 63, line 20 skipping to change at page 62, line 30
/// }; /// };
/// ///
/// /* /// /*
/// * 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 rp_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// read_plus_res4 resok4; /// read_plus_res4 rp_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// 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;
/// }; /// };
skipping to change at page 65, line 32 skipping to change at page 64, line 43
/// 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_COPY = 59,
/// OP_OFFLOAD_ABORT = 60, /// OP_OFFLOAD_ABORT = 60,
/// OP_COPY_NOTIFY = 61, /// OP_COPY_NOTIFY = 61,
/// OP_OFFLOAD_REVOKE = 62, /// OP_OFFLOAD_REVOKE = 62,
/// OP_OFFLOAD_STATUS = 63, /// OP_OFFLOAD_STATUS = 63,
/// OP_INITIALIZE = 64, /// OP_WRITE_PLUS = 64,
/// OP_READ_PLUS = 65, /// OP_READ_PLUS = 65,
/// OP_SEEK = 66, /// OP_SEEK = 66,
/// OP_IO_ADVISE = 67, /// 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;
skipping to change at page 67, line 52 skipping to change at page 67, line 14
/// 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_INITIALIZE: INITIALIZE4args opinitialize; /// case OP_WRITE_PLUS: WRITE_PLUS4args opwrite_plus;
/// 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;
/// ///
/// /* 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;
skipping to change at page 70, line 32 skipping to change at page 69, line 44
/// 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_INITIALIZE: INITIALIZE4res opinitialize; /// case OP_WRITE_PLUS: WRITE_PLUS4res opwrite_plus;
/// 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;
/// ///
/// /* 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;
skipping to change at page 77, line 36 skipping to change at page 76, line 47
/// }; /// };
/// ///
/// 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) { /// union offload_info4 switch (nfsstat4 coa_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// void; /// write_response4 coa_resok4;
/// default: /// default:
/// length4 cca_bytes_copied; /// length4 coa_bytes_copied;
/// }; /// };
/// ///
/// struct CB_COPY4args { /// struct CB_OFFLOAD4args {
/// nfs_fh4 cca_fh; /// nfs_fh4 coa_fh;
/// stateid4 cca_stateid; /// stateid4 coa_stateid;
/// copy_info4 cca_copy_info; /// offload_info4 coa_offload_info;
/// }; /// };
/// struct CB_COPY4res { /// struct CB_OFFLOAD4res {
/// nfsstat4 ccr_status; /// nfsstat4 cor_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 */ /// %/* Callback operations new to NFSv4.2 */
/// OP_CB_COPY = 15, /// OP_CB_OFFLOAD = 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 */ /// /* new NFSv4.1 operations */
/// case OP_CB_RECALL: /// case OP_CB_RECALL:
skipping to change at page 79, line 8 skipping to change at page 78, line 20
/// 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 */ /// /* new NFSv4.2 operations */
/// case OP_CB_COPY: /// case OP_CB_OFFLOAD:
/// CB_COPY4args opcbcopy; /// CB_OFFLOAD4args opcboffload;
/// ///
/// 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:
skipping to change at page 80, line 6 skipping to change at page 79, line 17
/// ///
/// 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 */ /// /* new NFSv4.2 operations */
/// case OP_CB_COPY: CB_COPY4res opcbcopy; /// case OP_CB_OFFLOAD: CB_OFFLOAD4res opcboffload;
/// ///
/// /* 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;
 End of changes. 35 change blocks. 
84 lines changed or deleted 82 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/