draft-ietf-nfsv4-rfc3530bis-06.txt   draft-ietf-nfsv4-rfc3530bis-07.txt 
NFSv4 T. Haynes NFSv4 T. Haynes
Internet-Draft D. Noveck Internet-Draft D. Noveck
Intended status: Standards Track Editors Intended status: Standards Track Editors
Expires: August 20, 2011 February 16, 2011 Expires: August 31, 2011 February 27, 2011
NFS Version 4 Protocol NFS Version 4 Protocol
draft-ietf-nfsv4-rfc3530bis-06.txt draft-ietf-nfsv4-rfc3530bis-07.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 heritage to NFS protocol version 2, RFC 1094, and protocol which owes heritage to NFS protocol version 2, RFC 1094, and
version 3, RFC 1813. Unlike earlier versions, the NFS version 4 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 2, line 8 skipping to change at page 2, line 8
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 August 20, 2011. This Internet-Draft will expire on August 31, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 4, line 10 skipping to change at page 4, line 10
5.6. REQUIRED Attributes - List and Definition References . . 40 5.6. REQUIRED Attributes - List and Definition References . . 40
5.7. RECOMMENDED Attributes - List and Definition 5.7. RECOMMENDED Attributes - List and Definition
References . . . . . . . . . . . . . . . . . . . . . . . 41 References . . . . . . . . . . . . . . . . . . . . . . . 41
5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 42 5.8. Attribute Definitions . . . . . . . . . . . . . . . . . 42
5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 42 5.8.1. Definitions of REQUIRED Attributes . . . . . . . . . 42
5.8.2. Definitions of Uncategorized RECOMMENDED 5.8.2. Definitions of Uncategorized RECOMMENDED
Attributes . . . . . . . . . . . . . . . . . . . . . 44 Attributes . . . . . . . . . . . . . . . . . . . . . 44
5.9. Interpreting owner and owner_group . . . . . . . . . . . 50 5.9. Interpreting owner and owner_group . . . . . . . . . . . 50
5.10. Character Case Attributes . . . . . . . . . . . . . . . 53 5.10. Character Case Attributes . . . . . . . . . . . . . . . 53
6. Access Control Attributes . . . . . . . . . . . . . . . . . . 53 6. Access Control Attributes . . . . . . . . . . . . . . . . . . 53
6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.1. Goals . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2. File Attributes Discussion . . . . . . . . . . . . . . . 54 6.2. File Attributes Discussion . . . . . . . . . . . . . . . 54
6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 54 6.2.1. Attribute 12: acl . . . . . . . . . . . . . . . . . 54
6.2.2. Attribute 33: mode . . . . . . . . . . . . . . . . . 68 6.2.2. Attribute 33: mode . . . . . . . . . . . . . . . . . 68
6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 69 6.3. Common Methods . . . . . . . . . . . . . . . . . . . . . 69
6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 69 6.3.1. Interpreting an ACL . . . . . . . . . . . . . . . . 69
6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 70 6.3.2. Computing a Mode Attribute from an ACL . . . . . . . 70
6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 71 6.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 71
6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 71 6.4.1. Setting the mode and/or ACL Attributes . . . . . . . 72
6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 72 6.4.2. Retrieving the mode and/or ACL Attributes . . . . . 73
6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 73 6.4.3. Creating New Objects . . . . . . . . . . . . . . . . 73
7. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 74 7. Multi-Server Namespace . . . . . . . . . . . . . . . . . . . 75
7.1. Location Attributes . . . . . . . . . . . . . . . . . . 75 7.1. Location Attributes . . . . . . . . . . . . . . . . . . 75
7.2. File System Presence or Absence . . . . . . . . . . . . 75 7.2. File System Presence or Absence . . . . . . . . . . . . 76
7.3. Getting Attributes for an Absent File System . . . . . . 76 7.3. Getting Attributes for an Absent File System . . . . . . 77
7.3.1. GETATTR Within an Absent File System . . . . . . . . 76 7.3.1. GETATTR Within an Absent File System . . . . . . . . 77
7.3.2. READDIR and Absent File Systems . . . . . . . . . . 77 7.3.2. READDIR and Absent File Systems . . . . . . . . . . 78
7.4. Uses of Location Information . . . . . . . . . . . . . . 78 7.4. Uses of Location Information . . . . . . . . . . . . . . 78
7.4.1. File System Replication . . . . . . . . . . . . . . 79 7.4.1. File System Replication . . . . . . . . . . . . . . 79
7.4.2. File System Migration . . . . . . . . . . . . . . . 79 7.4.2. File System Migration . . . . . . . . . . . . . . . 80
7.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 80 7.4.3. Referrals . . . . . . . . . . . . . . . . . . . . . 81
7.5. Location Entries and Server Identity . . . . . . . . . . 81 7.5. Location Entries and Server Identity . . . . . . . . . . 81
7.6. Additional Client-Side Considerations . . . . . . . . . 81 7.6. Additional Client-Side Considerations . . . . . . . . . 82
7.7. Effecting File System Transitions . . . . . . . . . . . 82 7.7. Effecting File System Transitions . . . . . . . . . . . 83
7.7.1. File System Transitions and Simultaneous Access . . 84 7.7.1. File System Transitions and Simultaneous Access . . 84
7.7.2. Filehandles and File System Transitions . . . . . . 84 7.7.2. Filehandles and File System Transitions . . . . . . 84
7.7.3. Fileids and File System Transitions . . . . . . . . 84 7.7.3. Fileids and File System Transitions . . . . . . . . 85
7.7.4. Fsids and File System Transitions . . . . . . . . . 86 7.7.4. Fsids and File System Transitions . . . . . . . . . 86
7.7.5. The Change Attribute and File System Transitions . . 86 7.7.5. The Change Attribute and File System Transitions . . 86
7.7.6. Lock State and File System Transitions . . . . . . . 86 7.7.6. Lock State and File System Transitions . . . . . . . 87
7.7.7. Write Verifiers and File System Transitions . . . . 88 7.7.7. Write Verifiers and File System Transitions . . . . 89
7.7.8. Readdir Cookies and Verifiers and File System 7.7.8. Readdir Cookies and Verifiers and File System
Transitions . . . . . . . . . . . . . . . . . . . . 89 Transitions . . . . . . . . . . . . . . . . . . . . 89
7.7.9. File System Data and File System Transitions . . . . 89 7.7.9. File System Data and File System Transitions . . . . 90
7.8. Effecting File System Referrals . . . . . . . . . . . . 90 7.8. Effecting File System Referrals . . . . . . . . . . . . 91
7.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 91 7.8.1. Referral Example (LOOKUP) . . . . . . . . . . . . . 91
7.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 94 7.8.2. Referral Example (READDIR) . . . . . . . . . . . . . 95
7.9. The Attribute fs_locations . . . . . . . . . . . . . . . 97 7.9. The Attribute fs_locations . . . . . . . . . . . . . . . 98
7.9.1. Inferring Transition Modes . . . . . . . . . . . . . 99 7.9.1. Inferring Transition Modes . . . . . . . . . . . . . 99
8. NFS Server Name Space . . . . . . . . . . . . . . . . . . . . 100 8. NFS Server Name Space . . . . . . . . . . . . . . . . . . . . 101
8.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 100 8.1. Server Exports . . . . . . . . . . . . . . . . . . . . . 101
8.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 100 8.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . 101
8.3. Server Pseudo Filesystem . . . . . . . . . . . . . . . . 101 8.3. Server Pseudo Filesystem . . . . . . . . . . . . . . . . 101
8.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 101 8.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . 102
8.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 101 8.5. Filehandle Volatility . . . . . . . . . . . . . . . . . 102
8.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 102 8.6. Exported Root . . . . . . . . . . . . . . . . . . . . . 102
8.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 102 8.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . 103
8.8. Security Policy and Name Space Presentation . . . . . . 103 8.8. Security Policy and Name Space Presentation . . . . . . 103
9. File Locking and Share Reservations . . . . . . . . . . . . . 103 9. File Locking and Share Reservations . . . . . . . . . . . . . 104
9.1. Locking . . . . . . . . . . . . . . . . . . . . . . . . 104 9.1. Locking . . . . . . . . . . . . . . . . . . . . . . . . 105
9.1.1. Client ID . . . . . . . . . . . . . . . . . . . . . 104 9.1.1. Client ID . . . . . . . . . . . . . . . . . . . . . 105
9.1.2. Server Release of Clientid . . . . . . . . . . . . . 107 9.1.2. Server Release of Clientid . . . . . . . . . . . . . 108
9.1.3. lock_owner and stateid Definition . . . . . . . . . 108 9.1.3. lock_owner and stateid Definition . . . . . . . . . 109
9.1.4. Use of the stateid and Locking . . . . . . . . . . . 109 9.1.4. Use of the stateid and Locking . . . . . . . . . . . 110
9.1.5. Sequencing of Lock Requests . . . . . . . . . . . . 112 9.1.5. Sequencing of Lock Requests . . . . . . . . . . . . 112
9.1.6. Recovery from Replayed Requests . . . . . . . . . . 113 9.1.6. Recovery from Replayed Requests . . . . . . . . . . 113
9.1.7. Releasing lock_owner State . . . . . . . . . . . . . 113 9.1.7. Releasing lock_owner State . . . . . . . . . . . . . 114
9.1.8. Use of Open Confirmation . . . . . . . . . . . . . . 113 9.1.8. Use of Open Confirmation . . . . . . . . . . . . . . 114
9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 114 9.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . 115
9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 115 9.3. Upgrading and Downgrading Locks . . . . . . . . . . . . 116
9.4. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 115 9.4. Blocking Locks . . . . . . . . . . . . . . . . . . . . . 116
9.5. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 116 9.5. Lease Renewal . . . . . . . . . . . . . . . . . . . . . 117
9.6. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 117 9.6. Crash Recovery . . . . . . . . . . . . . . . . . . . . . 118
9.6.1. Client Failure and Recovery . . . . . . . . . . . . 117 9.6.1. Client Failure and Recovery . . . . . . . . . . . . 118
9.6.2. Server Failure and Recovery . . . . . . . . . . . . 118 9.6.2. Server Failure and Recovery . . . . . . . . . . . . 119
9.6.3. Network Partitions and Recovery . . . . . . . . . . 120 9.6.3. Network Partitions and Recovery . . . . . . . . . . 120
9.7. Recovery from a Lock Request Timeout or Abort . . . . . 123 9.7. Recovery from a Lock Request Timeout or Abort . . . . . 124
9.8. Server Revocation of Locks . . . . . . . . . . . . . . . 124 9.8. Server Revocation of Locks . . . . . . . . . . . . . . . 124
9.9. Share Reservations . . . . . . . . . . . . . . . . . . . 125 9.9. Share Reservations . . . . . . . . . . . . . . . . . . . 125
9.10. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 126 9.10. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . 126
9.10.1. Close and Retention of State Information . . . . . . 126 9.10.1. Close and Retention of State Information . . . . . . 127
9.11. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 127 9.11. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 127
9.12. Short and Long Leases . . . . . . . . . . . . . . . . . 128 9.12. Short and Long Leases . . . . . . . . . . . . . . . . . 128
9.13. Clocks, Propagation Delay, and Calculating Lease 9.13. Clocks, Propagation Delay, and Calculating Lease
Expiration . . . . . . . . . . . . . . . . . . . . . . . 128 Expiration . . . . . . . . . . . . . . . . . . . . . . . 129
9.14. Migration, Replication and State . . . . . . . . . . . . 129 9.14. Migration, Replication and State . . . . . . . . . . . . 129
9.14.1. Migration and State . . . . . . . . . . . . . . . . 129 9.14.1. Migration and State . . . . . . . . . . . . . . . . 130
9.14.2. Replication and State . . . . . . . . . . . . . . . 130 9.14.2. Replication and State . . . . . . . . . . . . . . . 130
9.14.3. Notification of Migrated Lease . . . . . . . . . . . 130 9.14.3. Notification of Migrated Lease . . . . . . . . . . . 131
9.14.4. Migration and the Lease_time Attribute . . . . . . . 131 9.14.4. Migration and the Lease_time Attribute . . . . . . . 132
10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 131 10. Client-Side Caching . . . . . . . . . . . . . . . . . . . . . 132
10.1. Performance Challenges for Client-Side Caching . . . . . 132 10.1. Performance Challenges for Client-Side Caching . . . . . 133
10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 133 10.2. Delegation and Callbacks . . . . . . . . . . . . . . . . 134
10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 134 10.2.1. Delegation Recovery . . . . . . . . . . . . . . . . 135
10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 136 10.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . 137
10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 137 10.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . 138
10.3.2. Data Caching and File Locking . . . . . . . . . . . 138 10.3.2. Data Caching and File Locking . . . . . . . . . . . 139
10.3.3. Data Caching and Mandatory File Locking . . . . . . 139 10.3.3. Data Caching and Mandatory File Locking . . . . . . 140
10.3.4. Data Caching and File Identity . . . . . . . . . . . 140 10.3.4. Data Caching and File Identity . . . . . . . . . . . 141
10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 141 10.4. Open Delegation . . . . . . . . . . . . . . . . . . . . 142
10.4.1. Open Delegation and Data Caching . . . . . . . . . . 143 10.4.1. Open Delegation and Data Caching . . . . . . . . . . 144
10.4.2. Open Delegation and File Locks . . . . . . . . . . . 144 10.4.2. Open Delegation and File Locks . . . . . . . . . . . 145
10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 145 10.4.3. Handling of CB_GETATTR . . . . . . . . . . . . . . . 146
10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 148 10.4.4. Recall of Open Delegation . . . . . . . . . . . . . 149
10.4.5. Clients that Fail to Honor Delegation Recalls . . . 149 10.4.5. Clients that Fail to Honor Delegation Recalls . . . 151
10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 150 10.4.6. Delegation Revocation . . . . . . . . . . . . . . . 151
10.5. Data Caching and Revocation . . . . . . . . . . . . . . 151 10.5. Data Caching and Revocation . . . . . . . . . . . . . . 152
10.5.1. Revocation Recovery for Write Open Delegation . . . 151 10.5.1. Revocation Recovery for Write Open Delegation . . . 152
10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 152 10.6. Attribute Caching . . . . . . . . . . . . . . . . . . . 153
10.7. Data and Metadata Caching and Memory Mapped Files . . . 154 10.7. Data and Metadata Caching and Memory Mapped Files . . . 155
10.8. Name Caching . . . . . . . . . . . . . . . . . . . . . . 156 10.8. Name Caching . . . . . . . . . . . . . . . . . . . . . . 157
10.9. Directory Caching . . . . . . . . . . . . . . . . . . . 157 10.9. Directory Caching . . . . . . . . . . . . . . . . . . . 158
11. Minor Versioning . . . . . . . . . . . . . . . . . . . . . . 158 11. Minor Versioning . . . . . . . . . . . . . . . . . . . . . . 159
12. Internationalization . . . . . . . . . . . . . . . . . . . . 161 12. Internationalization . . . . . . . . . . . . . . . . . . . . 162
12.1. Use of UTF-8 . . . . . . . . . . . . . . . . . . . . . . 162 12.1. Use of UTF-8 . . . . . . . . . . . . . . . . . . . . . . 163
12.1.1. Relation to Stringprep . . . . . . . . . . . . . . . 162 12.1.1. Relation to Stringprep . . . . . . . . . . . . . . . 163
12.1.2. Normalization, Equivalence, and Confusability . . . 163 12.1.2. Normalization, Equivalence, and Confusability . . . 164
12.2. String Type Overview . . . . . . . . . . . . . . . . . . 165 12.2. String Type Overview . . . . . . . . . . . . . . . . . . 166
12.2.1. Overall String Class Divisions . . . . . . . . . . . 166 12.2.1. Overall String Class Divisions . . . . . . . . . . . 167
12.2.2. Divisions by Typedef Parent types . . . . . . . . . 167 12.2.2. Divisions by Typedef Parent types . . . . . . . . . 168
12.2.3. Individual Types and Their Handling . . . . . . . . 167 12.2.3. Individual Types and Their Handling . . . . . . . . 168
12.3. Errors Related to Strings . . . . . . . . . . . . . . . 169 12.3. Errors Related to Strings . . . . . . . . . . . . . . . 170
12.4. Types with Pre-processing to Resolve Mixture Issues . . 170 12.4. Types with Pre-processing to Resolve Mixture Issues . . 171
12.4.1. Processing of Principal Strings . . . . . . . . . . 170 12.4.1. Processing of Principal Strings . . . . . . . . . . 171
12.4.2. Processing of Server Id Strings . . . . . . . . . . 170 12.4.2. Processing of Server Id Strings . . . . . . . . . . 171
12.5. String Types without Internationalization Processing . . 171 12.5. String Types without Internationalization Processing . . 172
12.6. Types with Processing Defined by Other Internet Areas . 171 12.6. Types with Processing Defined by Other Internet Areas . 172
12.7. String Types with NFS-specific Processing . . . . . . . 172 12.7. String Types with NFS-specific Processing . . . . . . . 173
12.7.1. Handling of File Name Components . . . . . . . . . . 173 12.7.1. Handling of File Name Components . . . . . . . . . . 174
12.7.2. Processing of Link Text . . . . . . . . . . . . . . 182 12.7.2. Processing of Link Text . . . . . . . . . . . . . . 183
12.7.3. Processing of Principal Prefixes . . . . . . . . . . 183 12.7.3. Processing of Principal Prefixes . . . . . . . . . . 184
13. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 184 13. Error Values . . . . . . . . . . . . . . . . . . . . . . . . 185
13.1. Error Definitions . . . . . . . . . . . . . . . . . . . 184 13.1. Error Definitions . . . . . . . . . . . . . . . . . . . 185
13.1.1. General Errors . . . . . . . . . . . . . . . . . . . 186 13.1.1. General Errors . . . . . . . . . . . . . . . . . . . 187
13.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 187 13.1.2. Filehandle Errors . . . . . . . . . . . . . . . . . 188
13.1.3. Compound Structure Errors . . . . . . . . . . . . . 188 13.1.3. Compound Structure Errors . . . . . . . . . . . . . 189
13.1.4. File System Errors . . . . . . . . . . . . . . . . . 189 13.1.4. File System Errors . . . . . . . . . . . . . . . . . 190
13.1.5. State Management Errors . . . . . . . . . . . . . . 191 13.1.5. State Management Errors . . . . . . . . . . . . . . 192
13.1.6. Security Errors . . . . . . . . . . . . . . . . . . 192 13.1.6. Security Errors . . . . . . . . . . . . . . . . . . 193
13.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 192 13.1.7. Name Errors . . . . . . . . . . . . . . . . . . . . 193
13.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 193 13.1.8. Locking Errors . . . . . . . . . . . . . . . . . . . 194
13.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 194 13.1.9. Reclaim Errors . . . . . . . . . . . . . . . . . . . 195
13.1.10. Client Management Errors . . . . . . . . . . . . . . 195 13.1.10. Client Management Errors . . . . . . . . . . . . . . 196
13.1.11. Attribute Handling Errors . . . . . . . . . . . . . 195 13.1.11. Attribute Handling Errors . . . . . . . . . . . . . 196
13.2. Operations and their valid errors . . . . . . . . . . . 196 13.2. Operations and their valid errors . . . . . . . . . . . 197
13.3. Callback operations and their valid errors . . . . . . . 204 13.3. Callback operations and their valid errors . . . . . . . 205
13.4. Errors and the operations that use them . . . . . . . . 204 13.4. Errors and the operations that use them . . . . . . . . 205
14. NFS version 4 Requests . . . . . . . . . . . . . . . . . . . 208 14. NFS version 4 Requests . . . . . . . . . . . . . . . . . . . 209
14.1. Compound Procedure . . . . . . . . . . . . . . . . . . . 209 14.1. Compound Procedure . . . . . . . . . . . . . . . . . . . 210
14.2. Evaluation of a Compound Request . . . . . . . . . . . . 209 14.2. Evaluation of a Compound Request . . . . . . . . . . . . 210
14.3. Synchronous Modifying Operations . . . . . . . . . . . . 210 14.3. Synchronous Modifying Operations . . . . . . . . . . . . 211
14.4. Operation Values . . . . . . . . . . . . . . . . . . . . 211 14.4. Operation Values . . . . . . . . . . . . . . . . . . . . 212
15. NFS version 4 Procedures . . . . . . . . . . . . . . . . . . 211 15. NFS version 4 Procedures . . . . . . . . . . . . . . . . . . 212
15.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 211 15.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 212
15.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 211 15.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 212
15.3. Operation 3: ACCESS - Check Access Rights . . . . . . . 214 15.3. Operation 3: ACCESS - Check Access Rights . . . . . . . 215
15.4. Operation 4: CLOSE - Close File . . . . . . . . . . . . 217 15.4. Operation 4: CLOSE - Close File . . . . . . . . . . . . 218
15.5. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 218 15.5. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 219
15.6. Operation 6: CREATE - Create a Non-Regular File Object . 220 15.6. Operation 6: CREATE - Create a Non-Regular File Object . 221
15.7. Operation 7: DELEGPURGE - Purge Delegations Awaiting 15.7. Operation 7: DELEGPURGE - Purge Delegations Awaiting
Recovery . . . . . . . . . . . . . . . . . . . . . . . . 223 Recovery . . . . . . . . . . . . . . . . . . . . . . . . 224
15.8. Operation 8: DELEGRETURN - Return Delegation . . . . . . 224 15.8. Operation 8: DELEGRETURN - Return Delegation . . . . . . 225
15.9. Operation 9: GETATTR - Get Attributes . . . . . . . . . 224 15.9. Operation 9: GETATTR - Get Attributes . . . . . . . . . 225
15.10. Operation 10: GETFH - Get Current Filehandle . . . . . . 225 15.10. Operation 10: GETFH - Get Current Filehandle . . . . . . 226
15.11. Operation 11: LINK - Create Link to a File . . . . . . . 226 15.11. Operation 11: LINK - Create Link to a File . . . . . . . 227
15.12. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 228 15.12. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 229
15.13. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 232 15.13. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 233
15.14. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 233 15.14. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 234
15.15. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 235 15.15. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 236
15.16. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 236 15.16. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 237
15.17. Operation 17: NVERIFY - Verify Difference in 15.17. Operation 17: NVERIFY - Verify Difference in
Attributes . . . . . . . . . . . . . . . . . . . . . . . 237 Attributes . . . . . . . . . . . . . . . . . . . . . . . 238
15.18. Operation 18: OPEN - Open a Regular File . . . . . . . . 238 15.18. Operation 18: OPEN - Open a Regular File . . . . . . . . 239
15.19. Operation 19: OPENATTR - Open Named Attribute 15.19. Operation 19: OPENATTR - Open Named Attribute
Directory . . . . . . . . . . . . . . . . . . . . . . . 248 Directory . . . . . . . . . . . . . . . . . . . . . . . 249
15.20. Operation 20: OPEN_CONFIRM - Confirm Open . . . . . . . 249 15.20. Operation 20: OPEN_CONFIRM - Confirm Open . . . . . . . 250
15.21. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 251 15.21. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 252
15.22. Operation 22: PUTFH - Set Current Filehandle . . . . . . 252 15.22. Operation 22: PUTFH - Set Current Filehandle . . . . . . 253
15.23. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 252 15.23. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 253
15.24. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 254 15.24. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 255
15.25. Operation 25: READ - Read from File . . . . . . . . . . 254 15.25. Operation 25: READ - Read from File . . . . . . . . . . 255
15.26. Operation 26: READDIR - Read Directory . . . . . . . . . 257 15.26. Operation 26: READDIR - Read Directory . . . . . . . . . 258
15.27. Operation 27: READLINK - Read Symbolic Link . . . . . . 260 15.27. Operation 27: READLINK - Read Symbolic Link . . . . . . 261
15.28. Operation 28: REMOVE - Remove Filesystem Object . . . . 261 15.28. Operation 28: REMOVE - Remove Filesystem Object . . . . 262
15.29. Operation 29: RENAME - Rename Directory Entry . . . . . 263 15.29. Operation 29: RENAME - Rename Directory Entry . . . . . 264
15.30. Operation 30: RENEW - Renew a Lease . . . . . . . . . . 265 15.30. Operation 30: RENEW - Renew a Lease . . . . . . . . . . 266
15.31. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 266 15.31. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 267
15.32. Operation 32: SAVEFH - Save Current Filehandle . . . . . 267 15.32. Operation 32: SAVEFH - Save Current Filehandle . . . . . 268
15.33. Operation 33: SECINFO - Obtain Available Security . . . 268 15.33. Operation 33: SECINFO - Obtain Available Security . . . 269
15.34. Operation 34: SETATTR - Set Attributes . . . . . . . . . 271 15.34. Operation 34: SETATTR - Set Attributes . . . . . . . . . 272
15.35. Operation 35: SETCLIENTID - Negotiate Clientid . . . . . 274 15.35. Operation 35: SETCLIENTID - Negotiate Clientid . . . . . 275
15.36. Operation 36: SETCLIENTID_CONFIRM - Confirm Clientid . . 277 15.36. Operation 36: SETCLIENTID_CONFIRM - Confirm Clientid . . 278
15.37. Operation 37: VERIFY - Verify Same Attributes . . . . . 281 15.37. Operation 37: VERIFY - Verify Same Attributes . . . . . 282
15.38. Operation 38: WRITE - Write to File . . . . . . . . . . 282 15.38. Operation 38: WRITE - Write to File . . . . . . . . . . 283
15.39. Operation 39: RELEASE_LOCKOWNER - Release Lockowner 15.39. Operation 39: RELEASE_LOCKOWNER - Release Lockowner
State . . . . . . . . . . . . . . . . . . . . . . . . . 286 State . . . . . . . . . . . . . . . . . . . . . . . . . 287
15.40. Operation 10044: ILLEGAL - Illegal operation . . . . . . 287 15.40. Operation 10044: ILLEGAL - Illegal operation . . . . . . 288
16. NFS version 4 Callback Procedures . . . . . . . . . . . . . . 288 16. NFS version 4 Callback Procedures . . . . . . . . . . . . . . 289
16.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 288 16.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 289
16.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 289 16.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 290
16.2.6. Operation 3: CB_GETATTR - Get Attributes . . . . . . 290 16.2.6. Operation 3: CB_GETATTR - Get Attributes . . . . . . 291
16.2.7. Operation 4: CB_RECALL - Recall an Open Delegation . 291 16.2.7. Operation 4: CB_RECALL - Recall an Open Delegation . 292
16.2.8. Operation 10044: CB_ILLEGAL - Illegal Callback 16.2.8. Operation 10044: CB_ILLEGAL - Illegal Callback
Operation . . . . . . . . . . . . . . . . . . . . . 292 Operation . . . . . . . . . . . . . . . . . . . . . 293
17. Security Considerations . . . . . . . . . . . . . . . . . . . 293 17. Security Considerations . . . . . . . . . . . . . . . . . . . 294
18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 295 18. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 296
18.1. Named Attribute Definition . . . . . . . . . . . . . . . 295 18.1. Named Attribute Definition . . . . . . . . . . . . . . . 296
18.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 295 18.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 296
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 296 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 297
19.1. Normative References . . . . . . . . . . . . . . . . . . 296 19.1. Normative References . . . . . . . . . . . . . . . . . . 297
19.2. Informative References . . . . . . . . . . . . . . . . . 297 19.2. Informative References . . . . . . . . . . . . . . . . . 298
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 299 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 300
Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 299 Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 300
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 300 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 301
1. Introduction 1. Introduction
1.1. Changes since RFC 3530 1.1. Changes since RFC 3530
This document, together with the companion XDR description document This document, together with the companion XDR description document
[2], obsoletes RFC 3530 [11] as the authoritative document describing [2], obsoletes RFC 3530 [11] as the authoritative document describing
NFSv4. It does not introduce any over-the-wire protocol changes, in NFSv4. It does not introduce any over-the-wire protocol changes, in
the sense that previously valid requests requests remain valid. the sense that previously valid requests requests remain valid.
However, some requests previously defined as invalid, although not However, some requests previously defined as invalid, although not
skipping to change at page 47, line 5 skipping to change at page 47, line 5
5.8.2.9. Attribute 23: files_total 5.8.2.9. Attribute 23: files_total
Total file slots on the file system containing this object. Total file slots on the file system containing this object.
5.8.2.10. Attribute 24: fs_locations 5.8.2.10. Attribute 24: fs_locations
Locations where this file system may be found. If the server returns Locations where this file system may be found. If the server returns
NFS4ERR_MOVED as an error, this attribute MUST be supported. NFS4ERR_MOVED as an error, this attribute MUST be supported.
The server can specify a root path by setting an array of zero path
compenents. Other than this special case, the server MUST not
present empty path components to the client.
5.8.2.11. Attribute 25: hidden 5.8.2.11. Attribute 25: hidden
TRUE, if the file is considered hidden with respect to the Windows TRUE, if the file is considered hidden with respect to the Windows
API. API.
5.8.2.12. Attribute 26: homogeneous 5.8.2.12. Attribute 26: homogeneous
TRUE, if this object's file system is homogeneous, i.e., all objects TRUE, if this object's file system is homogeneous, i.e., all objects
in the file system (all objects on the server with the same fsid) in the file system (all objects on the server with the same fsid)
have common values for all per-file-system attributes. have common values for all per-file-system attributes.
skipping to change at page 53, line 8 skipping to change at page 53, line 10
values changed when no real change to ownership has occurred. values changed when no real change to ownership has occurred.
The "dns_domain" portion of the owner string is meant to be a DNS The "dns_domain" portion of the owner string is meant to be a DNS
domain name. For example, user@example.org. Servers should accept domain name. For example, user@example.org. Servers should accept
as valid a set of users for at least one domain. A server may treat as valid a set of users for at least one domain. A server may treat
other domains as having no valid translations. A more general other domains as having no valid translations. A more general
service is provided when a server is capable of accepting users for service is provided when a server is capable of accepting users for
multiple domains, or for all domains, subject to security multiple domains, or for all domains, subject to security
constraints. constraints.
As an implementation guide, both clients and servers may provide a
means to configure the "dns_domain" portion of the owner string. For
example, the DNS domain name might be "lab.example.org", but the user
names are defined in "example.org". In the absence of such a
configuration, or as a default, the current DNS domain name should be
the value used for the "dns_domain".
As mentioned above, it is desirable that a server when accepting a As mentioned above, it is desirable that a server when accepting a
string of the form user@domain or group@domain in an attribute, string of the form user@domain or group@domain in an attribute,
return this same string when that corresponding attribute is fetched. return this same string when that corresponding attribute is fetched.
Internationalization issues (for a general discussion of which see Internationalization issues (for a general discussion of which see
Section 12) make this impossible and the client needs to take note of Section 12) make this impossible and the client needs to take note of
the following situations: the following situations:
o The string representing the domain may be converted to equivalent o The string representing the domain may be converted to equivalent
U-label, if presented using a form other a a U-label. See U-label, if presented using a form other a a U-label. See
Section 12.6 for details. Section 12.6 for details.
o The user or group may be returned in a different form, due to o The user or group may be returned in a different form, due to
normalization issues, although it will always be a canonically normalization issues, although it will always be a canonically
equivalent string. See See Section 12.7.3 for details. equivalent string. See See Section 12.7.3 for details.
In the case where there is no translation available to the client or In the case where there is no translation available to the client or
server, the attribute value will be constructed without the "@". server, the attribute value will be constructed without the "@".
Therefore, the absence of the @ from the owner or owner_group Therefore, the absence of the "@" from the owner or owner_group
attribute signifies that no translation was available at the sender attribute signifies that no translation was available at the sender
and that the receiver of the attribute should not use that string as and that the receiver of the attribute should not use that string as
a basis for translation into its own internal format. Even though a basis for translation into its own internal format. Even though
the attribute value cannot be translated, it may still be useful. In the attribute value cannot be translated, it may still be useful. In
the case of a client, the attribute string may be used for local the case of a client, the attribute string may be used for local
display of ownership. display of ownership.
To provide a greater degree of compatibility with NFSv3, which To provide a greater degree of compatibility with NFSv3, which
identified users and groups by 32-bit unsigned user identifiers and identified users and groups by 32-bit unsigned user identifiers and
group identifiers, owner and group strings that consist of decimal group identifiers, owner and group strings that consist of decimal
numeric values with no leading zeros can be given a special numeric values with no leading zeros can be given a special
interpretation by clients and servers that choose to provide such interpretation by clients and servers that choose to provide such
support. The receiver may treat such a user or group string as support. The receiver may treat such a user or group string as
representing the same user as would be represented by an NFSv3 uid or representing the same user as would be represented by an NFSv3 uid or
gid having the corresponding numeric value. A server is not gid having the corresponding numeric value.
obligated to accept such a string, but may return an NFS4ERR_BADOWNER
instead. To avoid this mechanism being used to subvert user and A server SHOULD reject such a numeric value if the security mechanism
group translation, so that a client might pass all of the owners and is kerberized. I.e., in such a scenario, the client will already
groups in numeric form, a server SHOULD return an NFS4ERR_BADOWNER need to form "user@domain" strings. For any other security
mechanism, the server SHOULD accept such numeric values. As an
implementation note, the server could make such an acceptance be
configurable. If the server does not support numeric values or if it
is configured off, then it MUST return an NFS4ERR_BADOWNER error. If
the security mechanism is kerberized and the client attempts to use
the special form, then the server SHOULD return an NFS4ERR_BADOWNER
error when there is a valid translation for the user or owner error when there is a valid translation for the user or owner
designated in this way. In that case, the client must use the designated in this way. In that case, the client must use the
appropriate name@domain string and not the special form for appropriate user@domain string and not the special form for
compatibility. compatibility.
The client MUST always accept numeric values if the security
mechanism is not kerberized. A client can determine if a server
supports such a mechanism by first attempting to provide a numeric
value and only if it is rejected with an NFS4ERR_BADOWNER error, then
providing a name value. After the first detection of such an error,
the client should only use the special form.
The owner string "nobody" may be used to designate an anonymous user, The owner string "nobody" may be used to designate an anonymous user,
which will be associated with a file created by a security principal which will be associated with a file created by a security principal
that cannot be mapped through normal means to the owner attribute. that cannot be mapped through normal means to the owner attribute.
5.10. Character Case Attributes 5.10. Character Case Attributes
With respect to the case_insensitive and case_preserving attributes, With respect to the case_insensitive and case_preserving attributes,
each UCS-4 character (which UTF-8 encodes) has a "long descriptive each UCS-4 character (which UTF-8 encodes) has a "long descriptive
name" RFC1345 [30] which may or may not include the word "CAPITAL" or name" RFC1345 [30] which may or may not include the word "CAPITAL" or
"SMALL". The presence of SMALL or CAPITAL allows an NFS server to "SMALL". The presence of SMALL or CAPITAL allows an NFS server to
skipping to change at page 107, line 24 skipping to change at page 108, line 9
Given the above considerations, an example of a well generated id Given the above considerations, an example of a well generated id
string is one that includes: string is one that includes:
o The server's network address. o The server's network address.
o The client's network address. o The client's network address.
o For a user level NFS version 4 client, it should contain o For a user level NFS version 4 client, it should contain
additional information to distinguish the client from other user additional information to distinguish the client from other user
level clients running on the same host, such as a process id or level clients running on the same host, such as an universally
other unique sequence. unique identifier (UUID).
o Additional information that tends to be unique, such as one or o Additional information that tends to be unique, such as one or
more of: more of:
* The client machine's serial number (for privacy reasons, it is * The client machine's serial number (for privacy reasons, it is
best to perform some one way function on the serial number). best to perform some one way function on the serial number).
* A MAC address. * A MAC address.
* The timestamp of when the NFS version 4 software was first * The timestamp of when the NFS version 4 software was first
skipping to change at page 132, line 10 skipping to change at page 132, line 37
CLOSE, READ, WRITE, RENEW, LOCK, and others), will return the error CLOSE, READ, WRITE, RENEW, LOCK, and others), will return the error
NFS4ERR_LEASE_MOVED if responsibility for any of the leases to be NFS4ERR_LEASE_MOVED if responsibility for any of the leases to be
renewed has been transferred to a new server. This condition will renewed has been transferred to a new server. This condition will
continue until the client receives an NFS4ERR_MOVED error and the continue until the client receives an NFS4ERR_MOVED error and the
server receives the subsequent GETATTR(fs_locations) for an access to server receives the subsequent GETATTR(fs_locations) for an access to
each filesystem for which a lease has been moved to a new server. By each filesystem for which a lease has been moved to a new server. By
convention, the compound including the GETATTR(fs_locations) SHOULD convention, the compound including the GETATTR(fs_locations) SHOULD
append a RENEW operation to permit the server to identify the client append a RENEW operation to permit the server to identify the client
doing the access. doing the access.
When a client receives an NFS4ERR_LEASE_MOVED error, it should Upon receiving the NFS4ERR_LEASE_MOVED error, a client that supports
perform an operation on each filesystem associated with the server in filesystem migration MUST probe all filesystems from that server on
question. When the client receives an NFS4ERR_MOVED error, the which it holds open state. Once the client has successfully probed
client can follow the normal process to obtain the new server all those filesystems which are migrated, the server MUST resume
information (through the fs_locations attribute) and perform renewal normal handling of stateful requests from that client.
of those leases on the new server. If the server has not had state
In order to support legacy clients that do not handle the
NFS4ERR_LEASE_MOVED error correctly, the server SHOULD time out after
a wait of at least two lease periods, at which time it will resume
normal handling of stateful requests from all clients. If a client
attempts to access the migrated files, the server MUST reply
NFS4ERR_MOVED.
When the client receives an NFS4ERR_MOVED error, the client can
follow the normal process to obtain the new server information
(through the fs_locations attribute) and perform renewal of those
leases on the new server. If the server has not had state
transferred to it transparently, the client will receive either transferred to it transparently, the client will receive either
NFS4ERR_STALE_CLIENTID or NFS4ERR_STALE_STATEID from the new server, NFS4ERR_STALE_CLIENTID or NFS4ERR_STALE_STATEID from the new server,
as described above, and the client can then recover state information as described above. The client can then recover state information as
as it does in the event of server failure. it does in the event of server failure.
9.14.4. Migration and the Lease_time Attribute 9.14.4. Migration and the Lease_time Attribute
In order that the client may appropriately manage its leases in the In order that the client may appropriately manage its leases in the
case of migration, the destination server must establish proper case of migration, the destination server must establish proper
values for the lease_time attribute. values for the lease_time attribute.
When state is transferred transparently, that state should include When state is transferred transparently, that state should include
the correct value of the lease_time attribute. The lease_time the correct value of the lease_time attribute. The lease_time
attribute on the destination server must never be less than that on attribute on the destination server must never be less than that on
skipping to change at page 135, line 46 skipping to change at page 136, line 37
not know what opens are in effect on the client. Without this not know what opens are in effect on the client. Without this
knowledge the server will be unable to determine if the access and knowledge the server will be unable to determine if the access and
deny state for the file allows any particular open until the deny state for the file allows any particular open until the
delegation for the file has been returned. delegation for the file has been returned.
A client failure or a network partition can result in failure to A client failure or a network partition can result in failure to
respond to a recall callback. In this case, the server will revoke respond to a recall callback. In this case, the server will revoke
the delegation which in turn will render useless any modified state the delegation which in turn will render useless any modified state
still on the client. still on the client.
Clients need to be aware that server implementors may enforce
practical limitations on the number of delegations issued. Further,
as there is no way to determine which delegations to revoke, the
server is allowed to revoke any. If the server is implemented to
revoke another delegation held by that client, then the client may be
able to determine that a limit has been reached because each new
delegation request results in a revoke. The client could then
determine which delegations it may not need and preemptively release
them.
10.2.1. Delegation Recovery 10.2.1. Delegation Recovery
There are three situations that delegation recovery must deal with: There are three situations that delegation recovery must deal with:
o Client reboot or restart o Client reboot or restart
o Server reboot or restart o Server reboot or restart
o Network partition (full or callback-only) o Network partition (full or callback-only)
In the event the client reboots or restarts, the failure to renew In the event the client reboots or restarts, the failure to renew
skipping to change at page 137, line 15 skipping to change at page 138, line 15
o Upon reclaim, a client reporting resources assigned to it by an o Upon reclaim, a client reporting resources assigned to it by an
earlier server instance must be granted those resources. earlier server instance must be granted those resources.
o The server has unquestionable authority to determine whether o The server has unquestionable authority to determine whether
delegations are to be granted and, once granted, whether they are delegations are to be granted and, once granted, whether they are
to be continued. to be continued.
o The use of callbacks is not to be depended upon until the client o The use of callbacks is not to be depended upon until the client
has proven its ability to receive them. has proven its ability to receive them.
When a client has more than a single open associated with a
delegation, state for those additional opens can be established using
OPEN operations of type CLAIM_DELEGATE_CUR. When these are used to
establish opens associated with reclaimed delegations, the server
MUST allow them when made within the grace period.
When a network partition occurs, delegations are subject to freeing When a network partition occurs, delegations are subject to freeing
by the server when the lease renewal period expires. This is similar by the server when the lease renewal period expires. This is similar
to the behavior for locks and share reservations. For delegations, to the behavior for locks and share reservations. For delegations,
however, the server may extend the period in which conflicting however, the server may extend the period in which conflicting
requests are held off. Eventually the occurrence of a conflicting requests are held off. Eventually the occurrence of a conflicting
request from another client will cause revocation of the delegation. request from another client will cause revocation of the delegation.
A loss of the callback path (e.g., by later network configuration A loss of the callback path (e.g., by later network configuration
change) will have the same effect. A recall request will fail and change) will have the same effect. A recall request will fail and
revocation of the delegation will result. revocation of the delegation will result.
 End of changes. 40 change blocks. 
185 lines changed or deleted 236 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/