draft-ietf-nfsv4-minorversion1-dot-x-01.txt   draft-ietf-nfsv4-minorversion1-dot-x-02.txt 
NFSv4 S. Shepler NFSv4 S. Shepler
Internet-Draft M. Eisler Internet-Draft M. Eisler
Intended status: Standards Track D. Noveck Intended status: Standards Track D. Noveck
Expires: May 22, 2008 Editors Expires: June 24, 2008 Editors
November 19, 2007 December 22, 2007
NFSv4 Minor Version 1 XDR Description NFSv4 Minor Version 1 XDR Description
draft-ietf-nfsv4-minorversion1-dot-x-01.txt draft-ietf-nfsv4-minorversion1-dot-x-02.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 35 skipping to change at page 1, line 35
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 22, 2008. This Internet-Draft will expire on June 24, 2008.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
Abstract Abstract
This Internet-Draft provides the XDR description for NFSv4 minor This Internet-Draft provides the XDR description for NFSv4 minor
version one. This Internet-Draft is an active work item of the NFSv4 version one.
working group. Active and resolved issues may be found in the issue
tracker at: http://www.nfsv4-editor.org/cgi-bin/roundup/nfsv4. New
issues related to this document should be raised with the NFSv4
Working Group nfsv4@ietf.org.
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 [1]. document are to be interpreted as described in RFC 2119 [1].
Table of Contents Table of Contents
1. XDR Description of NFSv4.1 . . . . . . . . . . . . . . . . . . 3 1. XDR Description of NFSv4.1 . . . . . . . . . . . . . . . . . . 3
2. Security Considerations . . . . . . . . . . . . . . . . . . . 68 2. Security Considerations . . . . . . . . . . . . . . . . . . . 70
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 68 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70
4. References . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4. References . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.1. Normative References . . . . . . . . . . . . . . . . . . . 68 4.1. Normative References . . . . . . . . . . . . . . . . . . . 71
4.2. Informative References . . . . . . . . . . . . . . . . . . 68 4.2. Informative References . . . . . . . . . . . . . . . . . . 71
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 71
Intellectual Property and Copyright Statements . . . . . . . . . . 70 Intellectual Property and Copyright Statements . . . . . . . . . . 73
1. XDR Description of NFSv4.1 1. XDR Description of NFSv4.1
This document contains the XDR ([2]) description of NFSv4.1 protocol This document contains the XDR ([2]) description of NFSv4.1 protocol
([3]). ([3]). In order to facilitate implementations that support both
NFSv4.0 and NFSv4.1, the description includes operations, and other
features of NFSv4.0 that do not apply to NFSv4.1.
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.1: produce the machine readable XDR description of NFSv4.1:
#!/bin/sh #!/bin/sh
grep "^ *///" | sed 's?^ *///??' grep "^ *///" | sed 's?^ *///??'
I.e. if the above script is stored in a filed called "extract.sh", I.e. if the above script is stored in a filed called "y", and this
and this document is in a file called "spec.txt", then the reader can document is in a file called "y", then the reader can do:
do:
sh extract.sh < spec.txt > nfsv41.x sh y < y > y
The effect of the script is to remove leading whitespace from each The effect of the script is to remove leading whitespace 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-minorversion1-17 /// * draft-ietf-nfsv4-minorversion1-18
/// * Last updated Mon Nov 19 02:39:06 CST 2007 /// * Last updated Sat Dec 22 10:23:14 CST 2007
/// */ /// */
////* ////*
/// * Copyright (C) The IETF Trust (2007) /// * Copyright (C) The IETF Trust (2007)
/// * 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 4, line 21 skipping to change at page 4, line 22
/// * 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_OPAQUE_LIMIT = 1024; ///const NFS4_OPAQUE_LIMIT = 1024;
///const NFS4_SESSIONID_SIZE = 16;
///
///const NFS4_INT64_MAX = 0x7fffffffffffffff;
///const NFS4_UINT64_MAX = 0xffffffffffffffff;
///const NFS4_INT32_MAX = 0x7fffffff;
///const NFS4_UINT32_MAX = 0xffffffff;
///
///const NFS4_MAXFILELEN = 0xffffffffffffffff;
///const NFS4_MAXFILEOFF = 0xfffffffffffffffe;
///
/// ///
////* ////*
/// * File types /// * File types
/// */ /// */
///enum nfs_ftype4 { ///enum nfs_ftype4 {
/// NF4REG = 1, /* Regular File */ /// NF4REG = 1, /* Regular File */
/// NF4DIR = 2, /* Directory */ /// NF4DIR = 2, /* Directory */
/// NF4BLK = 3, /* Special File - block device */ /// NF4BLK = 3, /* Special File - block device */
/// NF4CHR = 4, /* Special File - character device */ /// NF4CHR = 4, /* Special File - character device */
/// NF4LNK = 5, /* Symbolic Link */ /// NF4LNK = 5, /* Symbolic Link */
skipping to change at page 6, line 51 skipping to change at page 7, line 14
/// 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. */
/// NFS4ERR_CONN_BINDING_NOT_ENFORCED =10073,/* SET_SSV not OK*/ /// NFS4ERR_CONN_BINDING_NOT_ENFORCED =10073,/* SET_SSV not OK*/
/// 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*/
/// NFS4ERR_ENCR_ALG_UNSUPP= 10079,/* encr alg. not supp. */ /// NFS4ERR_ENCR_ALG_UNSUPP= 10079,/* encr alg. not supp. */
/// NFS4ERR_PNFS_NO_LAYOUT = 10080 /* I/O without a layout */ /// NFS4ERR_PNFS_NO_LAYOUT = 10080,/* I/O without a layout */
/// NFS4ERR_NOT_ONLY_OP = 10081 /* addl ops not allowed */ /// NFS4ERR_NOT_ONLY_OP = 10081,/* addl ops not allowed */
/// NFS4ERR_WRONG_CRED = 10082 /* op done by wrong cred */ /// NFS4ERR_WRONG_CRED = 10082,/* op done by wrong cred */
/// 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_REJECT_DELEG = 10085,/* cb rejected delegation */
/// NFS4ERR_RETURNCONFLICT = 10086 /* layout get before return*/
///}; ///};
/// ///
////* ////*
/// * 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;
///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 sequenceid4; ///typedef uint32_t sequenceid4;
///typedef uint32_t seqid4; ///typedef uint32_t seqid4;
///typedef opaque sessionid4[16]; ///typedef opaque sessionid4[NFS4_SESSIONID_SIZE];
///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];
/// ///
skipping to change at page 8, line 4 skipping to change at page 8, line 18
/// uint32_t nseconds; /// uint32_t nseconds;
///}; ///};
/// ///
///enum time_how4 { ///enum time_how4 {
/// SET_TO_SERVER_TIME4 = 0, /// SET_TO_SERVER_TIME4 = 0,
/// SET_TO_CLIENT_TIME4 = 1 /// SET_TO_CLIENT_TIME4 = 1
///}; ///};
/// ///
///union settime4 switch (time_how4 set_it) { ///union settime4 switch (time_how4 set_it) {
/// case SET_TO_CLIENT_TIME4: /// case SET_TO_CLIENT_TIME4:
/// nfstime4 time; /// nfstime4 time;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///
///typedef uint32_t nfs_lease4;
///
////* ////*
/// * File attribute definitions /// * File attribute definitions
/// */ /// */
/// ///
////* ////*
/// * FSID structure for major/minor /// * FSID structure for major/minor
/// */ /// */
///struct fsid4 { ///struct fsid4 {
/// uint64_t major; /// uint64_t major;
/// uint64_t minor; /// uint64_t minor;
skipping to change at page 9, line 10 skipping to change at page 9, line 27
/// * Values for the fattr4_aclsupport attribute. /// * Values for the fattr4_aclsupport attribute.
/// */ /// */
///const ACL4_SUPPORT_ALLOW_ACL = 0x00000001; ///const ACL4_SUPPORT_ALLOW_ACL = 0x00000001;
///const ACL4_SUPPORT_DENY_ACL = 0x00000002; ///const ACL4_SUPPORT_DENY_ACL = 0x00000002;
///const ACL4_SUPPORT_AUDIT_ACL = 0x00000004; ///const ACL4_SUPPORT_AUDIT_ACL = 0x00000004;
///const ACL4_SUPPORT_ALARM_ACL = 0x00000008; ///const ACL4_SUPPORT_ALARM_ACL = 0x00000008;
/// ///
/// ///
///typedef uint32_t acetype4; ///typedef uint32_t acetype4;
/// ///
///
////* ////*
/// * acetype4 values, others can be added as needed. /// * acetype4 values, others can be added as needed.
/// */ /// */
///const ACE4_ACCESS_ALLOWED_ACE_TYPE = 0x00000000; ///const ACE4_ACCESS_ALLOWED_ACE_TYPE = 0x00000000;
///const ACE4_ACCESS_DENIED_ACE_TYPE = 0x00000001; ///const ACE4_ACCESS_DENIED_ACE_TYPE = 0x00000001;
///const ACE4_SYSTEM_AUDIT_ACE_TYPE = 0x00000002; ///const ACE4_SYSTEM_AUDIT_ACE_TYPE = 0x00000002;
///const ACE4_SYSTEM_ALARM_ACE_TYPE = 0x00000003; ///const ACE4_SYSTEM_ALARM_ACE_TYPE = 0x00000003;
/// ///
/// ///
///
////* ////*
/// * ACE flag /// * ACE flag
/// */ /// */
///typedef uint32_t aceflag4; ///typedef uint32_t aceflag4;
/// ///
///
////* ////*
/// * ACE flag values /// * ACE flag values
/// */ /// */
///const ACE4_FILE_INHERIT_ACE = 0x00000001; ///const ACE4_FILE_INHERIT_ACE = 0x00000001;
///const ACE4_DIRECTORY_INHERIT_ACE = 0x00000002; ///const ACE4_DIRECTORY_INHERIT_ACE = 0x00000002;
///const ACE4_NO_PROPAGATE_INHERIT_ACE = 0x00000004; ///const ACE4_NO_PROPAGATE_INHERIT_ACE = 0x00000004;
///const ACE4_INHERIT_ONLY_ACE = 0x00000008; ///const ACE4_INHERIT_ONLY_ACE = 0x00000008;
///const ACE4_SUCCESSFUL_ACCESS_ACE_FLAG = 0x00000010; ///const ACE4_SUCCESSFUL_ACCESS_ACE_FLAG = 0x00000010;
///const ACE4_FAILED_ACCESS_ACE_FLAG = 0x00000020; ///const ACE4_FAILED_ACCESS_ACE_FLAG = 0x00000020;
///const ACE4_IDENTIFIER_GROUP = 0x00000040; ///const ACE4_IDENTIFIER_GROUP = 0x00000040;
///const ACE4_INHERITED_ACE = 0x00000080; ///const ACE4_INHERITED_ACE = 0x00000080;
/// ///
///
///
////* ////*
/// * ACE mask /// * ACE mask
/// */ /// */
///typedef uint32_t acemask4; ///typedef uint32_t acemask4;
/// ///
///
////* ////*
/// * ACE mask values /// * ACE mask values
/// */ /// */
///const ACE4_READ_DATA = 0x00000001; ///const ACE4_READ_DATA = 0x00000001;
///const ACE4_LIST_DIRECTORY = 0x00000001; ///const ACE4_LIST_DIRECTORY = 0x00000001;
///const ACE4_WRITE_DATA = 0x00000002; ///const ACE4_WRITE_DATA = 0x00000002;
///const ACE4_ADD_FILE = 0x00000002; ///const ACE4_ADD_FILE = 0x00000002;
///const ACE4_APPEND_DATA = 0x00000004; ///const ACE4_APPEND_DATA = 0x00000004;
///const ACE4_ADD_SUBDIRECTORY = 0x00000004; ///const ACE4_ADD_SUBDIRECTORY = 0x00000004;
///const ACE4_READ_NAMED_ATTRS = 0x00000008; ///const ACE4_READ_NAMED_ATTRS = 0x00000008;
skipping to change at page 10, line 17 skipping to change at page 10, line 40
///const ACE4_WRITE_ATTRIBUTES = 0x00000100; ///const ACE4_WRITE_ATTRIBUTES = 0x00000100;
///const ACE4_WRITE_RETENTION = 0x00000200; ///const ACE4_WRITE_RETENTION = 0x00000200;
///const ACE4_WRITE_RETENTION_HOLD = 0x00000400; ///const ACE4_WRITE_RETENTION_HOLD = 0x00000400;
/// ///
///const ACE4_DELETE = 0x00010000; ///const ACE4_DELETE = 0x00010000;
///const ACE4_READ_ACL = 0x00020000; ///const ACE4_READ_ACL = 0x00020000;
///const ACE4_WRITE_ACL = 0x00040000; ///const ACE4_WRITE_ACL = 0x00040000;
///const ACE4_WRITE_OWNER = 0x00080000; ///const ACE4_WRITE_OWNER = 0x00080000;
///const ACE4_SYNCHRONIZE = 0x00100000; ///const ACE4_SYNCHRONIZE = 0x00100000;
/// ///
///
////* ////*
/// * ACE4_GENERIC_READ -- defined as combination of /// * ACE4_GENERIC_READ -- defined as combination of
/// * ACE4_READ_ACL | /// * ACE4_READ_ACL |
/// * ACE4_READ_DATA | /// * ACE4_READ_DATA |
/// * ACE4_READ_ATTRIBUTES | /// * ACE4_READ_ATTRIBUTES |
/// * ACE4_SYNCHRONIZE /// * ACE4_SYNCHRONIZE
/// */ /// */
/// ///
///const ACE4_GENERIC_READ = 0x00120081; ///const ACE4_GENERIC_READ = 0x00120081;
/// ///
skipping to change at page 11, line 11 skipping to change at page 11, line 35
////* ////*
/// * 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;
/// utf8str_mixed who; /// utf8str_mixed who;
///}; ///};
/// ///
///
////* ////*
/// * ACL flag /// * ACL flag
/// */ /// */
/// ///
///typedef uint32_t aclflag4; ///typedef uint32_t aclflag4;
/// ///
////* ////*
/// * ACL flag values /// * ACL flag values
/// */ /// */
///const ACL4_AUTO_INHERIT = 0x00000001; ///const ACL4_AUTO_INHERIT = 0x00000001;
///const ACL4_PROTECTED = 0x00000002; ///const ACL4_PROTECTED = 0x00000002;
///const ACL4_DEFAULTED = 0x00000004; ///const ACL4_DEFAULTED = 0x00000004;
/// ///
///
////* ////*
/// * Version 4.1 Access Control List definition /// * Version 4.1 Access Control List definition
/// */ /// */
///struct nfsacl41 { ///struct nfsacl41 {
/// aclflag4 na41_flag; /// aclflag4 na41_flag;
/// nfsace4 na41_aces<>; /// nfsace4 na41_aces<>;
///}; ///};
/// ///
////* ////*
/// * Field definitions for the fattr4_mode /// * Field definitions for the fattr4_mode
skipping to change at page 11, line 49 skipping to change at page 12, line 27
///const MODE4_RUSR = 0x100; /* read permission: owner */ ///const MODE4_RUSR = 0x100; /* read permission: owner */
///const MODE4_WUSR = 0x080; /* write permission: owner */ ///const MODE4_WUSR = 0x080; /* write permission: owner */
///const MODE4_XUSR = 0x040; /* execute permission: owner */ ///const MODE4_XUSR = 0x040; /* execute permission: owner */
///const MODE4_RGRP = 0x020; /* read permission: group */ ///const MODE4_RGRP = 0x020; /* read permission: group */
///const MODE4_WGRP = 0x010; /* write permission: group */ ///const MODE4_WGRP = 0x010; /* write permission: group */
///const MODE4_XGRP = 0x008; /* execute permission: group */ ///const MODE4_XGRP = 0x008; /* execute permission: group */
///const MODE4_ROTH = 0x004; /* read permission: other */ ///const MODE4_ROTH = 0x004; /* read permission: other */
///const MODE4_WOTH = 0x002; /* write permission: other */ ///const MODE4_WOTH = 0x002; /* write permission: other */
///const MODE4_XOTH = 0x001; /* execute permission: other */ ///const MODE4_XOTH = 0x001; /* execute permission: other */
/// ///
///
////* ////*
/// * Masked mode for the mode_set_masked attribute. /// * Masked mode for the mode_set_masked attribute.
/// */ /// */
///struct mode_masked4 { ///struct mode_masked4 {
/// mode4 mm_value_to_set; /* Values of bits /// mode4 mm_value_to_set; /* Values of bits
/// to set or reset /// to set or reset
/// in mode. */ /// in mode. */
/// ///
/// mode4 mm_mask_bits; /* Mask of bits to /// mode4 mm_mask_bits; /* Mask of bits to
/// set or reset /// set or reset
skipping to change at page 12, line 49 skipping to change at page 13, line 28
////* ////*
/// * data structures new to NFSv4.1 /// * data structures new to NFSv4.1
/// */ /// */
/// ///
///struct nfs_impl_id4 { ///struct nfs_impl_id4 {
/// utf8str_cis nii_domain; /// utf8str_cis nii_domain;
/// utf8str_cs nii_name; /// utf8str_cs nii_name;
/// nfstime4 nii_date; /// nfstime4 nii_date;
///}; ///};
/// ///
///
////* ////*
/// * Stateid /// * Stateid
/// */ /// */
///struct stateid4 { ///struct stateid4 {
/// uint32_t seqid; /// uint32_t seqid;
/// opaque other[12]; /// opaque other[12];
///}; ///};
/// ///
///
///enum layouttype4 { ///enum layouttype4 {
/// LAYOUT4_NFSV4_1_FILES = 1, /// LAYOUT4_NFSV4_1_FILES = 1,
/// LAYOUT4_OSD2_OBJECTS = 2, /// LAYOUT4_OSD2_OBJECTS = 2,
/// LAYOUT4_BLOCK_VOLUME = 3 /// LAYOUT4_BLOCK_VOLUME = 3
///}; ///};
/// ///
///struct layout_content4 { ///struct layout_content4 {
/// layouttype4 loc_type; /// layouttype4 loc_type;
/// opaque loc_body<>; /// opaque loc_body<>;
///}; ///};
/// ///
///
///%/* ///%/*
///%/* LAYOUT4_OSD2_OBJECTS loc_body description ///%/* LAYOUT4_OSD2_OBJECTS loc_body description
///% * is in a separate .x file ///% * is in a separate .x file
///% */ ///% */
///% ///%
///%/* ///%/*
///%/* LAYOUT4_BLOCK_VOLUME loc_body description ///%/* LAYOUT4_BLOCK_VOLUME loc_body description
///% * is in a separate .x file ///% * is in a separate .x file
///% */ ///% */
/// ///
skipping to change at page 13, line 49 skipping to change at page 14, line 29
/// LAYOUTIOMODE4_ANY = 3 /// LAYOUTIOMODE4_ANY = 3
///}; ///};
/// ///
///struct layout4 { ///struct layout4 {
/// offset4 lo_offset; /// offset4 lo_offset;
/// length4 lo_length; /// length4 lo_length;
/// layoutiomode4 lo_iomode; /// layoutiomode4 lo_iomode;
/// layout_content4 lo_content; /// layout_content4 lo_content;
///}; ///};
/// ///
///struct deviceid4 { ///const NFS4_DEVICEID4_SIZE = 16;
/// uint64_t did_major; ///
/// uint64_t did_minor; ///typedef opaque deviceid4[NFS4_DEVICEID4_SIZE];
///};
/// ///
///struct device_addr4 { ///struct device_addr4 {
/// layouttype4 da_layout_type; /// layouttype4 da_layout_type;
/// opaque da_addr_body<>; /// opaque da_addr_body<>;
///}; ///};
/// ///
////*
/// * Device notification types.
/// */
///const DEVICE_NOTIFICATION4_ADD = 0;
///const DEVICE_NOTIFICATION4_CHANGE = 1;
///const DEVICE_NOTIFICATION4_DELETE = 2;
/// ///
///typedef bitmap4 device_notification_mask4; ///typedef bitmap4 device_notification_mask4;
/// ///
///struct devlist_item4 { ///struct devlist_item4 {
/// deviceid4 dli_id; /// deviceid4 dli_id;
/// stateid4 dli_stateid;
/// device_addr4 dli_device_addr; /// device_addr4 dli_device_addr;
///}; ///};
/// ///
///
///struct layoutupdate4 { ///struct layoutupdate4 {
/// layouttype4 lou_type; /// layouttype4 lou_type;
/// opaque lou_body<>; /// opaque lou_body<>;
///}; ///};
/// ///
///% ///%
////* Constants used for LAYOUTRETURN and CB_LAYOUTRECALL */
///const LAYOUT4_RET_REC_FILE = 1;
///const LAYOUT4_RET_REC_FSID = 2;
///const LAYOUT4_RET_REC_ALL = 3;
///%
///enum layoutreturn_type4 { ///enum layoutreturn_type4 {
/// LAYOUTRETURN4_FILE = 1, /// LAYOUTRETURN4_FILE = LAYOUT4_RET_REC_FILE,
/// LAYOUTRETURN4_FSID = 2, /// LAYOUTRETURN4_FSID = LAYOUT4_RET_REC_FSID,
/// LAYOUTRETURN4_ALL = 3 /// 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<>;
///}; ///};
/// ///
///union layoutreturn4 switch(layoutreturn_type4 lr_returntype) { ///union layoutreturn4 switch(layoutreturn_type4 lr_returntype) {
/// case LAYOUTRETURN4_FILE: /// case LAYOUTRETURN4_FILE:
/// layoutreturn_file4 lr_layout; /// layoutreturn_file4 lr_layout;
/// default: /// default:
/// void; /// void;
///}; ///};
///% ///%
/// ///
///
///enum fs4_status_type { ///enum fs4_status_type {
/// STATUS4_FIXED = 1, /// STATUS4_FIXED = 1,
/// STATUS4_UPDATED = 2, /// STATUS4_UPDATED = 2,
/// STATUS4_VERSIONED = 3, /// STATUS4_VERSIONED = 3,
/// STATUS4_WRITABLE = 4, /// STATUS4_WRITABLE = 4,
/// STATUS4_ABSENT = 5 /// STATUS4_ABSENT = 5
///}; ///};
/// ///
///struct fs4_status { ///struct fs4_status {
/// fs4_status_type fss_type; /// fs4_status_type fss_type;
/// utf8str_cs fss_source; /// utf8str_cs fss_source;
/// utf8str_cs fss_current; /// utf8str_cs fss_current;
/// int32_t fss_age; /// int32_t fss_age;
/// nfstime4 fss_version; /// nfstime4 fss_version;
///}; ///};
/// ///
///
///const TH4_READ_SIZE = 0; ///const TH4_READ_SIZE = 0;
///const TH4_WRITE_SIZE = 1; ///const TH4_WRITE_SIZE = 1;
///const TH4_READ_IOSIZE = 2; ///const TH4_READ_IOSIZE = 2;
///const TH4_WRITE_IOSIZE = 3; ///const TH4_WRITE_IOSIZE = 3;
/// ///
///typedef length4 threshold4_read_size; ///typedef length4 threshold4_read_size;
///typedef length4 threshold4_write_size; ///typedef length4 threshold4_write_size;
///typedef length4 threshold4_read_iosize; ///typedef length4 threshold4_read_iosize;
///typedef length4 threshold4_write_iosize; ///typedef length4 threshold4_write_iosize;
/// ///
skipping to change at page 16, line 7 skipping to change at page 16, line 31
///struct retention_get4 { ///struct retention_get4 {
/// uint64_t rg_duration; /// uint64_t rg_duration;
/// nfstime4 rg_begin_time<1>; /// nfstime4 rg_begin_time<1>;
///}; ///};
/// ///
///struct retention_set4 { ///struct retention_set4 {
/// bool rs_enable; /// bool rs_enable;
/// uint64_t rs_duration<1>; /// uint64_t rs_duration<1>;
///}; ///};
/// ///
///const FSCHARSET_CAP4_CONTAINS_NON_UTF8 = 0x1;
///const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 = 0x2;
///
///typedef uint32_t fs_charset_cap4;
///
///
////* ////*
/// * NFSv4.1 attributes /// * NFSv4.1 attributes
/// */ /// */
///typedef bitmap4 fattr4_supported_attrs; ///typedef bitmap4 fattr4_supported_attrs;
///typedef bitmap4 fattr4_suppattr_exclcreat;
///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;
///typedef bool fattr4_named_attr; ///typedef bool fattr4_named_attr;
///typedef fsid4 fattr4_fsid; ///typedef fsid4 fattr4_fsid;
///typedef bool fattr4_unique_handles; ///typedef bool fattr4_unique_handles;
///typedef uint32_t fattr4_lease_time; ///typedef nfs_lease4 fattr4_lease_time;
///typedef nfsstat4 fattr4_rdattr_error; ///typedef nfsstat4 fattr4_rdattr_error;
///
///typedef nfsace4 fattr4_acl<>; ///typedef nfsace4 fattr4_acl<>;
///typedef uint32_t fattr4_aclsupport; ///typedef uint32_t fattr4_aclsupport;
///typedef bool fattr4_archive; ///typedef bool fattr4_archive;
///typedef bool fattr4_cansettime; ///typedef bool fattr4_cansettime;
///typedef bool fattr4_case_insensitive; ///typedef bool fattr4_case_insensitive;
///typedef bool fattr4_case_preserving; ///typedef bool fattr4_case_preserving;
///typedef bool fattr4_chown_restricted; ///typedef bool fattr4_chown_restricted;
///typedef uint64_t fattr4_fileid; ///typedef uint64_t fattr4_fileid;
///typedef uint64_t fattr4_files_avail; ///typedef uint64_t fattr4_files_avail;
///typedef nfs_fh4 fattr4_filehandle; ///typedef nfs_fh4 fattr4_filehandle;
skipping to change at page 17, line 28 skipping to change at page 18, line 10
///typedef nfstime4 fattr4_time_modify; ///typedef nfstime4 fattr4_time_modify;
///typedef settime4 fattr4_time_modify_set; ///typedef settime4 fattr4_time_modify_set;
////* ////*
/// * attributes new to NFSv4.1 /// * attributes new to NFSv4.1
/// */ /// */
///typedef nfstime4 fattr4_dir_notif_delay; ///typedef nfstime4 fattr4_dir_notif_delay;
///typedef nfstime4 fattr4_dirent_notif_delay; ///typedef nfstime4 fattr4_dirent_notif_delay;
///typedef bool fattr4_absent; ///typedef bool fattr4_absent;
///typedef layouttype4 fattr4_fs_layout_types<>; ///typedef layouttype4 fattr4_fs_layout_types<>;
///typedef fs4_status fattr4_fs_status; ///typedef fs4_status fattr4_fs_status;
///typedef fs_charset_cap4 fattr4_fs_charset_cap4;
///typedef uint32_t fattr4_layout_alignment; ///typedef uint32_t fattr4_layout_alignment;
///typedef uint32_t fattr4_layout_blksize; ///typedef uint32_t fattr4_layout_blksize;
///typedef layouthint4 fattr4_layout_hint; ///typedef layouthint4 fattr4_layout_hint;
///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;
skipping to change at page 18, line 10 skipping to change at page 18, line 41
///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;
///const FATTR4_SYMLINK_SUPPORT = 6; ///const FATTR4_SYMLINK_SUPPORT = 6;
///const FATTR4_NAMED_ATTR = 7; ///const FATTR4_NAMED_ATTR = 7;
///const FATTR4_FSID = 8; ///const FATTR4_FSID = 8;
///const FATTR4_UNIQUE_HANDLES = 9; ///const FATTR4_UNIQUE_HANDLES = 9;
///const FATTR4_LEASE_TIME = 10; ///const FATTR4_LEASE_TIME = 10;
///const FATTR4_RDATTR_ERROR = 11; ///const FATTR4_RDATTR_ERROR = 11;
///const FATTR4_FILEHANDLE = 19; ///const FATTR4_FILEHANDLE = 19;
///const FATTR4_SUPPATTR_EXCLCREAT = 75;
/// ///
////* ////*
/// * Recommended Attributes /// * Recommended Attributes
/// */ /// */
///const FATTR4_ACL = 12; ///const FATTR4_ACL = 12;
///const FATTR4_ACLSUPPORT = 13; ///const FATTR4_ACLSUPPORT = 13;
///const FATTR4_ARCHIVE = 14; ///const FATTR4_ARCHIVE = 14;
///const FATTR4_CANSETTIME = 15; ///const FATTR4_CANSETTIME = 15;
///const FATTR4_CASE_INSENSITIVE = 16; ///const FATTR4_CASE_INSENSITIVE = 16;
///const FATTR4_CASE_PRESERVING = 17; ///const FATTR4_CASE_PRESERVING = 17;
skipping to change at page 19, line 13 skipping to change at page 19, line 45
///const FATTR4_TIME_CREATE = 50; ///const FATTR4_TIME_CREATE = 50;
///const FATTR4_TIME_DELTA = 51; ///const FATTR4_TIME_DELTA = 51;
///const FATTR4_TIME_METADATA = 52; ///const FATTR4_TIME_METADATA = 52;
///const FATTR4_TIME_MODIFY = 53; ///const FATTR4_TIME_MODIFY = 53;
///const FATTR4_TIME_MODIFY_SET = 54; ///const FATTR4_TIME_MODIFY_SET = 54;
///const FATTR4_MOUNTED_ON_FILEID = 55; ///const FATTR4_MOUNTED_ON_FILEID = 55;
///const FATTR4_DIR_NOTIF_DELAY = 56; ///const FATTR4_DIR_NOTIF_DELAY = 56;
///const FATTR4_DIRENT_NOTIF_DELAY = 57; ///const FATTR4_DIRENT_NOTIF_DELAY = 57;
///const FATTR4_DACL = 58; ///const FATTR4_DACL = 58;
///const FATTR4_SACL = 59; ///const FATTR4_SACL = 59;
///const FATTR4_CHANG_POLICY = 60; ///const FATTR4_CHANGE_POLICY = 60;
///const FATTR4_FS_STATUS = 61; ///const FATTR4_FS_STATUS = 61;
///const FATTR4_FS_LAYOUT_TYPES = 62; ///const FATTR4_FS_LAYOUT_TYPE = 62;
///const FATTR4_LAYOUT_HINT = 63; ///const FATTR4_LAYOUT_HINT = 63;
///const FATTR4_LAYOUT_TYPES = 64; ///const FATTR4_LAYOUT_TYPE = 64;
///const FATTR4_LAYOUT_BLKSIZE = 65; ///const FATTR4_LAYOUT_BLKSIZE = 65;
///const FATTR4_LAYOUT_ALIGNMENT = 66; ///const FATTR4_LAYOUT_ALIGNMENT = 66;
///const FATTR4_FS_LOCATIONS_INFO = 67; ///const FATTR4_FS_LOCATIONS_INFO = 67;
///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;
/// ///
////* ////*
/// * 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 20, line 25 skipping to change at page 21, line 9
///}; ///};
/// ///
////* ////*
/// * NFSv4.1 Client Owner (aka long hand client id) /// * NFSv4.1 Client Owner (aka long hand client id)
/// */ /// */
///struct client_owner4 { ///struct client_owner4 {
/// verifier4 co_verifier; /// verifier4 co_verifier;
/// opaque co_ownerid<NFS4_OPAQUE_LIMIT>; /// opaque co_ownerid<NFS4_OPAQUE_LIMIT>;
///}; ///};
/// ///
///
////*
/// * NFSv4.1 server Owner
/// */
///struct server_owner4 {
/// uint64_t so_minor_id;
/// opaque so_major_id<NFS4_OPAQUE_LIMIT>;
///};
///
///
///struct state_owner4 { ///struct state_owner4 {
/// clientid4 clientid; /// clientid4 clientid;
/// opaque owner<NFS4_OPAQUE_LIMIT>; /// opaque owner<NFS4_OPAQUE_LIMIT>;
///}; ///};
/// ///
///typedef state_owner4 open_owner4; ///typedef state_owner4 open_owner4;
///typedef state_owner4 lock_owner4; ///typedef state_owner4 lock_owner4;
/// ///
/// ///
///enum nfs_lock_type4 { ///enum nfs_lock_type4 {
skipping to change at page 23, line 26 skipping to change at page 24, line 20
///const NFL4_UFLG_MASK = 0x0000003F; ///const NFL4_UFLG_MASK = 0x0000003F;
///const NFL4_UFLG_DENSE = 0x00000001; ///const NFL4_UFLG_DENSE = 0x00000001;
///const NFL4_UFLG_COMMIT_THRU_MDS = 0x00000002; ///const NFL4_UFLG_COMMIT_THRU_MDS = 0x00000002;
///const NFL4_UFLG_STRIPE_UNIT_SIZE_MASK ///const NFL4_UFLG_STRIPE_UNIT_SIZE_MASK
/// = 0xFFFFFFC0; /// = 0xFFFFFFC0;
/// ///
///typedef uint32_t nfl_util4; ///typedef uint32_t nfl_util4;
/// ///
///% ///%
/// ///
///%
///%/* Encoded in the loh_body field of type layouthint4: */
///%
///enum filelayout_hint_care4 { ///enum filelayout_hint_care4 {
/// NFLH4_CARE_DENSE = NFL4_UFLG_DENSE, /// NFLH4_CARE_DENSE = NFL4_UFLG_DENSE,
/// ///
/// NFLH4_CARE_COMMIT_THRU_MDS /// NFLH4_CARE_COMMIT_THRU_MDS
/// = NFL4_UFLG_COMMIT_THRU_MDS, /// = NFL4_UFLG_COMMIT_THRU_MDS,
/// ///
/// NFLH4_CARE_STRIPE_UNIT_SIZE /// NFLH4_CARE_STRIPE_UNIT_SIZE
/// = 0x00000040, /// = 0x00000040,
/// ///
/// NFLH4_CARE_STRIPE_COUNT = 0x00000080 /// NFLH4_CARE_STRIPE_COUNT = 0x00000080
///}; ///};
///% ///%
///%/* Encoded in the loh_body field of type layouthint4: */
///%
///struct nfsv4_1_file_layouthint4 { ///struct nfsv4_1_file_layouthint4 {
/// uint32_t nflh_care; /// uint32_t nflh_care;
/// nfl_util4 nflh_util; /// nfl_util4 nflh_util;
/// count4 nflh_stripe_count; /// count4 nflh_stripe_count;
///}; ///};
/// ///
///% ///%
/// ///
///% ///%
///typedef netaddr4 multipath_list4<>; ///typedef netaddr4 multipath_list4<>;
skipping to change at page 24, line 18 skipping to change at page 25, line 11
///}; ///};
/// ///
///% ///%
/// ///
///% ///%
///%/* Encoded in the loc_body field of type layout_content4: */ ///%/* Encoded in the loc_body field of type layout_content4: */
///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;
/// nfs_fh4 nfl_fh_list<>; /// nfs_fh4 nfl_fh_list<>;
///}; ///};
/// ///
///% ///%
/// ///
///%/* ///%/*
///% * Encoded in the lou_body field of type layoutupdate4: ///% * Encoded in the lou_body field of type layoutupdate4:
///% * Nothing. lou_body is a zero length array of octets. ///% * Nothing. lou_body is a zero length array of octets.
///% */ ///% */
///% ///%
skipping to change at page 26, line 17 skipping to change at page 27, line 11
/// fattr4 createattrs; /// fattr4 createattrs;
///}; ///};
/// ///
///struct CREATE4resok { ///struct CREATE4resok {
/// change_info4 cinfo; /// change_info4 cinfo;
/// bitmap4 attrset; /* attributes set */ /// bitmap4 attrset; /* attributes set */
///}; ///};
/// ///
///union CREATE4res switch (nfsstat4 status) { ///union CREATE4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// /* new CURRENTFH: created object */
/// CREATE4resok resok4; /// CREATE4resok resok4;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct DELEGPURGE4args { ///struct DELEGPURGE4args {
/// clientid4 clientid; /// clientid4 clientid;
///}; ///};
/// ///
///struct DELEGPURGE4res { ///struct DELEGPURGE4res {
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct DELEGRETURN4args { ///struct DELEGRETURN4args {
/// /* CURRENT_FH: delegated file */ /// /* CURRENT_FH: delegated object */
/// stateid4 deleg_stateid; /// stateid4 deleg_stateid;
///}; ///};
/// ///
///struct DELEGRETURN4res { ///struct DELEGRETURN4res {
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct GETATTR4args { ///struct GETATTR4args {
/// /* CURRENT_FH: directory or file */ /// /* CURRENT_FH: object */
/// bitmap4 attr_request; /// bitmap4 attr_request;
///}; ///};
/// ///
///struct GETATTR4resok { ///struct GETATTR4resok {
/// fattr4 obj_attributes; /// fattr4 obj_attributes;
///}; ///};
/// ///
///union GETATTR4res switch (nfsstat4 status) { ///union GETATTR4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// GETATTR4resok resok4; /// GETATTR4resok resok4;
skipping to change at page 29, line 37 skipping to change at page 30, line 32
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct LOOKUP4args { ///struct LOOKUP4args {
/// /* CURRENT_FH: directory */ /// /* CURRENT_FH: directory */
/// component4 objname; /// component4 objname;
///}; ///};
/// ///
///struct LOOKUP4res { ///struct LOOKUP4res {
/// /* CURRENT_FH: object */ /// /* New CURRENT_FH: object */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct LOOKUPP4res { ///struct LOOKUPP4res {
/// /* CURRENT_FH: directory */ /// /* new CURRENT_FH: parent directory */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct NVERIFY4args { ///struct NVERIFY4args {
/// /* CURRENT_FH: object */ /// /* CURRENT_FH: object */
/// fattr4 obj_attributes; /// fattr4 obj_attributes;
///}; ///};
/// ///
///struct NVERIFY4res { ///struct NVERIFY4res {
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
////* ////*
/// * Various definitions for OPEN /// * Various definitions for OPEN
/// */ /// */
///enum createmode4 { ///enum createmode4 {
/// UNCHECKED4 = 0, /// UNCHECKED4 = 0,
/// GUARDED4 = 1, /// GUARDED4 = 1,
/// EXCLUSIVE4 = 2 /// /* Deprecated in NFSv4.1. */
/// EXCLUSIVE4 = 2,
/// /*
/// * New to NFSv4.1. If session is persistent,
/// * GUARDED4 MUST be used. Otherwise, use
/// * EXCLUSIVE4_1 instead of EXCLUSIVE4.
/// */
/// EXCLUSIVE4_1 = 3
///};
///
///struct creatverfattr {
/// verifier4 cva_verf;
/// fattr4 cva_attrs;
///}; ///};
/// ///
///union createhow4 switch (createmode4 mode) { ///union createhow4 switch (createmode4 mode) {
/// case UNCHECKED4: /// case UNCHECKED4:
/// case GUARDED4: /// case GUARDED4:
/// fattr4 createattrs; /// fattr4 createattrs;
/// case EXCLUSIVE4: /// case EXCLUSIVE4:
/// verifier4 createverf; /// verifier4 createverf;
/// case EXCLUSIVE4_1:
/// creatverfattr ch_createboth;
///}; ///};
/// ///
///enum opentype4 { ///enum opentype4 {
/// OPEN4_NOCREATE = 0, /// OPEN4_NOCREATE = 0,
/// OPEN4_CREATE = 1 /// OPEN4_CREATE = 1
///}; ///};
/// ///
///union openflag4 switch (opentype4 opentype) { ///union openflag4 switch (opentype4 opentype) {
/// case OPEN4_CREATE: /// case OPEN4_CREATE:
/// createhow4 how; /// createhow4 how;
skipping to change at page 31, line 21 skipping to change at page 32, line 30
/// */ /// */
///const OPEN4_SHARE_ACCESS_READ = 0x00000001; ///const OPEN4_SHARE_ACCESS_READ = 0x00000001;
///const OPEN4_SHARE_ACCESS_WRITE = 0x00000002; ///const OPEN4_SHARE_ACCESS_WRITE = 0x00000002;
///const OPEN4_SHARE_ACCESS_BOTH = 0x00000003; ///const OPEN4_SHARE_ACCESS_BOTH = 0x00000003;
/// ///
///const OPEN4_SHARE_DENY_NONE = 0x00000000; ///const OPEN4_SHARE_DENY_NONE = 0x00000000;
///const OPEN4_SHARE_DENY_READ = 0x00000001; ///const OPEN4_SHARE_DENY_READ = 0x00000001;
///const OPEN4_SHARE_DENY_WRITE = 0x00000002; ///const OPEN4_SHARE_DENY_WRITE = 0x00000002;
///const OPEN4_SHARE_DENY_BOTH = 0x00000003; ///const OPEN4_SHARE_DENY_BOTH = 0x00000003;
/// ///
///
////* new flags for share_access field of OPEN4args */ ////* new flags for share_access field of OPEN4args */
///const OPEN4_SHARE_ACCESS_WANT_DELEG_MASK = 0xFF00; ///const OPEN4_SHARE_ACCESS_WANT_DELEG_MASK = 0xFF00;
///const OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE = 0x0000; ///const OPEN4_SHARE_ACCESS_WANT_NO_PREFERENCE = 0x0000;
///const OPEN4_SHARE_ACCESS_WANT_READ_DELEG = 0x0100; ///const OPEN4_SHARE_ACCESS_WANT_READ_DELEG = 0x0100;
///const OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG = 0x0200; ///const OPEN4_SHARE_ACCESS_WANT_WRITE_DELEG = 0x0200;
///const OPEN4_SHARE_ACCESS_WANT_ANY_DELEG = 0x0300; ///const OPEN4_SHARE_ACCESS_WANT_ANY_DELEG = 0x0300;
///const OPEN4_SHARE_ACCESS_WANT_NO_DELEG = 0x0400; ///const OPEN4_SHARE_ACCESS_WANT_NO_DELEG = 0x0400;
///const OPEN4_SHARE_ACCESS_WANT_CANCEL = 0x0500; ///const OPEN4_SHARE_ACCESS_WANT_CANCEL = 0x0500;
/// ///
///const ///const
skipping to change at page 31, line 46 skipping to change at page 33, line 8
/// = 0x20000; /// = 0x20000;
/// ///
///enum open_delegation_type4 { ///enum open_delegation_type4 {
/// OPEN_DELEGATE_NONE = 0, /// OPEN_DELEGATE_NONE = 0,
/// OPEN_DELEGATE_READ = 1, /// OPEN_DELEGATE_READ = 1,
/// OPEN_DELEGATE_WRITE = 2, /// OPEN_DELEGATE_WRITE = 2,
/// OPEN_DELEGATE_NONE_EXT = 3 /* new to v4.1 */ /// OPEN_DELEGATE_NONE_EXT = 3 /* new to v4.1 */
///}; ///};
/// ///
///enum open_claim_type4 { ///enum open_claim_type4 {
/// /*
/// * Not a reclaim.
/// */
/// CLAIM_NULL = 0, /// CLAIM_NULL = 0,
///
/// CLAIM_PREVIOUS = 1, /// CLAIM_PREVIOUS = 1,
/// CLAIM_DELEGATE_CUR = 2, /// CLAIM_DELEGATE_CUR = 2,
/// CLAIM_DELEGATE_PREV = 3, /// CLAIM_DELEGATE_PREV = 3,
/// ///
/// /* /// /*
/// * Not a reclaim.
/// *
/// * Like CLAIM_NULL, but object identified /// * Like CLAIM_NULL, but object identified
/// * by the current filehandle. /// * by the current filehandle.
/// */ /// */
/// CLAIM_FH = 4, /* new to v4.1 */ /// CLAIM_FH = 4, /* new to v4.1 */
/// ///
/// /* /// /*
/// * Like CLAIM_DELEGATE_CUR, but object identified /// * Like CLAIM_DELEGATE_CUR, but object identified
/// * by current filehandle. /// * by current filehandle.
/// */ /// */
/// CLAIM_DELEG_CUR_FH = 5, /* new to v4.1 */ /// CLAIM_DELEG_CUR_FH = 5, /* new to v4.1 */
skipping to change at page 36, line 7 skipping to change at page 37, line 23
/// stateid4 stateid; /* Stateid for open */ /// stateid4 stateid; /* Stateid for open */
/// change_info4 cinfo; /* Directory Change Info */ /// change_info4 cinfo; /* Directory Change Info */
/// uint32_t rflags; /* Result flags */ /// uint32_t rflags; /* Result flags */
/// bitmap4 attrset; /* attribute set for create*/ /// bitmap4 attrset; /* attribute set for create*/
/// open_delegation4 delegation; /* Info on any open /// open_delegation4 delegation; /* Info on any open
/// delegation */ /// delegation */
///}; ///};
/// ///
///union OPEN4res switch (nfsstat4 status) { ///union OPEN4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// /* CURRENT_FH: opened file */ /// /* New CURRENT_FH: opened file */
/// OPEN4resok resok4; /// OPEN4resok resok4;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct OPENATTR4args { ///struct OPENATTR4args {
/// /* CURRENT_FH: object */ /// /* CURRENT_FH: object */
/// bool createdir; /// bool createdir;
///}; ///};
/// ///
///struct OPENATTR4res { ///struct OPENATTR4res {
/// /* CURRENT_FH: named attr directory */ /// /*
/// * If status is NFS4_OK,
/// * new CURRENT_FH: named attribute
/// * directory
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
////* obsolete in NFSv4.1 */ ////* obsolete in NFSv4.1 */
///struct OPEN_CONFIRM4args { ///struct OPEN_CONFIRM4args {
/// /* CURRENT_FH: opened file */ /// /* CURRENT_FH: opened file */
/// stateid4 open_stateid; /// stateid4 open_stateid;
/// seqid4 seqid; /// seqid4 seqid;
///}; ///};
/// ///
skipping to change at page 37, line 17 skipping to change at page 38, line 37
/// OPEN_DOWNGRADE4resok resok4; /// OPEN_DOWNGRADE4resok resok4;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct PUTFH4args { ///struct PUTFH4args {
/// nfs_fh4 object; /// nfs_fh4 object;
///}; ///};
/// ///
///struct PUTFH4res { ///struct PUTFH4res {
/// /* CURRENT_FH: */ /// /*
/// * If status is NFS4_OK,
/// * new CURRENT_FH: argument to PUTFH
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct PUTPUBFH4res { ///struct PUTPUBFH4res {
/// /* CURRENT_FH: public fh */ /// /*
/// * If status is NFS4_OK,
/// * new CURRENT_FH: public fh
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct PUTROOTFH4res { ///struct PUTROOTFH4res {
/// /* CURRENT_FH: root fh */ /// /*
/// * If status is NFS4_OK,
/// * new CURRENT_FH: root fh
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct READ4args { ///struct READ4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// stateid4 stateid; /// stateid4 stateid;
/// offset4 offset; /// offset4 offset;
/// count4 count; /// count4 count;
///}; ///};
/// ///
skipping to change at page 39, line 45 skipping to change at page 41, line 26
////* Obsolete in NFSv4.1 */ ////* Obsolete in NFSv4.1 */
///struct RENEW4args { ///struct RENEW4args {
/// clientid4 clientid; /// clientid4 clientid;
///}; ///};
/// ///
///struct RENEW4res { ///struct RENEW4res {
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct RESTOREFH4res { ///struct RESTOREFH4res {
/// /* CURRENT_FH: value of saved fh */ /// /*
/// * If status is NFS4_OK,
/// * new CURRENT_FH: value of saved fh
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct SAVEFH4res { ///struct SAVEFH4res {
/// /* SAVED_FH: value of current fh */ /// /*
/// * If status is NFS4_OK,
/// * new SAVED_FH: value of current fh
/// */
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
///struct SECINFO4args { ///struct SECINFO4args {
/// /* CURRENT_FH: directory */ /// /* CURRENT_FH: directory */
/// component4 name; /// component4 name;
///}; ///};
/// ///
////* ////*
/// * From RFC 2203 /// * From RFC 2203
skipping to change at page 40, line 38 skipping to change at page 42, line 25
/// case RPCSEC_GSS: /// case RPCSEC_GSS:
/// rpcsec_gss_info flavor_info; /// rpcsec_gss_info flavor_info;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///typedef secinfo4 SECINFO4resok<>; ///typedef secinfo4 SECINFO4resok<>;
/// ///
///union SECINFO4res switch (nfsstat4 status) { ///union SECINFO4res switch (nfsstat4 status) {
/// case NFS4_OK: /// case NFS4_OK:
/// /* CURRENTFH: consumed */
/// SECINFO4resok resok4; /// SECINFO4resok resok4;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct SETATTR4args { ///struct SETATTR4args {
/// /* CURRENT_FH: target object */ /// /* CURRENT_FH: target object */
/// stateid4 stateid; /// stateid4 stateid;
/// fattr4 obj_attributes; /// fattr4 obj_attributes;
///}; ///};
skipping to change at page 45, line 19 skipping to change at page 47, line 7
/// ///
///struct ssv_prot_info4 { ///struct ssv_prot_info4 {
/// state_protect_ops4 spi_ops; /// state_protect_ops4 spi_ops;
/// uint32_t spi_hash_alg; /// uint32_t spi_hash_alg;
/// uint32_t spi_encr_alg; /// uint32_t spi_encr_alg;
/// uint32_t spi_ssv_len; /// uint32_t spi_ssv_len;
/// uint32_t spi_window; /// uint32_t spi_window;
/// gsshandle4_t spi_handles<>; /// gsshandle4_t spi_handles<>;
///}; ///};
/// ///
///struct server_owner4 {
/// uint64_t so_minor_id;
/// opaque so_major_id<NFS4_OPAQUE_LIMIT>;
///};
///
///union state_protect4_r switch(state_protect_how4 spr_how) { ///union state_protect4_r switch(state_protect_how4 spr_how) {
/// case SP4_NONE: /// case SP4_NONE:
/// void; /// void;
/// case SP4_MACH_CRED: /// case SP4_MACH_CRED:
/// state_protect_ops4 spr_mach_ops; /// state_protect_ops4 spr_mach_ops;
/// case SP4_SSV: /// case SP4_SSV:
/// ssv_prot_info4 spr_ssv_info; /// ssv_prot_info4 spr_ssv_info;
///}; ///};
/// ///
///struct EXCHANGE_ID4resok { ///struct EXCHANGE_ID4resok {
skipping to change at page 47, line 16 skipping to change at page 48, line 47
/// ///
///struct FREE_STATEID4args { ///struct FREE_STATEID4args {
/// stateid4 fsa_stateid; /// stateid4 fsa_stateid;
///}; ///};
/// ///
///struct FREE_STATEID4res { ///struct FREE_STATEID4res {
/// nfsstat4 fsr_status; /// nfsstat4 fsr_status;
///}; ///};
/// ///
////* ////*
/// * Notification types.
/// */
///enum notify_type4 {
/// NOTIFY4_CHANGE_CHILD_ATTRS = 0,
/// NOTIFY4_CHANGE_DIR_ATTRS = 1,
/// NOTIFY4_REMOVE_ENTRY = 2,
/// NOTIFY4_ADD_ENTRY = 3,
/// NOTIFY4_RENAME_ENTRY = 4,
/// NOTIFY4_CHANGE_COOKIE_VERIFIER = 5,
/// NOTIFY4_DEVICE_ID_ADD = 6,
/// NOTIFY4_DEVICE_ID_CHANGE = 7,
/// NOTIFY4_DEVICE_ID_DELETE = 8
///};
///
////*
/// * Mask of notification types. /// * Mask of notification types.
/// */ /// */
///typedef bitmap4 notification_mask4; ///typedef bitmap4 notification_mask4;
/// ///
///typedef nfstime4 attr_notice4; ///typedef nfstime4 attr_notice4;
/// ///
///struct GET_DIR_DELEGATION4args { ///struct GET_DIR_DELEGATION4args {
/// /* CURRENT_FH: delegated directory */
/// bool gdda_signal_deleg_avail; /// bool gdda_signal_deleg_avail;
/// notification_mask4 gdda_notification_types; /// notification_mask4 gdda_notification_types;
/// attr_notice4 gdda_child_attr_delay; /// attr_notice4 gdda_child_attr_delay;
/// attr_notice4 gdda_dir_attr_delay; /// attr_notice4 gdda_dir_attr_delay;
/// bitmap4 gdda_child_attributes; /// bitmap4 gdda_child_attributes;
/// bitmap4 gdda_dir_attributes; /// bitmap4 gdda_dir_attributes;
///}; ///};
///struct GET_DIR_DELEGATION4resok { ///struct GET_DIR_DELEGATION4resok {
/// verifier4 gddr_cookieverf; /// verifier4 gddr_cookieverf;
/// /* Stateid for get_dir_delegation */ /// /* Stateid for get_dir_delegation */
skipping to change at page 48, line 23 skipping to change at page 49, line 40
/// switch (gddrnf4_status gddrnf_status) { /// switch (gddrnf4_status gddrnf_status) {
/// case GDD4_OK: /// case GDD4_OK:
/// GET_DIR_DELEGATION4resok gddrnf_resok4; /// GET_DIR_DELEGATION4resok gddrnf_resok4;
/// case GDD4_UNAVAIL: /// case GDD4_UNAVAIL:
/// bool gddrnf_will_signal_deleg_avail; /// bool gddrnf_will_signal_deleg_avail;
///}; ///};
/// ///
///union GET_DIR_DELEGATION4res ///union GET_DIR_DELEGATION4res
/// switch (nfsstat4 gddr_status) { /// switch (nfsstat4 gddr_status) {
/// case NFS4_OK: /// case NFS4_OK:
/// /* CURRENT_FH: delegated dir */
/// GET_DIR_DELEGATION4res_non_fatal gddr_res_non_fatal4; /// GET_DIR_DELEGATION4res_non_fatal gddr_res_non_fatal4;
/// default: /// default:
/// void; /// void;
///}; ///};
/// ///
///struct GETDEVICEINFO4args { ///struct GETDEVICEINFO4args {
/// /* CURRENT_FH: file */
/// deviceid4 gdia_device_id; /// deviceid4 gdia_device_id;
/// layouttype4 gdia_layout_type; /// layouttype4 gdia_layout_type;
/// count4 gdia_maxcount; /// count4 gdia_maxcount;
/// notification_mask4 gdia_notify_types; /// notification_mask4 gdia_notify_types;
///}; ///};
/// ///
///struct GETDEVICEINFO4resok { ///struct GETDEVICEINFO4resok {
/// stateid4 gdir_stateid;
/// device_addr4 gdir_device_addr; /// device_addr4 gdir_device_addr;
/// notification_mask4 gdir_notification; /// notification_mask4 gdir_notification;
///}; ///};
/// ///
///union GETDEVICEINFO4res switch (nfsstat4 gdir_status) { ///union GETDEVICEINFO4res switch (nfsstat4 gdir_status) {
///case NFS4_OK: ///case NFS4_OK:
/// GETDEVICEINFO4resok gdir_resok4; /// GETDEVICEINFO4resok gdir_resok4;
///case NFS4ERR_TOOSMALL: ///case NFS4ERR_TOOSMALL:
/// count4 gdir_mincount; /// count4 gdir_mincount;
///default: ///default:
/// void; /// void;
///}; ///};
/// ///
///struct GETDEVICELIST4args { ///struct GETDEVICELIST4args {
/// /* CURRENT_FH: file */
/// layouttype4 gdla_layout_type; /// layouttype4 gdla_layout_type;
/// count4 gdla_maxcount; /// count4 gdla_maxcount;
/// nfs_cookie4 gdla_cookie; /// nfs_cookie4 gdla_cookie;
/// verifier4 gdla_cookieverf; /// verifier4 gdla_cookieverf;
/// notification_mask4 gdla_notify_types; /// notification_mask4 gdla_notify_types;
///}; ///};
/// ///
///struct GETDEVICELIST4resok { ///struct GETDEVICELIST4resok {
/// nfs_cookie4 gdlr_cookie; /// nfs_cookie4 gdlr_cookie;
/// verifier4 gdlr_cookieverf; /// verifier4 gdlr_cookieverf;
skipping to change at page 50, line 50 skipping to change at page 52, line 15
/// ///
///union LAYOUTGET4res switch (nfsstat4 logr_status) { ///union LAYOUTGET4res switch (nfsstat4 logr_status) {
///case NFS4_OK: ///case NFS4_OK:
/// LAYOUTGET4resok logr_resok4; /// LAYOUTGET4resok logr_resok4;
///case NFS4ERR_LAYOUTTRYLATER: ///case NFS4ERR_LAYOUTTRYLATER:
/// bool logr_will_signal_layout_avail; /// bool logr_will_signal_layout_avail;
///default: ///default:
/// void; /// void;
///}; ///};
/// ///
///union layoutreturn_stateid switch (bool lrs_present) {
///case TRUE:
/// stateid4 lrs_stateid;
///case FALSE:
/// void;
///};
/// ///
///struct LAYOUTRETURN4args { ///struct LAYOUTRETURN4args {
/// /* CURRENT_FH: file */ /// /* CURRENT_FH: file */
/// bool lora_reclaim; /// bool lora_reclaim;
/// layoutreturn_stateid lora_recallstateid;
/// layouttype4 lora_layout_type; /// layouttype4 lora_layout_type;
/// layoutiomode4 lora_iomode; /// layoutiomode4 lora_iomode;
/// layoutreturn4 lora_layoutreturn; /// layoutreturn4 lora_layoutreturn;
///}; ///};
/// ///
/// ///
///union layoutreturn_stateid switch (bool lrs_present) {
///case TRUE:
/// stateid4 lrs_stateid;
///case FALSE:
/// void;
///};
///
///union LAYOUTRETURN4res switch (nfsstat4 lorr_status) { ///union LAYOUTRETURN4res switch (nfsstat4 lorr_status) {
///case NFS4_OK: ///case NFS4_OK:
/// layoutreturn_stateid lorr_stateid; /// layoutreturn_stateid lorr_stateid;
///default: ///default:
/// void; /// void;
///}; ///};
/// ///
///enum secinfo_style4 { ///enum secinfo_style4 {
/// SECINFO_STYLE4_CURRENT_FH = 0, /// SECINFO_STYLE4_CURRENT_FH = 0,
/// SECINFO_STYLE4_PARENT = 1 /// SECINFO_STYLE4_PARENT = 1
///}; ///};
/// ///
////* CURRENT_FH: object or child directory */
///typedef secinfo_style4 SECINFO_NO_NAME4args; ///typedef secinfo_style4 SECINFO_NO_NAME4args;
/// ///
////* CURRENTFH: consumed if status is NFS4_OK */
///typedef SECINFO4res SECINFO_NO_NAME4res; ///typedef SECINFO4res SECINFO_NO_NAME4res;
/// ///
///struct SEQUENCE4args { ///struct SEQUENCE4args {
/// sessionid4 sa_sessionid; /// sessionid4 sa_sessionid;
/// sequenceid4 sa_sequenceid; /// sequenceid4 sa_sequenceid;
/// slotid4 sa_slotid; /// slotid4 sa_slotid;
/// slotid4 sa_highest_slotid; /// slotid4 sa_highest_slotid;
/// bool sa_cachethis; /// bool sa_cachethis;
///}; ///};
/// ///
skipping to change at page 53, line 32 skipping to change at page 54, line 47
/// */ /// */
///case CLAIM_FH: /* new to v4.1 */ ///case CLAIM_FH: /* new to v4.1 */
/// void; /// void;
/// ///
////* ////*
/// * Right to file based on a delegation granted /// * Right to file based on a delegation granted
/// * to a previous boot instance of the client. /// * to a previous boot instance of the client.
/// * File is specified by filehandle. /// * File is specified by filehandle.
/// */ /// */
///case CLAIM_DELEG_PREV_FH: /* new to v4.1 */ ///case CLAIM_DELEG_PREV_FH: /* new to v4.1 */
/// /* CURRENT_FH: file being opened */ /// /* CURRENT_FH: object being delegated */
/// void; /// void;
/// ///
////* ////*
/// * Right to the file established by an open previous /// * Right to the file established by an open previous
/// * to server reboot. File identified by filehandle. /// * to server reboot. File identified by filehandle.
/// * Used during server reclaim grace period. /// * Used during server reclaim grace period.
/// */ /// */
///case CLAIM_PREVIOUS: ///case CLAIM_PREVIOUS:
/// /* CURRENT_FH: file being reclaimed */ /// /* CURRENT_FH: object being reclaimed */
/// open_delegation_type4 dc_delegate_type; /// open_delegation_type4 dc_delegate_type;
///}; ///};
/// ///
///struct WANT_DELEGATION4args { ///struct WANT_DELEGATION4args {
/// uint32_t wda_want; /// uint32_t wda_want;
/// deleg_claim4 wda_claim; /// deleg_claim4 wda_claim;
///}; ///};
/// ///
///union WANT_DELEGATION4res switch (nfsstat4 wdr_status) { ///union WANT_DELEGATION4res switch (nfsstat4 wdr_status) {
///case NFS4_OK: ///case NFS4_OK:
skipping to change at page 54, line 19 skipping to change at page 55, line 33
/// ///
///struct DESTROY_CLIENTID4args { ///struct DESTROY_CLIENTID4args {
/// clientid4 dca_clientid; /// clientid4 dca_clientid;
///}; ///};
/// ///
///struct DESTROY_CLIENTID4res { ///struct DESTROY_CLIENTID4res {
/// nfsstat4 dcr_status; /// nfsstat4 dcr_status;
///}; ///};
/// ///
///struct RECLAIM_COMPLETE4args { ///struct RECLAIM_COMPLETE4args {
/// /*
/// * If rca_one_fs TRUE,
/// *
/// * CURRENT_FH: object in
/// * filesystem reclaim is
/// * complete for.
/// */
/// bool rca_one_fs; /// bool rca_one_fs;
///}; ///};
/// ///
///struct RECLAIM_COMPLETE4res { ///struct RECLAIM_COMPLETE4res {
/// nfsstat4 rcr_status; /// nfsstat4 rcr_status;
///}; ///};
/// ///
////* ////*
/// * Operation arrays /// * Operation arrays
/// */ /// */
skipping to change at page 61, line 44 skipping to change at page 63, line 18
/// */ /// */
///struct CB_ILLEGAL4res { ///struct CB_ILLEGAL4res {
/// nfsstat4 status; /// nfsstat4 status;
///}; ///};
/// ///
////* ////*
/// * NFSv4.1 callback arguments and results /// * NFSv4.1 callback arguments and results
/// */ /// */
/// ///
///enum layoutrecall_type4 { ///enum layoutrecall_type4 {
/// LAYOUTRECALL4_FILE = 1, /// LAYOUTRECALL4_FILE = LAYOUT4_RET_REC_FILE,
/// LAYOUTRECALL4_FSID = 2, /// LAYOUTRECALL4_FSID = LAYOUT4_RET_REC_FSID,
/// LAYOUTRECALL4_ALL = 3 /// LAYOUTRECALL4_ALL = LAYOUT4_RET_REC_ALL
///}; ///};
/// ///
///struct layoutrecall_file4 { ///struct layoutrecall_file4 {
/// nfs_fh4 lor_fh; /// nfs_fh4 lor_fh;
/// offset4 lor_offset; /// offset4 lor_offset;
/// length4 lor_length; /// length4 lor_length;
/// stateid4 lor_stateid; /// stateid4 lor_stateid;
///}; ///};
/// ///
///union layoutrecall4 switch(layoutrecall_type4 lor_recalltype) { ///union layoutrecall4 switch(layoutrecall_type4 lor_recalltype) {
skipping to change at page 62, line 27 skipping to change at page 63, line 49
///struct CB_LAYOUTRECALL4args { ///struct CB_LAYOUTRECALL4args {
/// layouttype4 clora_type; /// layouttype4 clora_type;
/// layoutiomode4 clora_iomode; /// layoutiomode4 clora_iomode;
/// bool clora_changed; /// bool clora_changed;
/// layoutrecall4 clora_recall; /// layoutrecall4 clora_recall;
///}; ///};
///struct CB_LAYOUTRECALL4res { ///struct CB_LAYOUTRECALL4res {
/// nfsstat4 clorr_status; /// nfsstat4 clorr_status;
///}; ///};
/// ///
////*
/// * Directory notification types.
/// */
///enum notify_type4 {
/// NOTIFY4_CHANGE_CHILD_ATTRS = 0,
/// NOTIFY4_CHANGE_DIR_ATTRS = 1,
/// NOTIFY4_REMOVE_ENTRY = 2,
/// NOTIFY4_ADD_ENTRY = 3,
/// NOTIFY4_RENAME_ENTRY = 4,
/// NOTIFY4_CHANGE_COOKIE_VERIFIER = 5
///};
///
////* Changed entry information. */ ////* Changed entry information. */
///struct notify_entry4 { ///struct notify_entry4 {
/// component4 ne_file; /// component4 ne_file;
/// fattr4 ne_attrs; /// fattr4 ne_attrs;
///}; ///};
/// ///
////* Previous entry information */ ////* Previous entry information */
///struct prev_entry4 { ///struct prev_entry4 {
/// notify_entry4 pe_prev_entry; /// notify_entry4 pe_prev_entry;
/// /* what READDIR returned for this entry */ /// /* what READDIR returned for this entry */
/// nfs_cookie4 pe_prev_entry_cookie; /// nfs_cookie4 pe_prev_entry_cookie;
///}; ///};
/// ///
///struct notify_remove4 {
/// notify_entry4 nrm_old_entry;
/// nfs_cookie4 nrm_old_entry_cookie;
///};
///
///struct notify_add4 { ///struct notify_add4 {
/// /*
/// * Information on object
/// * possibly renamed over.
/// */
/// notify_remove4 nad_old_entry<1>;
/// notify_entry4 nad_new_entry; /// notify_entry4 nad_new_entry;
/// /* what READDIR would have returned for this entry */ /// /* what READDIR would have returned for this entry */
/// nfs_cookie4 nad_new_entry_cookie<1>; /// nfs_cookie4 nad_new_entry_cookie<1>;
/// prev_entry4 nad_prev_entry<1>; /// prev_entry4 nad_prev_entry<1>;
/// bool nad_last_entry; /// bool nad_last_entry;
///}; ///};
/// ///
///struct notify_attr4 { ///struct notify_attr4 {
/// notify_entry4 na_changed_entry; /// notify_entry4 na_changed_entry;
///}; ///};
/// ///
///struct notify_remove4 {
/// notify_entry4 nrm_old_entry;
/// nfs_cookie4 nrm_old_entry_cookie;
///};
///
///struct notify_rename4 { ///struct notify_rename4 {
/// notify_entry4 nrn_old_entry; /// notify_remove4 nrn_old_entry;
/// notify_add4 nrn_new_entry; /// notify_add4 nrn_new_entry;
///}; ///};
/// ///
///struct notify_verifier4 { ///struct notify_verifier4 {
/// verifier4 nv_old_cookieverf; /// verifier4 nv_old_cookieverf;
/// verifier4 nv_new_cookieverf; /// verifier4 nv_new_cookieverf;
///}; ///};
/// ///
///typedef deviceid4 notify_deviceid4; ////*
/// /// * Objects of type notify_<>4 and
////* Objects of type struct notify_<>4 are encoded in this */ /// * notify_device_<>4 are encoded in this.
/// */
///typedef opaque notifylist4<>; ///typedef opaque notifylist4<>;
/// ///
///struct notify4 { ///struct notify4 {
/// /* composed from notify_type4 */ /// /* composed from notify_type4 */
/// bitmap4 notify_mask; /// bitmap4 notify_mask;
/// notifylist4 notify_vals; /// notifylist4 notify_vals;
///}; ///};
/// ///
///struct CB_NOTIFY4args { ///struct CB_NOTIFY4args {
/// stateid4 cna_stateid; /// stateid4 cna_stateid;
skipping to change at page 65, line 41 skipping to change at page 67, line 33
///struct CB_NOTIFY_LOCK4args { ///struct CB_NOTIFY_LOCK4args {
/// nfs_fh4 cnla_fh; /// nfs_fh4 cnla_fh;
/// lock_owner4 cnla_lock_owner; /// lock_owner4 cnla_lock_owner;
///}; ///};
/// ///
///struct CB_NOTIFY_LOCK4res { ///struct CB_NOTIFY_LOCK4res {
/// nfsstat4 cnlr_status; /// nfsstat4 cnlr_status;
///}; ///};
/// ///
////* ////*
/// * Device notification types.
/// */
///enum notify_deviceid_type4 {
/// NOTIFY_DEVICEID4_ADD = 0,
/// NOTIFY_DEVICEID4_CHANGE = 1,
/// NOTIFY_DEVICEID4_DELETE = 2
///};
///
////* For NOTIFY4_DEVICEID4_ADD or NOTIFY4_DEVICEID4_DELETE */
///struct notify_deviceid_add_or_delete4 {
/// layouttype4 ndaod_layouttype;
/// deviceid4 ndaod_deviceid;
///};
///
////* For NOTIFY4_DEVICEID4_CHANGE */
///struct notify_deviceid_change4 {
/// layouttype4 ndc_layouttype;
/// deviceid4 ndc_deviceid;
/// bool ndc_immediate;
///};
///
///struct CB_NOTIFY_DEVICEID4args {
/// notify4 cnda_changes<>;
///};
///
///struct CB_NOTIFY_DEVICEID4res {
/// nfsstat4 cndr_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_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;
/// case OP_CB_RECALL: /// case OP_CB_RECALL:
/// CB_RECALL4args opcbrecall; /// CB_RECALL4args opcbrecall;
/// case OP_CB_LAYOUTRECALL: /// case OP_CB_LAYOUTRECALL:
skipping to change at page 66, line 29 skipping to change at page 69, line 4
/// CB_LAYOUTRECALL4args opcblayoutrecall; /// CB_LAYOUTRECALL4args opcblayoutrecall;
/// case OP_CB_NOTIFY: /// case OP_CB_NOTIFY:
/// CB_NOTIFY4args opcbnotify; /// CB_NOTIFY4args opcbnotify;
/// case OP_CB_PUSH_DELEG: /// case OP_CB_PUSH_DELEG:
/// CB_PUSH_DELEG4args opcbpush_deleg; /// CB_PUSH_DELEG4args opcbpush_deleg;
/// case OP_CB_RECALL_ANY: /// case OP_CB_RECALL_ANY:
/// CB_RECALL_ANY4args opcbrecall_any; /// CB_RECALL_ANY4args opcbrecall_any;
/// case OP_CB_RECALLABLE_OBJ_AVAIL: /// case OP_CB_RECALLABLE_OBJ_AVAIL:
/// CB_RECALLABLE_OBJ_AVAIL4args opcbrecallable_obj_avail; /// CB_RECALLABLE_OBJ_AVAIL4args opcbrecallable_obj_avail;
/// case OP_CB_RECALL_SLOT: /// case OP_CB_RECALL_SLOT:
/// CB_RECALL_SLOT4args opcbrecall_slot; /// CB_RECALL_SLOT4args opcbrecall_slot;
/// 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:
/// CB_NOTIFY_DEVICEID4args opcbnotify_deviceid;
/// 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:
/// CB_LAYOUTRECALL4res /// CB_LAYOUTRECALL4res
skipping to change at page 67, line 26 skipping to change at page 69, line 52
/// case OP_CB_SEQUENCE: CB_SEQUENCE4res opcbsequence; /// case OP_CB_SEQUENCE: CB_SEQUENCE4res opcbsequence;
/// ///
/// case OP_CB_WANTS_CANCELLED: /// case OP_CB_WANTS_CANCELLED:
/// CB_WANTS_CANCELLED4res /// CB_WANTS_CANCELLED4res
/// opcbwants_cancelled; /// opcbwants_cancelled;
/// ///
/// 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:
/// CB_NOTIFY_DEVICEID4res
/// opcbnotify_deviceid;
///
/// /* 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;
/// nfs_cb_argop4 argarray<>; /// nfs_cb_argop4 argarray<>;
skipping to change at page 68, line 32 skipping to change at page 71, line 17
4.1. Normative References 4.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", March 1997. Levels", March 1997.
[2] Eisler, M., "XDR: External Data Representation Standard", [2] Eisler, M., "XDR: External Data Representation Standard",
STD 67, RFC 4506, May 2006. STD 67, RFC 4506, May 2006.
4.2. Informative References 4.2. Informative References
[3] Shepler, S. and M. Eisler, "NFS Version 4.1, A Work In [3] Shepler, S., Eisler, M., and D. Noveck, "NFS Version 4.1, A Work
Progress", Internet Draft draft-ietf-nfsv4-minorversion1-XX.txt, In Progress", Internet
November 2007. Draft draft-ietf-nfsv4-minorversion1-XX.txt, November 2007.
Authors' Addresses Authors' Addresses
Spencer Shepler Spencer Shepler
Sun Microsystems, Inc. Sun Microsystems, Inc.
7808 Moonflower Drive 7808 Moonflower Drive
Austin, TX 78750 Austin, TX 78750
USA USA
Phone: +1-512-401-1080 Phone: +1-512-401-1080
skipping to change at page 69, line 4 skipping to change at page 71, line 31
Authors' Addresses Authors' Addresses
Spencer Shepler Spencer Shepler
Sun Microsystems, Inc. Sun Microsystems, Inc.
7808 Moonflower Drive 7808 Moonflower Drive
Austin, TX 78750 Austin, TX 78750
USA USA
Phone: +1-512-401-1080 Phone: +1-512-401-1080
Email: spencer.shepler@sun.com Email: spencer.shepler@sun.com
Mike Eisler Mike Eisler
Network Appliance, Inc. NetApp
5765 Chase Point Circle 5765 Chase Point Circle
Colorado Springs, CO 80919 Colorado Springs, CO 80919
USA USA
Phone: +1-719-599-9026 Phone: +1-719-599-9026
Email: email2mre-@yahoo.com Email: email2mre-@yahoo.com
URI: Insert ietf2 between the - and @ symbols in the above address URI: Insert ietf2 between the - and @ symbols in the above address
David Noveck David Noveck
Network Appliance, Inc. NetApp
1601 Trapelo Road, Suite 16 1601 Trapelo Road, Suite 16
Waltham, MA 02454 Waltham, MA 02454
USA USA
Phone: +1-781-768-5347 Phone: +1-781-768-5347
Email: dnoveck@netapp.com Email: dnoveck@netapp.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
 End of changes. 99 change blocks. 
119 lines changed or deleted 240 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/