draft-ietf-nfsv4-minorversion2-dot-x-01.txt   draft-ietf-nfsv4-minorversion2-dot-x-02.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Editors
Intended status: Standards Track April 21, 2011 Intended status: Standards Track May 09, 2011
Expires: October 23, 2011 Expires: November 10, 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-01.txt draft-ietf-nfsv4-minorversion2-dot-x-02.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 23, 2011. This Internet-Draft will expire on November 10, 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
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 . . . . . . . . . . . . . . . . . . . 77 2. Security Considerations . . . . . . . . . . . . . . . . . . . 79
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 77 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79
4. Normative References . . . . . . . . . . . . . . . . . . . . . 77 4. Normative References . . . . . . . . . . . . . . . . . . . . . 79
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 78 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 79
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-01 /// * draft-ietf-nfsv4-minorversion2-02
/// * Last updated Thu Apr 21 10:33:42 CDT 2011 /// * Last updated Mon May 9 15:16:44 CDT 2011
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2007-2008) /// * 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.
/// */ /// */
/// ///
/// /* /// /*
/// * nfs4_prot.x /// * nfsv42.x
/// */ /// */
/// ///
/// %#ifndef _AUTH_SYS_DEFINE_FOR_NFSv42 /// %#ifndef _AUTH_SYS_DEFINE_FOR_NFSv42
/// %#define _AUTH_SYS_DEFINE_FOR_NFSv42 /// %#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_NFSv42 */ /// %#endif /* _AUTH_SYS_DEFINE_FOR_NFSv42 */
/// ///
/// /* /// /*
/// * Basic typedefs for RFC 1832 data type definitions /// * Basic typedefs for RFC 1832 data type definitions
skipping to change at page 8, line 34 skipping to change at page 8, line 34
/// 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,/* deleg./layout revoked */ /// NFS4ERR_DELEG_REVOKED = 10087,/* deleg./layout revoked */
/// ///
/// /* NFSv4.2 errors start here. */ /// /* NFSv4.2 errors start here. */
/// ///
/// NFS4ERR_PARTNER_NOTSUPP= 10088,/* s2s not supported */ /// NFS4ERR_PARTNER_NOTSUPP= 10088,/* s2s not supported */
/// NFS4ERR_PARTNER_NO_AUTH= 10089,/* s2s not authorized */ /// NFS4ERR_PARTNER_NO_AUTH= 10089,/* s2s not authorized */
/// NFS4ERR_METADATA_NOTSUPP=10090 /* dest metadata diff sourc*/ /// NFS4ERR_METADATA_NOTSUPP=10090,/* dest metadata diff sourc*/
/// NFS4ERR_DU_ARM_NOTSUPP = 10091,/* Arm of union not supp */
/// NFS4ERR_WRONG_LFS = 10092,/* LFS not supported */
/// NFS4ERR_BAD_LABEL = 10093,/* incorrect label */
/// NFS4ERR_MAC_ACCESS = 10094 /* No MAC access allowed */
/// }; /// };
/// ///
/// /* /// /*
/// * 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 17 skipping to change at page 9, line 21
/// 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<>; /// typedef string secret4<>;
/// typedef uint32_t policy4;
/// ///
/// /* /// /*
/// * 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 16, line 22 skipping to change at page 16, line 27
/// ///
/// % /// %
/// /* 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 18, line 23 skipping to change at page 18, line 28
/// }; /// };
/// ///
/// enum change_attr_typeinfo { /// enum change_attr_typeinfo {
/// NFS4_CHANGE_TYPE_IS_MONOTONIC_INCR = 0, /// NFS4_CHANGE_TYPE_IS_MONOTONIC_INCR = 0,
/// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER = 1, /// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER = 1,
/// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER_NOPNFS = 2, /// NFS4_CHANGE_TYPE_IS_VERSION_COUNTER_NOPNFS = 2,
/// NFS4_CHANGE_TYPE_IS_TIME_METADATA = 3, /// NFS4_CHANGE_TYPE_IS_TIME_METADATA = 3,
/// NFS4_CHANGE_TYPE_IS_UNDEFINED = 4 /// NFS4_CHANGE_TYPE_IS_UNDEFINED = 4
/// }; /// };
/// ///
/// struct labelformat_spec4 {
/// policy4 lfs_lfs;
/// policy4 lfs_pi;
/// };
///
/// struct sec_label_attr_info {
/// labelformat_spec4 slai_lfs;
/// opaque slai_data<>;
/// };
///
/// ///
/// 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 5 skipping to change at page 19, line 20
/// 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;
/// /* equal to seq_num of rpc_gss_cred_vers_3_t */ /// /* equal to seq_num of rpc_gss_cred_vers_3_t */
/// unsigned int ccap_seq_num; /// unsigned int ccap_seq_num;
/// }; /// };
/// ///
/// ///
/// struct app_data_block4 {
/// offset4 adb_offset;
/// length4 adb_block_size;
/// length4 adb_block_count;
/// length4 adb_reloff_blocknum;
/// count4 adb_block_num;
/// length4 adb_reloff_pattern;
/// opaque adb_pattern<>;
/// };
///
///
/// /*
/// * Use an enum such that we can extend new types.
/// */
/// enum data_content4 {
/// NFS4_CONTENT_DATA = 0,
/// NFS4_CONTENT_APP_BLOCK = 1,
/// NFS4_CONTENT_HOLE = 2
/// };
///
///
/// /* /// /*
/// * 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 20, line 39 skipping to change at page 21, line 27
/// 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; /// typedef change_policy4 fattr4_change_policy;
/// /*
/// * attributes new to NFSv4.2
/// */
/// typedef bool fattr_space_reserved;
/// typedef uint64_t fattr_space_freed;
/// typedef uint64_t fattr_max_hole_punch;
/// typedef change_attr_typeinfo
/// fattr4_change_attr_type;
/// typedef sec_label_attr_info
/// 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;
/// 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;
skipping to change at page 22, line 42 skipping to change at page 23, line 40
/// 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_PUNCHED = 79; /// const FATTR4_MAX_HOLE_PUNCH = 79;
/// const FATTR4_CHANGE_ATTR_TYPE = 80; /// const FATTR4_CHANGE_ATTR_TYPE = 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 28, line 6 skipping to change at page 29, line 5
/// 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 data type layoutupdate4:
/// % * 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 {
/// /* CURRENT_FH: object */ /// /* CURRENT_FH: object */
skipping to change at page 60, line 28 skipping to change at page 61, line 5
/// }; /// };
/// ///
/// union COPY_STATUS4res switch (nfsstat4 csr_status) { /// union COPY_STATUS4res switch (nfsstat4 csr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// COPY_STATUS4resok resok4; /// COPY_STATUS4resok resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// ///
/// struct HOLE_PUNCH4args { /// /*
/// * We use data_content4 in case we wish to
/// * extend new types later. Note that we
/// * are explicitly disallowing data.
/// */
/// union initialize_arg4 switch (data_content4 content) {
/// case NFS4_CONTENT_APP_BLOCK:
/// app_data_block4 ia_adb;
/// case NFS4_CONTENT_HOLE:
/// length4 ia_hole_length;
/// default:
/// void;
/// };
///
/// struct INITIALIZE4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// offset4 hpa_offset; /// stateid4 ia_stateid;
/// length4 hpa_count; /// stable_how4 ia_stable;
/// offset4 ia_offset;
/// initialize_arg4 ia_data<>;
/// }; /// };
/// ///
/// ///
/// struct HOLE_PUNCH4res { /// struct INITIALIZE4resok {
/// nfsstat4 hpr_status; /// count4 ir_count;
/// stable_how4 ir_committed;
/// verifier4 ir_writeverf;
/// data_content4 ir_sparse;
/// };
///
/// union INITIALIZE4res switch (nfsstat4 status) {
/// case NFS4_OK:
/// INITIALIZE4resok 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;
/// }; /// };
/// struct read_plus_hole_info { /// union read_plus_content switch (data_content4 content) {
/// offset4 rphi_offset; /// case NFS4_CONTENT_DATA:
/// length4 rphi_length; /// opaque rpc_data<>;
/// }; /// case NFS4_CONTENT_APP_BLOCK:
///
/// enum holeres4 { /// app_data_block4 rpc_block;
/// HOLE_NOINFO = 0, /// case NFS4_CONTENT_HOLE:
/// HOLE_INFO = 1 /// length4 rpc_hole_length;
/// }; /// default:
/// /// void;
/// 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; /// * Allow a return of an array of contents.
/// read_plus_data rpr_data; /// */
/// struct read_plus_res4 {
/// bool rpr_eof;
/// read_plus_content rpr_contents<>;
/// }; /// };
/// ///
/// union READ_PLUS4res switch (nfsstat4 status) { /// union READ_PLUS4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// READ_PLUS4resok resok4; /// read_plus_res4 resok4;
/// default: /// default:
/// void; /// 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,
skipping to change at page 63, line 13 skipping to change at page 63, line 49
/// 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_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_HOLE_PUNCH = 64, /// OP_INITIALIZE = 64,
/// OP_READ_PLUS = 65, /// 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;
skipping to change at page 65, line 30 skipping to change at page 66, line 18
/// 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 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_HOLE_PUNCH: HOLE_PUNCH4args ophole_punch; /// case OP_INITIALIZE: INITIALIZE4args opinitialize;
/// case OP_READ_PLUS: READ_PLUS4args opread_plus; /// 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;
skipping to change at page 67, line 51 skipping to change at page 68, line 39
/// 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 */ /// /* 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_HOLE_PUNCH: HOLE_PUNCH4res ophole_punch; /// case OP_INITIALIZE: INITIALIZE4res opinitialize;
/// case OP_READ_PLUS: READ_PLUS4res opread_plus; /// 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<>;
/// }; /// };
/// ///
/// struct COMPOUND4res { /// struct COMPOUND4res {
/// nfsstat4 status; /// nfsstat4 status;
/// utf8str_cs tag; /// utf8str_cs tag;
/// nfs_resop4 resarray<>; /// nfs_resop4 resarray<>;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Layout return errors, which might
/// * include the nfs_opnum4.
/// */
///
/// %/*
/// % * Encoded in the lou_body field of data type layoutupdate4:
/// % * 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<>;
/// };
///
/// %
///
///
///
/// /*
/// * Remote file service routines /// * Remote file service routines
/// */ /// */
/// program NFS4_PROGRAM { /// program NFS4_PROGRAM {
/// version NFS_V4 { /// version NFS_V4 {
/// void /// void
/// NFSPROC4_NULL(void) = 0; /// NFSPROC4_NULL(void) = 0;
/// ///
/// COMPOUND4res /// COMPOUND4res
/// NFSPROC4_COMPOUND(COMPOUND4args) = 1; /// NFSPROC4_COMPOUND(COMPOUND4args) = 1;
/// ///
skipping to change at page 74, line 45 skipping to change at page 76, line 14
/// }; /// };
/// ///
/// struct CB_COPY4args { /// struct CB_COPY4args {
/// nfs_fh4 cca_fh; /// nfs_fh4 cca_fh;
/// stateid4 cca_stateid; /// stateid4 cca_stateid;
/// copy_info4 cca_copy_info; /// copy_info4 cca_copy_info;
/// }; /// };
/// struct CB_COPY4res { /// struct CB_COPY4res {
/// nfsstat4 ccr_status; /// nfsstat4 ccr_status;
/// }; /// };
///
/// struct CB_LABEL_CHANGED4args {
/// nfs_fh4 clca_fh;
/// };
/// struct CB_LABEL_CHANGED4res {
/// nfsstat4 clcr_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_COPY = 15,
/// OP_CB_LABEL_CHANGED = 16,
/// ///
/// 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 76, line 4 skipping to change at page 77, line 30
/// 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_COPY:
/// CB_COPY4args opcbcopy; /// CB_COPY4args opcbcopy;
/// case OP_CB_LABEL_CHANGED:
/// CB_LABEL_CHANGED4args opcblabelchanged;
/// ///
/// 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 76, line 49 skipping to change at page 78, line 28
/// 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_COPY: CB_COPY4res opcbcopy;
/// case OP_CB_LABEL_CHANGED:
/// CB_LABEL_CHANGED4res
/// oplabelchanged;
/// ///
/// /* 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. 31 change blocks. 
80 lines changed or deleted 159 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/