draft-ietf-nfsv4-minorversion2-dot-x-21.txt   draft-ietf-nfsv4-minorversion2-dot-x-22.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft Editors Internet-Draft Primary Data
Intended status: Standards Track February 03, 2014 Intended status: Standards Track April 13, 2014
Expires: August 7, 2014 Expires: October 15, 2014
NFSv4 Minor Version 2 Protocol External Data Representation Standard NFSv4 Minor Version 2 Protocol External Data Representation Standard
(XDR) Description (XDR) Description
draft-ietf-nfsv4-minorversion2-dot-x-21.txt draft-ietf-nfsv4-minorversion2-dot-x-22.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
document are to be interpreted as described in RFC 2119 [RFC2119]. document are to be interpreted as described in RFC 2119 [RFC2119].
Status of this Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 August 7, 2014. This Internet-Draft will expire on October 15, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
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.
Table of Contents Table of Contents
1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . . 3 1. XDR Description of NFSv4.2 . . . . . . . . . . . . . . . . . 2
2. Security Considerations . . . . . . . . . . . . . . . . . . . 79 2. Security Considerations . . . . . . . . . . . . . . . . . . . 79
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 80 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 79
4. Normative References . . . . . . . . . . . . . . . . . . . . . 80 4. Normative References . . . . . . . . . . . . . . . . . . . . 79
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 80 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 79
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 79
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 80
1. XDR Description of NFSv4.2 1. XDR Description of NFSv4.2
This document contains the XDR ([RFC4506]) description of NFSv4.2 This document contains the XDR ([RFC4506]) description of NFSv4.2
protocol ([I-D.ietf-nfsv4-minorversion2]). In order to facilitate protocol ([NFSv42]). In order to facilitate implementations that
implementations that support all of NFSv4.0, NFSv4.1, and NFSv4.2, support all of NFSv4.0, NFSv4.1, and NFSv4.2, the description
the description includes operations, and other features of NFSv4.0 includes operations, and other features of NFSv4.0 and NFSv4.1 that
and NFSv4.1 that do not apply to NFSv4.2. do not apply to 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
it simple for the reader to extract into ready to compile form. The it simple for the reader to extract into ready to compile form. The
reader can feed this document in the following shell script to reader can feed this document in the following shell script to
produce the machine readable XDR description of NFSv4.2: produce the machine readable XDR description of NFSv4.2:
#!/bin/sh #!/bin/sh
grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??' grep "^ *///" | sed 's?^ */// ??' | sed 's?^ *///$??'
I.e. if the above script is stored in a file called "extract.sh", and I.e., if the above script is stored in a file called "extract.sh",
this document is in a file called "spec.txt", then the reader can do: and this document is in a file called "spec.txt", then the reader can
do:
sh extract.sh < spec.txt > nfs4_prot.x sh extract.sh < spec.txt > nfs4_prot.x
The effect of the script is to remove leading white space from each The effect of the script is to remove leading white space from each
line, plus a sentinel sequence of "///". line, plus a sentinel sequence of "///".
The XDR description, with the sentinel sequence follows: The XDR description, with the sentinel sequence follows:
/// /* /// /*
/// * This file was machine generated for /// * This file was machine generated for
/// * draft-ietf-nfsv4-minorversion2-22 /// * draft-ietf-nfsv4-minorversion2-22
/// * Last updated Mon Feb 3 09:48:41 PST 2014 /// * Last updated Sun Apr 13 23:24:25 PDT 2014
/// */ /// */
/// /* /// /*
/// * 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 7, line 9 skipping to change at page 6, line 24
/// NFS4ERR_LAYOUTTRYLATER = 10058, /// NFS4ERR_LAYOUTTRYLATER = 10058,
/// NFS4ERR_LAYOUTUNAVAILABLE = 10059, /// NFS4ERR_LAYOUTUNAVAILABLE = 10059,
/// NFS4ERR_NOMATCHING_LAYOUT = 10060, /// NFS4ERR_NOMATCHING_LAYOUT = 10060,
/// NFS4ERR_RECALLCONFLICT = 10061, /// NFS4ERR_RECALLCONFLICT = 10061,
/// NFS4ERR_UNKNOWN_LAYOUTTYPE = 10062, /// NFS4ERR_UNKNOWN_LAYOUTTYPE = 10062,
/// NFS4ERR_SEQ_MISORDERED = 10063,/* unexpected seq.ID in req*/ /// NFS4ERR_SEQ_MISORDERED = 10063,/* unexpected seq.ID in req*/
/// NFS4ERR_SEQUENCE_POS = 10064,/* [CB_]SEQ. op not 1st op */ /// NFS4ERR_SEQUENCE_POS = 10064,/* [CB_]SEQ. op not 1st op */
/// NFS4ERR_REQ_TOO_BIG = 10065,/* request too big */ /// NFS4ERR_REQ_TOO_BIG = 10065,/* request too big */
/// NFS4ERR_REP_TOO_BIG = 10066,/* reply too big */ /// NFS4ERR_REP_TOO_BIG = 10066,/* reply too big */
/// NFS4ERR_REP_TOO_BIG_TO_CACHE =10067,/* rep. not all cached*/ /// NFS4ERR_REP_TOO_BIG_TO_CACHE =10067,/* rep. not all cached*/
/// NFS4ERR_RETRY_UNCACHED_REP =10068,/* retry & rep. uncached*/ /// NFS4ERR_RETRY_UNCACHED_REP =10068,/* retry + rep. uncached*/
/// NFS4ERR_UNSAFE_COMPOUND =10069,/* retry/recovery too hard */ /// NFS4ERR_UNSAFE_COMPOUND =10069,/* retry/recovery too hard */
/// NFS4ERR_TOO_MANY_OPS = 10070,/*too many ops in [CB_]COMP*/ /// NFS4ERR_TOO_MANY_OPS = 10070,/*too many ops in [CB_]COMP*/
/// NFS4ERR_OP_NOT_IN_SESSION =10071,/* op needs [CB_]SEQ. op */ /// NFS4ERR_OP_NOT_IN_SESSION =10071,/* op needs [CB_]SEQ. op */
/// NFS4ERR_HASH_ALG_UNSUPP = 10072, /* hash alg. not supp. */ /// NFS4ERR_HASH_ALG_UNSUPP = 10072, /* hash alg. not supp. */
/// /* Error 10073 is unused. */ /// /* Error 10073 is unused. */
/// NFS4ERR_CLIENTID_BUSY = 10074,/* clientid has state */ /// NFS4ERR_CLIENTID_BUSY = 10074,/* clientid has state */
/// NFS4ERR_PNFS_IO_HOLE = 10075,/* IO to _SPARSE file hole */ /// NFS4ERR_PNFS_IO_HOLE = 10075,/* IO to _SPARSE file hole */
/// NFS4ERR_SEQ_FALSE_RETRY= 10076,/* Retry != original req. */ /// NFS4ERR_SEQ_FALSE_RETRY= 10076,/* Retry != original req. */
/// NFS4ERR_BAD_HIGH_SLOT = 10077,/* req has bad highest_slot*/ /// NFS4ERR_BAD_HIGH_SLOT = 10077,/* req has bad highest_slot*/
/// NFS4ERR_DEADSESSION = 10078,/*new req sent to dead sess*/ /// NFS4ERR_DEADSESSION = 10078,/*new req sent to dead sess*/
skipping to change at page 19, line 21 skipping to change at page 18, line 36
/// enum stable_how4 { /// enum stable_how4 {
/// UNSTABLE4 = 0, /// UNSTABLE4 = 0,
/// DATA_SYNC4 = 1, /// DATA_SYNC4 = 1,
/// FILE_SYNC4 = 2 /// FILE_SYNC4 = 2
/// }; /// };
/// ///
/// ///
/// ///
/// struct write_response4 { /// struct write_response4 {
/// stateid4 wr_callback_id<1>; /// stateid4 wr_callback_id<1>;
/// count4 wr_count; /// length4 wr_count;
/// stable_how4 wr_committed; /// stable_how4 wr_committed;
/// verifier4 wr_writeverf; /// 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;
skipping to change at page 60, line 31 skipping to change at page 59, line 46
/// }; /// };
/// ///
/// union OFFLOAD_STATUS4res switch (nfsstat4 osr_status) { /// union OFFLOAD_STATUS4res switch (nfsstat4 osr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// OFFLOAD_STATUS4resok osr_resok4; /// OFFLOAD_STATUS4resok osr_resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// ///
/// union write_plus_arg4 switch (data_content4 wpa_content) { /// struct WRITE_HOLE4args {
/// case NFS4_CONTENT_DATA:
/// data4 wpa_data;
/// case NFS4_CONTENT_APP_DATA_HOLE:
/// app_data_hole4 wpa_adh;
/// case NFS4_CONTENT_HOLE:
/// data_info4 wpa_hole;
/// default:
/// void;
/// };
///
/// struct WRITE_PLUS4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 wp_stateid; /// stateid4 wh_stateid;
/// stable_how4 wp_stable; /// stable_how4 wh_stable;
/// write_plus_arg4 wp_data; /// data_info4 wh_hole;
/// }; /// };
/// ///
/// ///
/// union WRITE_PLUS4res switch (nfsstat4 wp_status) { /// union WRITE_HOLE4res switch (nfsstat4 wh_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// write_response4 wh_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 63, line 4 skipping to change at page 62, line 8
/// void; /// void;
/// }; /// };
/// ///
/// struct seek_res4 { /// struct seek_res4 {
/// bool sr_eof; /// bool sr_eof;
/// seek_content sr_contents; /// seek_content sr_contents;
/// }; /// };
/// ///
/// union SEEK4res switch (nfsstat4 status) { /// union SEEK4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// seek_res4 resok4; /// seek_res4 resok4;
/// default: /// default:
/// void; /// void;
/// }; /// };
/// ///
/// struct WRITE_SAME4args {
/// /* CURRENT_FH: file */
/// stateid4 ws_stateid;
/// stable_how4 ws_stable;
/// app_data_hole4 ws_adh;
/// };
///
///
/// union WRITE_SAME4res switch (nfsstat4 ws_status) {
/// case NFS4_OK:
/// write_response4 ws_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 33 skipping to change at page 64, line 5
/// 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_WRITE_PLUS = 64, /// OP_WRITE_HOLE = 64,
/// OP_READ_PLUS = 65, /// OP_READ_PLUS = 65,
/// OP_SEEK = 66, /// OP_SEEK = 66,
/// OP_IO_ADVISE = 67, /// OP_IO_ADVISE = 67,
/// OP_WRITE_SAME = 68,
/// 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 67, line 4 skipping to change at page 66, line 25
/// case OP_RECLAIM_COMPLETE: /// case OP_RECLAIM_COMPLETE:
/// RECLAIM_COMPLETE4args /// RECLAIM_COMPLETE4args
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.2 */ /// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4args opoffload_notify; /// case OP_COPY_NOTIFY: COPY_NOTIFY4args opoffload_notify;
/// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4args opcopy_revoke; /// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4args opcopy_revoke;
/// case OP_COPY: COPY4args opcopy; /// case OP_COPY: COPY4args opcopy;
/// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4args opoffload_abort; /// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4args opoffload_abort;
/// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4args opoffload_status; /// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4args opoffload_status;
/// case OP_WRITE_PLUS: WRITE_PLUS4args opwrite_plus; /// case OP_WRITE_HOLE: WRITE_HOLE4args opwrite_hole;
/// case OP_READ_PLUS: READ_PLUS4args opread_plus; /// case OP_READ_PLUS: READ_PLUS4args opread_plus;
/// case OP_SEEK: SEEK4args opseek; /// case OP_SEEK: SEEK4args opseek;
/// case OP_IO_ADVISE: IO_ADVISE4args opio_advise; /// case OP_IO_ADVISE: IO_ADVISE4args opio_advise;
/// case OP_WRITE_SAME: WRITE_SAME4args opwrite_same;
/// ///
/// /* 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 33 skipping to change at page 69, line 7
/// case OP_RECLAIM_COMPLETE: /// case OP_RECLAIM_COMPLETE:
/// RECLAIM_COMPLETE4res /// RECLAIM_COMPLETE4res
/// opreclaim_complete; /// opreclaim_complete;
/// ///
/// /* Operations new to NFSv4.2 */ /// /* Operations new to NFSv4.2 */
/// case OP_COPY_NOTIFY: COPY_NOTIFY4res opcopy_notify; /// case OP_COPY_NOTIFY: COPY_NOTIFY4res opcopy_notify;
/// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4res opoffload_revoke; /// case OP_OFFLOAD_REVOKE: OFFLOAD_REVOKE4res opoffload_revoke;
/// case OP_COPY: COPY4res opcopy; /// case OP_COPY: COPY4res opcopy;
/// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4res opoffload_abort; /// case OP_OFFLOAD_ABORT: OFFLOAD_ABORT4res opoffload_abort;
/// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4res opoffload_status; /// case OP_OFFLOAD_STATUS: OFFLOAD_STATUS4res opoffload_status;
/// case OP_WRITE_PLUS: WRITE_PLUS4res opwrite_plus; /// case OP_WRITE_HOLE: WRITE_HOLE4res opwrite_hole;
/// case OP_READ_PLUS: READ_PLUS4res opread_plus; /// case OP_READ_PLUS: READ_PLUS4res opread_plus;
/// case OP_SEEK: SEEK4res opseek; /// case OP_SEEK: SEEK4res opseek;
/// case OP_IO_ADVISE: IO_ADVISE4res opio_advise; /// case OP_IO_ADVISE: IO_ADVISE4res opio_advise;
/// case OP_WRITE_SAME: WRITE_SAME4res opwrite_same;
/// ///
/// /* 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<>;
/// }; /// };
skipping to change at page 79, line 45 skipping to change at page 79, line 20
/// version NFS_CB { /// version NFS_CB {
/// void /// void
/// CB_NULL(void) = 0; /// CB_NULL(void) = 0;
/// CB_COMPOUND4res /// CB_COMPOUND4res
/// CB_COMPOUND(CB_COMPOUND4args) = 1; /// CB_COMPOUND(CB_COMPOUND4args) = 1;
/// } = 1; /// } = 1;
/// } = 0x40000000; /// } = 0x40000000;
2. Security Considerations 2. Security Considerations
See the Security Considerations section of See the Security Considerations section of [NFSv42].
[I-D.ietf-nfsv4-minorversion2].
3. IANA Considerations 3. IANA Considerations
See the IANA Considerations section of See the IANA Considerations section of [NFSv42].
[I-D.ietf-nfsv4-minorversion2].
4. Normative References 4. Normative References
[I-D.ietf-nfsv4-minorversion2] [NFSv42] Haynes, T., "NFS Version 4 Minor Version 2", draft-ietf-
Haynes, T., "NFS Version 4 Minor Version 2", nfsv4-minorversion2-22 (Work In Progress), April 2014.
draft-ietf-nfsv4-minorversion2-19 (Work In Progress),
March 2013.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", March 1997. Requirement Levels", March 1997.
[RFC4506] Eisler, M., "XDR: External Data Representation Standard", [RFC4506] Eisler, M., "XDR: External Data Representation Standard",
STD 67, RFC 4506, May 2006. STD 67, RFC 4506, May 2006.
Appendix A. Acknowledgments
Tom Haynes would like to thank NetApp, Inc. for its funding of his
time on this project.
Appendix B. RFC Editor Notes
[RFC Editor: please remove this section prior to publishing this
document as an RFC]
[RFC Editor: prior to publishing this document as an RFC, please
replace all occurrences of NFSv42 with RFCxxxx where xxxx is the RFC
number of the companion document]
Author's Address Author's Address
Thomas Haynes Thomas Haynes
NetApp Primary Data, Inc.
9110 E 66th St 4300 El Camino Real Ste 100
Tulsa, OK 74133 Los Altos, CA 94022
USA USA
Phone: +1-918-307-1415 Phone: +1-408-215-1519
Email: thomas@netapp.com Email: thomas.haynes@primarydata.com
 End of changes. 28 change blocks. 
53 lines changed or deleted 72 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/