draft-ietf-nfsv4-rfc3530bis-dot-x-17.txt   draft-ietf-nfsv4-rfc3530bis-dot-x-18.txt 
NFSv4 T. Haynes, Ed. NFSv4 T. Haynes, Ed.
Internet-Draft NetApp Internet-Draft NetApp
Intended status: Standards Track D. Noveck, Ed. Intended status: Standards Track D. Noveck, Ed.
Expires: November 9, 2013 EMC Expires: February 17, 2014 EMC
May 08, 2013 August 16, 2013
Network File System (NFS) Version 4 Network File System (NFS) Version 4
External Data Representation Standard (XDR) Description External Data Representation Standard (XDR) Description
draft-ietf-nfsv4-rfc3530bis-dot-x-17.txt draft-ietf-nfsv4-rfc3530bis-dot-x-18.txt
Abstract Abstract
The Network File System (NFS) version 4 is a distributed filesystem The Network File System (NFS) version 4 is a distributed filesystem
protocol which owes its heritage to NFS protocol version 2, RFC 1094, protocol which owes its heritage to NFS protocol version 2, RFC 1094,
and version 3, RFC 1813. Unlike earlier versions, the NFS version 4 and version 3, RFC 1813. Unlike earlier versions, the NFS version 4
protocol supports traditional file access, while integrating support protocol supports traditional file access, while integrating support
for file locking and the mount protocol. In addition, support for for file locking and the mount protocol. In addition, support for
strong security (and its negotiation), compound operations, client strong security (and its negotiation), compound operations, client
caching, and internationalization have been added. Of course, caching, and internationalization have been added. Of course,
skipping to change at page 1, line 44 skipping to change at page 1, line 44
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 9, 2013. This Internet-Draft will expire on February 17, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 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 4, line 30 skipping to change at page 4, line 30
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-rfc3530bis-26 /// * draft-ietf-nfsv4-rfc3530bis-27
/// * Last updated Wed May 8 08:43:42 PDT 2013 /// * Last updated Fri Aug 16 16:04:20 PDT 2013
/// */ /// */
/// /* /// /*
/// * Copyright (C) The IETF Trust (2009-2011) /// * Copyright (C) The IETF Trust (2009-2011)
/// * All Rights Reserved. /// * All Rights Reserved.
/// * /// *
/// * Copyright (C) The Internet Society (1998-2011). /// * Copyright (C) The Internet Society (1998-2011).
/// * All Rights Reserved. /// * All Rights Reserved.
/// */ /// */
/// ///
/// /* /// /*
skipping to change at page 5, line 13 skipping to change at page 5, line 13
/// * typedef unsigned int uint32_t; /// * typedef unsigned int uint32_t;
/// * typedef hyper int64_t; /// * typedef hyper int64_t;
/// * typedef unsigned hyper uint64_t; /// * typedef unsigned hyper uint64_t;
/// */ /// */
/// ///
/// /* /// /*
/// * Sizes /// * Sizes
/// */ /// */
/// const NFS4_FHSIZE = 128; /// const NFS4_FHSIZE = 128;
/// const NFS4_VERIFIER_SIZE = 8; /// const NFS4_VERIFIER_SIZE = 8;
/// const NFS4_OTHER_SIZE = 12;
/// const NFS4_OPAQUE_LIMIT = 1024; /// const NFS4_OPAQUE_LIMIT = 1024;
/// ///
/// const NFS4_INT64_MAX = 0x7fffffffffffffff; /// const NFS4_INT64_MAX = 0x7fffffffffffffff;
/// const NFS4_UINT64_MAX = 0xffffffffffffffff; /// const NFS4_UINT64_MAX = 0xffffffffffffffff;
/// const NFS4_INT32_MAX = 0x7fffffff; /// const NFS4_INT32_MAX = 0x7fffffff;
/// const NFS4_UINT32_MAX = 0xffffffff; /// const NFS4_UINT32_MAX = 0xffffffff;
/// ///
/// ///
/// /* /// /*
/// * File types /// * File types
skipping to change at page 7, line 32 skipping to change at page 7, line 33
/// typedef uint32_t count4; /// typedef uint32_t count4;
/// typedef uint64_t length4; /// typedef uint64_t length4;
/// typedef uint32_t mode4; /// typedef uint32_t mode4;
/// typedef uint64_t nfs_cookie4; /// typedef uint64_t nfs_cookie4;
/// typedef opaque nfs_fh4<NFS4_FHSIZE>; /// typedef opaque nfs_fh4<NFS4_FHSIZE>;
/// typedef uint64_t offset4; /// typedef uint64_t offset4;
/// typedef uint32_t qop4; /// typedef uint32_t qop4;
/// typedef opaque sec_oid4<>; /// typedef opaque sec_oid4<>;
/// typedef uint32_t seqid4; /// typedef uint32_t seqid4;
/// typedef opaque utf8string<>; /// typedef opaque utf8string<>;
/// typedef utf8string utf8_expected; /// typedef utf8string utf8str_cis;
/// typedef utf8string utf8val_RECOMMENDED4; /// typedef utf8string utf8str_cs;
/// typedef utf8string utf8val_REQUIRED4; /// typedef utf8string utf8str_mixed;
/// typedef utf8str_cs component4;
/// typedef utf8str_cs linktext4;
/// typedef utf8string ascii_REQUIRED4; /// typedef utf8string ascii_REQUIRED4;
/// typedef utf8_expected comptag4;
/// typedef utf8val_RECOMMENDED4 component4;
/// typedef utf8val_RECOMMENDED4 linktext4;
/// typedef component4 pathname4<>; /// typedef component4 pathname4<>;
/// typedef uint64_t nfs_lockid4; /// typedef uint64_t nfs_lockid4;
/// typedef opaque verifier4[NFS4_VERIFIER_SIZE]; /// typedef opaque verifier4[NFS4_VERIFIER_SIZE];
/// ///
/// ///
/// /* /// /*
/// * Timeval /// * Timeval
/// */ /// */
/// struct nfstime4 { /// struct nfstime4 {
/// int64_t seconds; /// int64_t seconds;
skipping to change at page 8, line 35 skipping to change at page 8, line 35
/// struct fsid4 { /// struct fsid4 {
/// uint64_t major; /// uint64_t major;
/// uint64_t minor; /// uint64_t minor;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Filesystem locations attribute for relocation/migration /// * Filesystem locations attribute for relocation/migration
/// */ /// */
/// struct fs_location4 { /// struct fs_location4 {
/// utf8val_REQUIRED4 server<>; /// utf8str_cis server<>;
/// pathname4 rootpath; /// pathname4 rootpath;
/// }; /// };
/// ///
/// struct fs_locations4 { /// struct fs_locations4 {
/// pathname4 fs_root; /// pathname4 fs_root;
/// fs_location4 locations<>; /// fs_location4 locations<>;
/// }; /// };
/// ///
/// ///
/// /* /// /*
skipping to change at page 11, line 15 skipping to change at page 11, line 15
/// const ACE4_GENERIC_EXECUTE = 0x001200A0; /// const ACE4_GENERIC_EXECUTE = 0x001200A0;
/// ///
/// ///
/// /* /// /*
/// * Access Control Entry definition /// * Access Control Entry definition
/// */ /// */
/// struct nfsace4 { /// struct nfsace4 {
/// acetype4 type; /// acetype4 type;
/// aceflag4 flag; /// aceflag4 flag;
/// acemask4 access_mask; /// acemask4 access_mask;
/// utf8val_REQUIRED4 who; /// utf8str_mixed who;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Field definitions for the fattr4_mode attribute /// * Field definitions for the fattr4_mode attribute
/// */ /// */
/// const MODE4_SUID = 0x800; /* set user id on execution */ /// const MODE4_SUID = 0x800; /* set user id on execution */
/// const MODE4_SGID = 0x400; /* set group id on execution */ /// const MODE4_SGID = 0x400; /* set group id on execution */
/// const MODE4_SVTX = 0x200; /* save text even after use */ /// const MODE4_SVTX = 0x200; /* save text even after use */
/// const MODE4_RUSR = 0x100; /* read permission: owner */ /// const MODE4_RUSR = 0x100; /* read permission: owner */
skipping to change at page 12, line 46 skipping to change at page 12, line 46
/// typedef uint64_t fattr4_maxfilesize; /// typedef uint64_t fattr4_maxfilesize;
/// typedef uint32_t fattr4_maxlink; /// typedef uint32_t fattr4_maxlink;
/// typedef uint32_t fattr4_maxname; /// typedef uint32_t fattr4_maxname;
/// typedef uint64_t fattr4_maxread; /// typedef uint64_t fattr4_maxread;
/// typedef uint64_t fattr4_maxwrite; /// typedef uint64_t fattr4_maxwrite;
/// typedef ascii_REQUIRED4 fattr4_mimetype; /// typedef ascii_REQUIRED4 fattr4_mimetype;
/// typedef mode4 fattr4_mode; /// typedef mode4 fattr4_mode;
/// typedef uint64_t fattr4_mounted_on_fileid; /// typedef uint64_t fattr4_mounted_on_fileid;
/// typedef bool fattr4_no_trunc; /// typedef bool fattr4_no_trunc;
/// typedef uint32_t fattr4_numlinks; /// typedef uint32_t fattr4_numlinks;
/// typedef utf8val_REQUIRED4 fattr4_owner; /// typedef utf8str_mixed fattr4_owner;
/// typedef utf8val_REQUIRED4 fattr4_owner_group; /// typedef utf8str_mixed fattr4_owner_group;
/// typedef uint64_t fattr4_quota_avail_hard; /// typedef uint64_t fattr4_quota_avail_hard;
/// typedef uint64_t fattr4_quota_avail_soft; /// typedef uint64_t fattr4_quota_avail_soft;
/// typedef uint64_t fattr4_quota_used; /// typedef uint64_t fattr4_quota_used;
/// typedef specdata4 fattr4_rawdev; /// typedef specdata4 fattr4_rawdev;
/// typedef uint64_t fattr4_space_avail; /// typedef uint64_t fattr4_space_avail;
/// typedef uint64_t fattr4_space_free; /// typedef uint64_t fattr4_space_free;
/// typedef uint64_t fattr4_space_total; /// typedef uint64_t fattr4_space_total;
/// typedef uint64_t fattr4_space_used; /// typedef uint64_t fattr4_space_used;
/// typedef bool fattr4_system; /// typedef bool fattr4_system;
/// typedef nfstime4 fattr4_time_access; /// typedef nfstime4 fattr4_time_access;
skipping to change at page 15, line 27 skipping to change at page 15, line 27
/// unsigned int cb_program; /// unsigned int cb_program;
/// clientaddr4 cb_location; /// clientaddr4 cb_location;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Stateid /// * Stateid
/// */ /// */
/// struct stateid4 { /// struct stateid4 {
/// uint32_t seqid; /// uint32_t seqid;
/// opaque other[12]; /// opaque other[NFS4_OTHER_SIZE];
/// }; /// };
/// ///
/// /* /// /*
/// * Client ID /// * Client ID
/// */ /// */
/// struct nfs_client_id4 { /// struct nfs_client_id4 {
/// verifier4 verifier; /// verifier4 verifier;
/// opaque id<NFS4_OPAQUE_LIMIT>; /// opaque id<NFS4_OPAQUE_LIMIT>;
/// }; /// };
/// ///
skipping to change at page 34, line 47 skipping to change at page 34, line 47
/// opsetclientid_confirm; /// opsetclientid_confirm;
/// case OP_VERIFY: VERIFY4res opverify; /// case OP_VERIFY: VERIFY4res opverify;
/// case OP_WRITE: WRITE4res opwrite; /// case OP_WRITE: WRITE4res opwrite;
/// case OP_RELEASE_LOCKOWNER: /// case OP_RELEASE_LOCKOWNER:
/// RELEASE_LOCKOWNER4res /// RELEASE_LOCKOWNER4res
/// oprelease_lockowner; /// oprelease_lockowner;
/// case OP_ILLEGAL: ILLEGAL4res opillegal; /// case OP_ILLEGAL: ILLEGAL4res opillegal;
/// }; /// };
/// ///
/// struct COMPOUND4args { /// struct COMPOUND4args {
/// comptag4 tag; /// utf8str_cs tag;
/// uint32_t minorversion; /// uint32_t minorversion;
/// nfs_argop4 argarray<>; /// nfs_argop4 argarray<>;
/// }; /// };
/// ///
/// struct COMPOUND4res { /// struct COMPOUND4res {
/// nfsstat4 status; /// nfsstat4 status;
/// comptag4 tag; /// utf8str_cs tag;
/// nfs_resop4 resarray<>; /// nfs_resop4 resarray<>;
/// }; /// };
/// ///
/// ///
/// /* /// /*
/// * Remote file service routines /// * Remote file service routines
/// */ /// */
/// program NFS4_PROGRAM { /// program NFS4_PROGRAM {
/// version NFS_V4 { /// version NFS_V4 {
/// void /// void
skipping to change at page 36, line 39 skipping to change at page 36, line 39
/// }; /// };
/// ///
/// 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;
/// case OP_CB_ILLEGAL: CB_ILLEGAL4res opcbillegal; /// case OP_CB_ILLEGAL: CB_ILLEGAL4res opcbillegal;
/// }; /// };
/// ///
/// ///
/// struct CB_COMPOUND4args { /// struct CB_COMPOUND4args {
/// comptag4 tag; /// utf8str_cs tag;
/// uint32_t minorversion; /// uint32_t minorversion;
/// uint32_t callback_ident; /// uint32_t callback_ident;
/// nfs_cb_argop4 argarray<>; /// nfs_cb_argop4 argarray<>;
/// }; /// };
/// ///
/// struct CB_COMPOUND4res { /// struct CB_COMPOUND4res {
/// nfsstat4 status; /// nfsstat4 status;
/// comptag4 tag; /// utf8str_cs tag;
/// nfs_cb_resop4 resarray<>; /// nfs_cb_resop4 resarray<>;
/// }; /// };
/// ///
/// ///
/// ///
/// /* /// /*
/// * Program number is in the transient range since the client /// * Program number is in the transient range since the client
/// * will assign the exact transient program number and provide /// * will assign the exact transient program number and provide
/// * that to the server via the SETCLIENTID operation. /// * that to the server via the SETCLIENTID operation.
/// */ /// */
skipping to change at page 37, line 32 skipping to change at page 37, line 32
[I-D.ietf-nfsv4-rfc3530bis]. [I-D.ietf-nfsv4-rfc3530bis].
3. IANA Considerations 3. IANA Considerations
This document does not have any IANA considerations. This document does not have any IANA considerations.
4. Normative References 4. Normative References
[I-D.ietf-nfsv4-rfc3530bis] [I-D.ietf-nfsv4-rfc3530bis]
Haynes, T. and D. Noveck, "NFS Version 4 Protocol", Haynes, T. and D. Noveck, "NFS Version 4 Protocol",
draft-ietf-nfsv4-rfc3530bis-26 (work in progress), draft-ietf-nfsv4-rfc3530bis-27 (work in progress),
May 2013. Aug 2013.
[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 Appendix A. Acknowledgments
David Quigley tested the extraction of the .x file from this document David Quigley tested the extraction of the .x file from this document
and corrected the two resulting errors. and corrected the two resulting errors.
Appendix B. RFC Editor Notes Appendix B. RFC Editor Notes
 End of changes. 16 change blocks. 
23 lines changed or deleted 23 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/