draft-ietf-nfsv4-minorversion2-dot-x-02.txt   draft-ietf-nfsv4-minorversion2-dot-x-03.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Editors
Intended status: Standards Track May 09, 2011 Intended status: Standards Track August 14, 2011
Expires: November 10, 2011 Expires: February 15, 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-02.txt draft-ietf-nfsv4-minorversion2-dot-x-03.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 November 10, 2011. This Internet-Draft will expire on February 15, 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 11 skipping to change at page 3, line 11
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 . . . . . . . . . . . . . . . . . . . 79
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79
4. Normative References . . . . . . . . . . . . . . . . . . . . . 79 4. Normative References . . . . . . . . . . . . . . . . . . . . . 79
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 79 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 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-02 /// * draft-ietf-nfsv4-minorversion2-03
/// * Last updated Mon May 9 15:16:44 CDT 2011 /// * Last updated Sun Aug 14 17:33:42 CDT 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 8, line 35 skipping to change at page 8, line 35
/// 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_UNION_NOTSUPP = 10091,/* Arm of union not supp */
/// NFS4ERR_WRONG_LFS = 10092,/* LFS not supported */ /// NFS4ERR_WRONG_LFS = 10092,/* LFS not supported */
/// NFS4ERR_BAD_LABEL = 10093,/* incorrect label */ /// NFS4ERR_BAD_LABEL = 10093,/* incorrect label */
/// NFS4ERR_MAC_ACCESS = 10094 /* No MAC access allowed */ /// 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<>;
skipping to change at page 19, line 31 skipping to change at page 19, line 31
/// 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 {
/// offset4 hi_offset;
/// length4 hi_length;
/// };
///
///
/// /* /// /*
/// * 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 36 skipping to change at page 21, line 42
/// 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 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;
/// 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 49, line 28 skipping to change at page 49, line 34
/// ///
/// case NFS4_OK: /// case NFS4_OK:
/// BIND_CONN_TO_SESSION4resok /// BIND_CONN_TO_SESSION4resok
/// bctsr_resok4; /// bctsr_resok4;
/// ///
/// default: void; /// default: void;
/// }; /// };
/// ///
/// const EXCHGID4_FLAG_SUPP_MOVED_REFER = 0x00000001; /// const EXCHGID4_FLAG_SUPP_MOVED_REFER = 0x00000001;
/// const EXCHGID4_FLAG_SUPP_MOVED_MIGR = 0x00000002; /// const EXCHGID4_FLAG_SUPP_MOVED_MIGR = 0x00000002;
/// const EXCHGID4_FLAG_SUPP_FENCE_OPS = 0x00000004;
/// ///
/// const EXCHGID4_FLAG_BIND_PRINC_STATEID = 0x00000100; /// const EXCHGID4_FLAG_BIND_PRINC_STATEID = 0x00000100;
/// ///
/// const EXCHGID4_FLAG_USE_NON_PNFS = 0x00010000; /// const EXCHGID4_FLAG_USE_NON_PNFS = 0x00010000;
/// const EXCHGID4_FLAG_USE_PNFS_MDS = 0x00020000; /// const EXCHGID4_FLAG_USE_PNFS_MDS = 0x00020000;
/// const EXCHGID4_FLAG_USE_PNFS_DS = 0x00040000; /// const EXCHGID4_FLAG_USE_PNFS_DS = 0x00040000;
/// ///
/// const EXCHGID4_FLAG_MASK_PNFS = 0x00070000; /// const EXCHGID4_FLAG_MASK_PNFS = 0x00070000;
/// ///
/// const EXCHGID4_FLAG_UPD_CONFIRMED_REC_A = 0x40000000; /// const EXCHGID4_FLAG_UPD_CONFIRMED_REC_A = 0x40000000;
skipping to change at page 61, line 14 skipping to change at page 61, line 21
/// ///
/// /* /// /*
/// * 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:
/// length4 ia_hole_length; /// hole_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;
/// offset4 ia_offset;
/// initialize_arg4 ia_data<>; /// initialize_arg4 ia_data<>;
/// }; /// };
/// ///
/// ///
/// struct INITIALIZE4resok { /// struct INITIALIZE4resok {
/// count4 ir_count; /// count4 ir_count;
/// stable_how4 ir_committed; /// stable_how4 ir_committed;
/// verifier4 ir_writeverf; /// verifier4 ir_writeverf;
/// data_content4 ir_sparse; /// data_content4 ir_sparse;
/// }; /// };
skipping to change at page 61, line 48 skipping to change at page 62, line 6
/// default: /// default:
/// 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 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:
/// length4 rpc_hole_length; /// hole_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<>;
skipping to change at page 76, line 15 skipping to change at page 76, line 22
/// ///
/// 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 { /// struct CB_ATTR_CHANGED4args {
/// nfs_fh4 clca_fh; /// nfs_fh4 acca_fh;
/// bitmap4 acca_critical;
/// bitmap4 acca_info;
/// }; /// };
/// struct CB_LABEL_CHANGED4res { /// struct CB_ATTR_CHANGED4res {
/// nfsstat4 clcr_status; /// nfsstat4 accr_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,
skipping to change at page 76, line 41 skipping to change at page 76, line 50
/// 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_ATTR_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 77, line 30 skipping to change at page 77, line 38
/// 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: /// case OP_CB_ATTR_CHANGED:
/// CB_LABEL_CHANGED4args opcblabelchanged; /// CB_ATTR_CHANGED4args opcbattrchanged;
/// ///
/// 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 78, line 28 skipping to change at page 78, line 37
/// 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: /// case OP_CB_ATTR_CHANGED:
/// CB_LABEL_CHANGED4res /// CB_ATTR_CHANGED4res
/// oplabelchanged; /// opattrchanged;
/// ///
/// /* 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. 19 change blocks. 
23 lines changed or deleted 31 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/