idnits 2.17.1 draft-ietf-nfsv4-federated-fs-admin-15.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 461 has weird spacing: '...rralVal resRe...' -- The document seems to contain a disclaimer for pre-RFC5378 work, and may have content which was first submitted before 10 November 2008. The disclaimer is necessary when there are original authors that you have been unable to contact, or if some do not wish to grant the BCP78 rights to the IETF Trust. If you are able to get all authors (current and original) to grant those rights, you can and should remove the disclaimer; otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (December 12, 2012) is 4152 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFCTBD10' is mentioned on line 1551, but not defined ** Obsolete normative reference: RFC 5246 (Obsoleted by RFC 8446) -- Obsolete informational reference (is this intentional?): RFC 5661 (Obsoleted by RFC 8881) Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NFSv4 Working Group J. Lentini 3 Internet-Draft NetApp 4 Intended status: Standards Track D. Ellard 5 Expires: June 15, 2013 Raytheon BBN Technologies 6 R. Tewari 7 IBM Almaden 8 C. Lever, Ed. 9 Oracle Corporation 10 December 12, 2012 12 Administration Protocol for Federated Filesystems 13 draft-ietf-nfsv4-federated-fs-admin-15 15 Abstract 17 This document describes the administration protocol for a federated 18 file system that enables file access and namespace traversal across 19 collections of independently administered fileservers. The protocol 20 specifies a set of interfaces by which fileservers with different 21 administrators can form a fileserver federation that provides a 22 namespace composed of the filesystems physically hosted on and 23 exported by the constituent fileservers. 25 Requirements Language 27 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 28 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 29 document are to be interpreted as described in [RFC2119]. 31 Status of this Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at http://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on June 15, 2013. 48 Copyright Notice 49 Copyright (c) 2012 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 This document may contain material from IETF Documents or IETF 63 Contributions published or made publicly available before November 64 10, 2008. The person(s) controlling the copyright in some of this 65 material may not have granted the IETF Trust the right to allow 66 modifications of such material outside the IETF Standards Process. 67 Without obtaining an adequate license from the person(s) controlling 68 the copyright in such materials, this document may not be modified 69 outside the IETF Standards Process, and derivative works of it may 70 not be created outside the IETF Standards Process, except to format 71 it for publication as an RFC or to translate it into languages other 72 than English. 74 Table of Contents 76 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 77 1.1. Definitions . . . . . . . . . . . . . . . . . . . . . . . 5 78 2. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 79 3. Error Values . . . . . . . . . . . . . . . . . . . . . . . . . 13 80 4. Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . 16 81 4.1. FedFsNsdbName Equality . . . . . . . . . . . . . . . . . . 18 82 5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 18 83 5.1. FEDFS_NULL . . . . . . . . . . . . . . . . . . . . . . . . 19 84 5.1.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 19 85 5.1.2. Description . . . . . . . . . . . . . . . . . . . . . 19 86 5.1.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 19 87 5.2. FEDFS_CREATE_JUNCTION . . . . . . . . . . . . . . . . . . 19 88 5.2.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 19 89 5.2.2. Description . . . . . . . . . . . . . . . . . . . . . 19 90 5.2.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 21 91 5.3. FEDFS_DELETE_JUNCTION . . . . . . . . . . . . . . . . . . 21 92 5.3.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 21 93 5.3.2. Description . . . . . . . . . . . . . . . . . . . . . 21 94 5.3.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 22 95 5.4. FEDFS_LOOKUP_JUNCTION . . . . . . . . . . . . . . . . . . 23 96 5.4.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 23 97 5.4.2. Description . . . . . . . . . . . . . . . . . . . . . 23 98 5.4.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 26 99 5.5. FEDFS_CREATE_REPLICATION . . . . . . . . . . . . . . . . . 26 100 5.5.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 26 101 5.5.2. Description . . . . . . . . . . . . . . . . . . . . . 26 102 5.5.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 27 103 5.6. FEDFS_DELETE_REPLICATION . . . . . . . . . . . . . . . . . 28 104 5.6.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 28 105 5.6.2. Description . . . . . . . . . . . . . . . . . . . . . 28 106 5.6.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 29 107 5.7. FEDFS_LOOKUP_REPLICATION . . . . . . . . . . . . . . . . . 29 108 5.7.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 29 109 5.7.2. Description . . . . . . . . . . . . . . . . . . . . . 29 110 5.7.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 30 111 5.8. FEDFS_SET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 31 112 5.8.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 31 113 5.8.2. Description . . . . . . . . . . . . . . . . . . . . . 31 114 5.8.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 31 115 5.9. FEDFS_GET_NSDB_PARAMS . . . . . . . . . . . . . . . . . . 32 116 5.9.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 32 117 5.9.2. Description . . . . . . . . . . . . . . . . . . . . . 32 118 5.9.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 32 119 5.10. FEDFS_GET_LIMITED_NSDB_PARAMS . . . . . . . . . . . . . . 33 120 5.10.1. Synopsis . . . . . . . . . . . . . . . . . . . . . . . 33 121 5.10.2. Description . . . . . . . . . . . . . . . . . . . . . 33 122 5.10.3. Errors . . . . . . . . . . . . . . . . . . . . . . . . 34 123 6. Security Considerations . . . . . . . . . . . . . . . . . . . 34 124 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 125 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35 126 8.1. Normative References . . . . . . . . . . . . . . . . . . . 35 127 8.2. Informative References . . . . . . . . . . . . . . . . . . 36 128 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 36 129 Appendix B. RFC Editor Notes . . . . . . . . . . . . . . . . . . 37 130 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 132 1. Introduction 134 A federated filesystem enables file access and namespace traversal in 135 a uniform, secure and consistent manner across multiple independent 136 fileservers within an enterprise (and possibly across multiple 137 enterprises) with reasonably good performance. 139 Traditionally, building a namespace that spans multiple fileservers 140 has been difficult for two reasons. First, the fileservers that 141 export pieces of the namespace are often not in the same 142 administrative domain. Second, there is no standard mechanism for 143 the fileservers to cooperatively present the namespace. Fileservers 144 might provide proprietary management tools and in some cases an 145 administrator might be able to use the proprietary tools to build a 146 shared namespace out of the exported filesystems. Relying on vendor- 147 proprietary tools does not work in larger enterprises or when 148 collaborating across enterprises because it is likely that the system 149 will contain fileservers running different software, each with their 150 own protocols, with no common protocol to manage the namespace or 151 exchange namespace information. 153 The requirements for federated namespaces are described in [RFC5716]. 155 The filesystem federation protocol described in [FEDFS-NSDB] allows 156 fileservers from different vendors and/or with different 157 administrators to cooperatively build a namespace. 159 This document describes the protocol used by administrators to 160 configure the fileservers and construct the namespace. 162 1.1. Definitions 164 Administrator: A user with the necessary authority to initiate 165 administrative tasks on one or more servers. 167 Admin Entity: A server or agent that administers a collection of 168 fileservers and persistently stores the namespace information. 170 File-access Client: Standard off-the-shelf network attached storage 171 (NAS) client software that communicates with fileservers using a 172 standard file-access protocol. 174 Federation: A set of fileserver collections and singleton 175 fileservers that use a common set of interfaces and protocols in 176 order to provide to file-access clients a federated namespace 177 accessible through a filesystem access protocol. 179 Fileserver: A server that stores physical fileset data, or refers 180 file-access clients to other fileservers. A fileserver provides 181 access to its shared filesystem data via a file-access protocol. 183 Fileset: The abstraction of a set of files and the directory tree 184 that contains them. A fileset is the fundamental unit of data 185 management in the federation. 187 Note that all files within a fileset are descendants of one 188 directory, and that filesets do not span filesystems. 190 Filesystem: A self-contained unit of export for a fileserver, and 191 the mechanism used to implement filesets. The fileset does not 192 need to be rooted at the root of the filesystem, nor at the export 193 point for the filesystem. 195 A single filesystem MAY implement more than one fileset, if the 196 file-access protocol and the fileserver permit this. 198 File-access Protocol: A network filesystem access protocol such as 199 NFSv3 [RFC1813], NFSv4 [3530bis], or CIFS (Common Internet File 200 System) [MS-SMB] [MS-SMB2] [MS-CIFS]. 202 FSL (Fileset Location): The location of the implementation of a 203 fileset at a particular moment in time. An FSL MUST be something 204 that can be translated into a protocol-specific description of a 205 resource that a file-access client can access directly, such as an 206 fs_locations attribute (for NFSv4), or a share name (for CIFS). 208 FSN (Fileset Name): A platform-independent and globally unique name 209 for a fileset. Two FSLs that implement replicas of the same 210 fileset MUST have the same FSN, and if a fileset is migrated from 211 one location to another, the FSN of that fileset MUST remain the 212 same. 214 Junction: A filesystem object used to link a directory name in the 215 current fileset with an object within another fileset. The 216 server-side "link" from a leaf node in one fileset to the root of 217 another fileset. 219 Namespace: A filename/directory tree that a sufficiently authorized 220 file-access client can observe. 222 NSDB (Namespace Database) Service: A service that maps FSNs to FSLs. 223 The NSDB may also be used to store other information, such as 224 annotations for these mappings and their components. 226 NSDB Node: The name or location of a server that implements part of 227 the NSDB service and is responsible for keeping track of the FSLs 228 (and related info) that implement a given partition of the FSNs. 230 Referral: A server response to a file-access client access that 231 directs the client to evaluate the current object as a reference 232 to an object at a different location (specified by an FSL) in 233 another fileset, and possibly hosted on another fileserver. The 234 client re-attempts the access to the object at the new location. 236 Replica: A replica is a redundant implementation of a fileset. Each 237 replica shares the same FSN, but has a different FSL. 239 Replicas may be used to increase availability or performance. 240 Updates to replicas of the same fileset MUST appear to occur in 241 the same order, and therefore each replica is self-consistent at 242 any moment. 244 We do not assume that updates to each replica occur 245 simultaneously. If a replica is offline or unreachable, the other 246 replicas may be updated. 248 Server Collection: A set of fileservers administered as a unit. A 249 server collection may be administered with vendor-specific 250 software. 252 The namespace provided by a server collection could be part of the 253 federated namespace. 255 Singleton Server: A server collection containing only one server; a 256 stand-alone fileserver. 258 2. Protocol 260 The RPC protocol used by the administration operations is ONC RPC 261 [RFC5531]. The data structures used for the parameters and return 262 values of these procedures are expressed in this document in XDR 263 [RFC4506]. 265 The XDR definitions below are formatted to allow the reader to easily 266 extract them from the document. The reader can use the following 267 shell script to extract the definitions: 269 271 #!/bin/sh 272 grep '^ *///' | sed 's?^ */// ??' | sed 's?^ *///$??' 274 276 If the above script is stored in a file called "extract.sh", and this 277 document is in a file called "spec.txt", then the reader can do: 279 281 sh extract.sh < spec.txt > admin1.xdr 283 285 The effect of the script is to remove leading white space from each 286 line, plus a sentinel sequence of "///". 288 The protocol definition in XDR notation is shown below. We begin by 289 defining basic constants and structures used by the protocol. We 290 then present the procedures defined by the protocol. 292 294 /// /* 295 /// * Copyright (c) 2010-2012 IETF Trust and the persons identified 296 /// * as authors of the code. All rights reserved. 297 /// * 298 /// * The authors of the code are the authors of 299 /// * [draft-ietf-nfsv4-federated-fs-admin-xx.txt]: J. Lentini, 300 /// * C. Everhart, D. Ellard, R. Tewari, and M. Naik. 301 /// * 302 /// * Redistribution and use in source and binary forms, with 303 /// * or without modification, are permitted provided that the 304 /// * following conditions are met: 305 /// * 306 /// * - Redistributions of source code must retain the above 307 /// * copyright notice, this list of conditions and the 308 /// * following disclaimer. 309 /// * 310 /// * - Redistributions in binary form must reproduce the above 311 /// * copyright notice, this list of conditions and the 312 /// * following disclaimer in the documentation and/or other 313 /// * materials provided with the distribution. 314 /// * 315 /// * - Neither the name of Internet Society, IETF or IETF 316 /// * Trust, nor the names of specific contributors, may be 317 /// * used to endorse or promote products derived from this 318 /// * software without specific prior written permission. 319 /// * 320 /// * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 321 /// * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED 322 /// * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 323 /// * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 324 /// * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 325 /// * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 326 /// * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 327 /// * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 328 /// * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 329 /// * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 330 /// * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 331 /// * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 332 /// * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 333 /// * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 334 /// * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 335 /// */ 336 /// 337 /// enum FedFsStatus { 338 /// FEDFS_OK = 0, 339 /// FEDFS_ERR_ACCESS = 1, 340 /// FEDFS_ERR_BADCHAR = 2, 341 /// FEDFS_ERR_BADNAME = 3, 342 /// FEDFS_ERR_NAMETOOLONG = 4, 343 /// FEDFS_ERR_LOOP = 5, 344 /// FEDFS_ERR_BADXDR = 6, 345 /// FEDFS_ERR_EXIST = 7, 346 /// FEDFS_ERR_INVAL = 8, 347 /// FEDFS_ERR_IO = 9, 348 /// FEDFS_ERR_NOSPC = 10, 349 /// FEDFS_ERR_NOTJUNCT = 11, 350 /// FEDFS_ERR_NOTLOCAL = 12, 351 /// FEDFS_ERR_PERM = 13, 352 /// FEDFS_ERR_ROFS = 14, 353 /// FEDFS_ERR_SVRFAULT = 15, 354 /// FEDFS_ERR_NOTSUPP = 16, 355 /// FEDFS_ERR_NSDB_ROUTE = 17, 356 /// FEDFS_ERR_NSDB_DOWN = 18, 357 /// FEDFS_ERR_NSDB_CONN = 19, 358 /// FEDFS_ERR_NSDB_AUTH = 20, 359 /// FEDFS_ERR_NSDB_LDAP = 21, 360 /// FEDFS_ERR_NSDB_LDAP_VAL = 22, 361 /// FEDFS_ERR_NSDB_NONCE = 23, 362 /// FEDFS_ERR_NSDB_NOFSN = 24, 363 /// FEDFS_ERR_NSDB_NOFSL = 25, 364 /// FEDFS_ERR_NSDB_RESPONSE = 26, 365 /// FEDFS_ERR_NSDB_FAULT = 27, 366 /// FEDFS_ERR_NSDB_PARAMS = 28, 367 /// FEDFS_ERR_NSDB_LDAP_REFERRAL = 29, 368 /// FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL = 30, 369 /// FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED = 31, 370 /// FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL = 32, 371 /// FEDFS_ERR_PATH_TYPE_UNSUPP = 33, 372 /// FEDFS_ERR_DELAY = 34, 373 /// FEDFS_ERR_NO_CACHE = 35, 374 /// FEDFS_ERR_UNKNOWN_CACHE = 36, 375 /// FEDFS_ERR_NO_CACHE_UPDATE = 37 376 /// }; 377 /// 378 /// typedef opaque utf8string<>; 379 /// typedef utf8string ascii_REQUIRED4; 380 /// typedef utf8string utf8val_REQUIRED4; 381 /// 382 /// typedef opaque FedFsUuid[16]; 383 /// 384 /// struct FedFsNsdbName { 385 /// unsigned int port; 386 /// utf8val_REQUIRED4 hostname; 387 /// }; 388 /// 389 /// typedef ascii_REQUIRED4 FedFsPathComponent; 390 /// typedef FedFsPathComponent FedFsPathName<>; 391 /// 392 /// struct FedFsFsn { 393 /// FedFsUuid fsnUuid; 394 /// FedFsNsdbName nsdbName; 395 /// }; 396 /// 397 /// enum FedFsFslType { 398 /// FEDFS_NFS_FSL = 0 399 /// }; 400 /// 401 /// struct FedFsNfsFsl { 402 /// FedFsUuid fslUuid; 403 /// unsigned int port; 404 /// utf8val_REQUIRED4 hostname; 405 /// FedFsPathName path; 406 /// }; 407 /// 408 /// union FedFsFsl switch(FedFsFslType type) { 409 /// case FEDFS_NFS_FSL: 410 /// FedFsNfsFsl nfsFsl; 411 /// }; 412 /// 413 /// enum FedFsPathType { 414 /// FEDFS_PATH_SYS = 0, 415 /// FEDFS_PATH_NFS = 1 416 /// }; 417 /// 418 /// union FedFsPath switch(FedFsPathType type) { 419 /// case FEDFS_PATH_SYS: /* administrative path */ 420 /// FedFsPathName adminPath; 421 /// case FEDFS_PATH_NFS: /* NFS namespace path */ 422 /// FedFsPathName nfsPath; 423 /// }; 424 /// 425 /// struct FedFsCreateArgs { 426 /// FedFsPath path; 427 /// FedFsFsn fsn; 428 /// }; 429 /// 430 /// enum FedFsResolveType { 431 /// FEDFS_RESOLVE_NONE = 0, 432 /// FEDFS_RESOLVE_CACHE = 1, 433 /// FEDFS_RESOLVE_NSDB = 2 434 /// }; 435 /// 436 /// struct FedFsLookupArgs { 437 /// FedFsPath path; 438 /// FedFsResolveType resolve; 439 /// }; 440 /// 441 /// struct FedFsLookupResOk { 442 /// FedFsFsn fsn; 443 /// FedFsFsl fsl<>; 444 /// }; 445 /// 446 /// struct FedFsLookupResReferralVal { 447 /// FedFsNsdbName targetNsdb; 448 /// unsigned int ldapResultCode; 449 /// }; 450 /// 451 /// union FedFsLookupRes switch (FedFsStatus status) { 452 /// case FEDFS_OK: 453 /// case FEDFS_ERR_NO_CACHE_UPDATE: 454 /// FedFsLookupResOk resok; 455 /// case FEDFS_ERR_NSDB_LDAP_VAL: 456 /// unsigned int ldapResultCode; 457 /// case FEDFS_ERR_NSDB_LDAP_REFERRAL: 458 /// case FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL: 459 /// FedFsNsdbName targetNsdb; 460 /// case FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL: 461 /// FedFsLookupResReferralVal resReferralVal; 462 /// default: 463 /// void; 464 /// }; 465 /// 466 /// enum FedFsConnectionSec { 467 /// FEDFS_SEC_NONE = 0, 468 /// FEDFS_SEC_TLS = 1 /* StartTLS mechanism; RFC4513, Section 3 */ 469 /// }; 470 /// 471 /// union FedFsNsdbParams switch (FedFsConnectionSec secType) { 472 /// case FEDFS_SEC_TLS: 473 /// opaque secData<>; 474 /// default: 475 /// void; 476 /// }; 477 /// 478 /// struct FedFsSetNsdbParamsArgs { 479 /// FedFsNsdbName nsdbName; 480 /// FedFsNsdbParams params; 481 /// }; 482 /// 483 /// union FedFsGetNsdbParamsRes switch (FedFsStatus status) { 484 /// case FEDFS_OK: 485 /// FedFsNsdbParams params; 486 /// default: 487 /// void; 488 /// }; 489 /// 490 /// union FedFsGetLimitedNsdbParamsRes switch (FedFsStatus status) { 491 /// case FEDFS_OK: 492 /// FedFsConnectionSec secType; 493 /// default: 494 /// void; 495 /// }; 496 /// 497 /// program FEDFS_PROG { 498 /// version FEDFS_V1 { 499 /// void FEDFS_NULL(void) = 0; 500 /// FedFsStatus FEDFS_CREATE_JUNCTION( 501 /// FedFsCreateArgs) = 1; 502 /// FedFsStatus FEDFS_DELETE_JUNCTION( 503 /// FedFsPath) = 2; 504 /// FedFsLookupRes FEDFS_LOOKUP_JUNCTION( 505 /// FedFsLookupArgs) = 3; 506 /// FedFsStatus FEDFS_CREATE_REPLICATION( 507 /// FedFsCreateArgs) = 7; 508 /// FedFsStatus FEDFS_DELETE_REPLICATION( 509 /// FedFsPath) = 8; 510 /// FedFsLookupRes FEDFS_LOOKUP_REPLICATION( 511 /// FedFsLookupArgs) = 9; 512 /// FedFsStatus FEDFS_SET_NSDB_PARAMS( 513 /// FedFsSetNsdbParamsArgs) = 4; 514 /// FedFsGetNsdbParamsRes FEDFS_GET_NSDB_PARAMS( 515 /// FedFsNsdbName) = 5; 516 /// FedFsGetLimitedNsdbParamsRes FEDFS_GET_LIMITED_NSDB_PARAMS( 517 /// FedFsNsdbName) = 6; 518 /// } = 1; 519 /// } = 100418; 521 523 3. Error Values 525 The results of successful operations will consist of a status of 526 FEDFS_OK. The results of unsuccessful operations will begin with a 527 status, other than FEDFS_OK, that indicates the reason why the 528 operation failed. 530 Many of the error status names and meanings (and the prose for their 531 descriptions) are taken from the specification for NFSv4 [3530bis]. 532 Note, however, that the numeric values for the status codes are 533 different. For example, the name and meaning of FEDFS_ERR_ACCESS was 534 inspired by NFSv4's NFS4ERR_ACCESS, but their numeric values are 535 different. 537 The status of an unsuccessful operation will generally only indicate 538 the first error encountered during the attempt to execute the 539 operation. 541 FEDFS_OK: No errors were encountered. The operation was a success. 543 FEDFS_ERR_ACCESS: Permission denied. The caller does not have the 544 correct permission to perform the requested operation. 546 FEDFS_ERR_BADCHAR: A UTF-8 string contains a character which is not 547 supported by the server in the context in which it being used. 549 FEDFS_ERR_BADNAME: A name string in a request consisted of valid 550 UTF-8 characters supported by the server, but the name is not 551 supported by the server as a valid name for the current operation. 553 FEDFS_ERR_NAMETOOLONG: Returned when the pathname in an operation 554 exceeds the server's implementation limit. 556 FEDFS_ERR_LOOP: Returned when too many symbolic links were 557 encountered in resolving pathname. 559 FEDFS_ERR_BADXDR: The server encountered an XDR decoding error while 560 processing an operation. 562 FEDFS_ERR_EXIST: The junction specified already exists. 564 FEDFS_ERR_INVAL: Invalid argument for an operation. 566 FEDFS_ERR_IO: A hard error occurred while processing the requested 567 operation. 569 FEDFS_ERR_NOSPC: The requested operation would have caused the 570 server's filesystem to exceed some limit (for example, if there is 571 a fixed number of junctions per fileset or per server). 573 FEDFS_ERR_NOTJUNCT: The caller specified a path that does not end in 574 a junction as the operand for an operation that requires the last 575 component of the path to be a junction. 577 FEDFS_ERR_NOTLOCAL: The caller specified a path that contains a 578 junction in any position other than the last component. 580 FEDFS_ERR_PERM: The operation was not allowed because the caller is 581 either not a privileged user or not the owner of an object that 582 would be modified by the operation. 584 FEDFS_ERR_ROFS: A modifying operation was attempted on a read-only 585 filesystem. 587 FEDFS_ERR_SVRFAULT: An unanticipated non-protocol error occurred on 588 the server. 590 FEDFS_ERR_NSDB_ROUTE: The fileserver was unable to find a route to 591 the NSDB. 593 FEDFS_ERR_NSDB_DOWN: The fileserver determined that the NSDB was 594 down. 596 FEDFS_ERR_NSDB_CONN: The fileserver was unable to establish a 597 connection with the NSDB. 599 FEDFS_ERR_NSDB_AUTH: The fileserver was unable to authenticate and 600 establish a secure connection with the NSDB. 602 FEDFS_ERR_NSDB_LDAP: An LDAP error occurred on the connection 603 between the fileserver and NSDB. 605 FEDFS_ERR_NSDB_LDAP_VAL: Indicates the same error as 606 FEDFS_ERR_NSDB_LDAP, and allows the LDAP protocol error value to 607 be returned back to an ADMIN protocol client. 609 FEDFS_ERR_NSDB_NONCE: The fileserver was unable to locate the NCE in 610 the appropriate NSDB. 612 FEDFS_ERR_NSDB_NOFSN: The fileserver was unable to locate the given 613 FSN in the appropriate NSDB. 615 FEDFS_ERR_NSDB_NOFSL: The fileserver was unable to locate any FSLs 616 for the given FSN in the appropriate NSDB. 618 FEDFS_ERR_NSDB_RESPONSE: The fileserver received a malformed 619 response from the NSDB. This includes situations when an NSDB 620 entry (e.g., FSN or FSL) is missing a required attribute. 622 FEDFS_ERR_NSDB_FAULT: An unanticipated error related to the NSDB 623 occurred. 625 FEDFS_ERR_NSDB_PARAMS: The fileserver does not have any connection 626 parameters on record for the specified NSDB. 628 FEDFS_ERR_NSDB_LDAP_REFERRAL: The fileserver received an LDAP 629 referral that it was unable to follow. 631 FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL: Indicates the same error as 632 FEDFS_ERR_NSDB_LDAP_REFERRAL, and allows the LDAP protocol error 633 value to be returned back to an ADMIN protocol client. 635 FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED: The fileserver received an 636 LDAP referral that it chose not to follow, either because the 637 fileserver does not support following LDAP referrals or LDAP 638 referral following is disabled. 640 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL: The fileserver received an LDAP 641 referral that it chose not to follow because the fileserver had no 642 NSDB parameters for the NSDB targeted by the LDAP referral. 644 FEDFS_ERR_PATH_TYPE_UNSUPP: The fileserver does not support the 645 specified FedFsPathType value. 647 FEDFS_ERR_NOTSUPP: The fileserver does not support the specified 648 procedure. 650 FEDFS_ERR_DELAY: The fileserver initiated the request, but was not 651 able to complete it in a timely fashion. The ADMIN protocol 652 client should wait and then try the request with a new RPC 653 transaction ID. 655 FEDFS_ERR_NO_CACHE: The fileserver does not implement an FSN-to-FSL 656 cache. 658 FEDFS_ERR_UNKNOWN_CACHE: The software receiving the ONC RPC request 659 is unaware if the fileserver implements an FSN-to-FSL cache or 660 unable to communicate with the FSN-to-FSL cache if it exists. 662 FEDFS_ERR_NO_CACHE_UPDATE: The fileserver was unable to update its 663 FSN-to-FSL cache. 665 4. Data Types 667 The basic data types defined above are formatted as follows: 669 FedFsUuid: A universally unique identifier (UUID) as described in 670 [RFC4122] as a version 4 UUID. The UUID MUST be formatted in 671 network byte order. 673 FedFsNsdbName: A (hostname, port) pair. 675 The hostname is a variable length UTF-8 string that represents an 676 NSDB's network location in DNS name notation. It SHOULD be 677 prepared using the server4 rules defined in Chapter 12 678 "Internationalization" of [3530bis]. The DNS name MUST be 679 represented using a fully qualified domain name. 681 The port value in the FedFsNsdbName indicates the LDAP port on the 682 NSDB (see [RFC4511]). The value MUST be in the range 0 to 65535. 683 A value of 0 indicates that the standard LDAP port number, 389, 684 MUST be assumed. 686 FSNs are immutable and invariant. The attributes of an FSN, 687 including the fedfsNsdbName, are expected to remain constant. 688 Therefore, a FedFsNsdbName MUST NOT contain a network address, 689 such as an IPv4 or IPv6 address, as this would indefinitely assign 690 the network address. 692 FedFsPathComponent: A case sensitive UTF-8 string containing a 693 filesystem path component. It MUST be prepared using the 694 component4 rules defined in Chapter 12 "Internationalization" of 695 [3530bis]. 697 FedFsPathName: A variable length array of FedFsPathComponent values 698 representing a filesystem path. The path's first component is 699 stored at the first position of the array, the second component is 700 stored at the second position of the array, and so on. 702 The path "/" MUST be encoded as an array with zero components. 704 A FedFsPathName MUST NOT contain any zero-length components. 706 FedFsPath: A pathname container. The format and semantics of the 707 pathname are defined by the FedFsPathType value. 709 FedFsPathType: The type specific description of a pathname. 711 A FEDFS_PATH_SYS is an implementation dependent administrative 712 pathname. For example, it could be a local file system path. 714 A FEDFS_PATH_NFS is a pathname in the NFSv4 server's single-server 715 namespace. 717 FedFsNsdbParams: A set of parameters for connecting to an NSDB. 718 Conceptually the fileserver contains a data structure that maps an 719 NSDB name (DNS name and port value) to these LDAP connection 720 parameters. 722 The secType field indicates the security mechanism that MUST be 723 used to protect all connections to the NSDB with the connection 724 parameters. 726 A value of FEDFS_SEC_NONE indicates that a transport security 727 mechanism MUST NOT be used when connecting to the NSDB. In this 728 case, the secData array will have a length of zero. 730 A value of FEDFS_SEC_TLS indicates that the StartTLS security 731 mechanism [RFC4513] MUST be used to protect all connections to the 732 NSDB. In this case, the secData array will contain an X.509v3 733 root certificate in binary DER format [RFC5280] fulfilling the TLS 734 requirement that root keys be distributed independently from the 735 TLS protocol. The certificate MUST be used by the fileserver as a 736 Trust Anchor to validate the NSDB's TLS server certificate list 737 chain (see section 7.4.2 of [RFC5246]) and thus authenticate the 738 identitiy of the NSDB. The certificate could be that of a 739 certificate authority or a self-signed certificate. To ensure 740 that this security configuration information does not cause 741 vulnerabilities for other services, trust anchors provided through 742 secData MUST only be used for the NSDB service (as opposed to 743 being installed as system-wide trust anchors for other services). 744 Most popular TLS libraries provide ways in which this can be done 745 such as denoting a private file system location for the 746 certificates. 748 4.1. FedFsNsdbName Equality 750 Two FedFsNsdbNames are considered equal if their respective hostname 751 and port fields contain the same values. The only exception to this 752 rule is that a value of 0 in the port field always matches the 753 standard LDAP port number, 389. 755 Therefore, the FedFsNsdbName "(nsdb.example.com, 0)" is considered 756 equal to "(nsdb.example.com, 389)" but not equal to 757 "(nsdb.example.com, 1066)" since the port numbers are different, or 758 "(nsdb.foo.example.com, 389)" since the hostnames are different. 760 5. Procedures 762 The procedures defined in Section 2 are described in detail in the 763 following sections. 765 Fileservers that participate as "internal" nodes in the federated 766 namespace MUST implement the following procedures: 768 FEDFS_NULL 769 FEDFS_CREATE_JUNCTION 770 FEDFS_DELETE_JUNCTION 771 FEDFS_LOOKUP_JUNCTION 772 FEDFS_SET_NSDB_PARAMS 773 FEDFS_GET_NSDB_PARAMS 774 FEDFS_GET_LIMITED_NSDB_PARAMS 776 and SHOULD implement the following procedures: 778 FEDFS_CREATE_REPLICATION 779 FEDFS_DELETE_REPLICATION 780 FEDFS_LOOKUP_REPLICATION 782 Fileservers that participate as "leaf" nodes in the namespace (i.e., 783 fileservers that host filesets that are the target of junctions, but 784 that do not contain any junctions) are not required to implement any 785 of these operations. 787 Operations that modify the state of a replicated fileset MUST result 788 in the update of all of the replicas in a consistent manner. Ideally 789 all of the replicas SHOULD be updated before any operation returns. 790 If one or more of the replicas are unavailable, the operation MAY 791 succeed, but the changes MUST be applied before the unavailable 792 replicas are brought back online. We assume that replicas are 793 updated via some protocol that permits state changes to be reflected 794 consistently across the set of replicas in such a manner that the 795 replicas will converge to a consistent state within a bounded number 796 of successful message exchanges between the servers hosting the 797 replicas. 799 5.1. FEDFS_NULL 801 5.1.1. Synopsis 803 The standard NULL procedure. 805 5.1.2. Description 807 The null RPC, which is included, by convention, in every ONC RPC 808 protocol. This procedure does not take any arguments and does not 809 produce a result. 811 5.1.3. Errors 813 None. 815 5.2. FEDFS_CREATE_JUNCTION 817 5.2.1. Synopsis 819 Create a new junction from some location on the server (defined as a 820 pathname) to an FSN. 822 5.2.2. Description 824 This operation creates a junction from a server-relative path to a 825 (potentially) remote fileset named by the given FSN. 827 The junction directory on the server is identified by a pathname in 828 the form of an array of one or more UTF-8 path component strings. It 829 is not required that this path be accessible in any other manner 830 (e.g., to a file-access client). This path does not appear in the 831 federated namespace, except by coincidence; there is no requirement 832 that the global namespace parallel the server namespace, nor is it 833 required that this path be relative to the server pseudo-root. It 834 does not need to be a path that is accessible via NFS (although the 835 junction will be of limited utility if the directory specified by the 836 path is not also accessible via NFS). 838 If the fileset is read-only, then this operation MUST indicate this 839 with a status of FEDFS_ERR_ROFS. 841 If the path contains a character that is not supported by the server, 842 then status FEDFS_ERR_BADCHAR MUST be returned. 844 The path is REQUIRED to exist and be completely local to the server. 845 It MUST NOT contain a junction. If the last component of the path is 846 a junction (i.e., this operation is attempting to create a junction 847 where one already exists), then this operation MUST return the error 848 FEDFS_ERR_EXIST (even if the requested junction is identical to the 849 current junction). If any other component of the path is a junction, 850 then this operation MUST fail with status FEDFS_ERR_NOTLOCAL. The 851 path might contain a symbolic link (if supported by the local 852 server), but the traversal of the path MUST remain within the server- 853 local namespace. 855 If any component of the path does not exist, then the operation MUST 856 fail with status FEDFS_ERR_INVAL. 858 The server MAY enforce the local permissions on the path, including 859 the final component. If a server wishes to report that a path cannot 860 be traversed because of insufficient permissions, or the final 861 component is an unexecutable or unwritable directory, then the 862 operation MUST fail with status FEDFS_ERR_ACCESS. 864 The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the 865 fileserver does not have any connection parameters on record for the 866 specified NSDB, or the server may allow the operation to proceed 867 using some set of default NSDB connection parameters. 869 The association between the path and the FSN MUST be durable before 870 the operation returns successfully. If the operation return codes 871 indicates success, then the junction was successfully created and is 872 immediately accessible. 874 If successful, subsequent references via NFSv4.0 [3530bis] or NFSv4.1 875 [RFC5661] clients to the directory that has been replaced by the 876 junction will result in a referral to a current location of the 877 target fileset [FEDFS-NSDB]. 879 The effective permissions of the directory that is converted, by this 880 operation, into a junction are the permissions of the root directory 881 of the target fileset. The original permissions of the directory 882 (and any other attributes it might have) are subsumed by the 883 junction. 885 This operation does not create a fileset at the location targeted by 886 the junction. If the target fileset does not exist, the junction 887 will still be created. An NFS client will discover the missing 888 fileset when it traverses the junction. 890 5.2.3. Errors 892 FEDFS_ERR_ACCESS 893 FEDFS_ERR_BADCHAR 894 FEDFS_ERR_BADNAME 895 FEDFS_ERR_NAMETOOLONG 896 FEDFS_ERR_LOOP 897 FEDFS_ERR_BADXDR 898 FEDFS_ERR_EXIST 899 FEDFS_ERR_INVAL 900 FEDFS_ERR_IO 901 FEDFS_ERR_NOSPC 902 FEDFS_ERR_NOTLOCAL 903 FEDFS_ERR_PERM 904 FEDFS_ERR_ROFS 905 FEDFS_ERR_SVRFAULT 906 FEDFS_ERR_PATH_TYPE_UNSUPP 907 FEDFS_ERR_NOTSUPP 908 FEDFS_ERR_DELAY 910 5.3. FEDFS_DELETE_JUNCTION 912 5.3.1. Synopsis 914 Delete an existing junction from some location on the server (defined 915 as a pathname). 917 5.3.2. Description 919 This operation removes a junction specified by a server-relative 920 path. 922 As with FEDFS_CREATE_JUNCTION, the junction on the server is 923 identified by a pathname in the form of an array of one or more UTF-8 924 path component strings. It is not required that this path be 925 accessible in any other manner (e.g., to a file-access client). This 926 path does not appear in the federated namespace, except by 927 coincidence; there is no requirement that the global namespace 928 reflect the server namespace, nor is it required that this path be 929 relative to the server pseudo-root. It does not need to be a path 930 that is accessible via NFS. 932 If the fileset is read-only, then this operation MUST indicate this 933 with a status of FEDFS_ERR_ROFS. 935 If the path contains a character that is not supported by the server, 936 then status FEDFS_ERR_BADCHAR MUST be returned. 938 The path used to delete a junction might not be the same path that 939 was used to create the junction. If the namespace on the server has 940 changed, then the junction might now appear at a different path than 941 where it was created. If there is more than one valid path to the 942 junction, any of them can be used. 944 The path is REQUIRED to exist and be completely local to the server. 945 It MUST NOT contain a junction, except as the final component, which 946 MUST be a junction. If any other component of the path is a 947 junction, then this operation MUST fail with status 948 FEDFS_ERR_NOTLOCAL. If the last component of the path is not a 949 junction then this operation MUST return status FEDFS_ERR_NOTJUNCT. 950 The path might contain a symbolic link (if supported by the local 951 server), but the traversal of the path MUST remain within the server- 952 local namespace. 954 The server MAY enforce the local permissions on the path, including 955 the final component. If a server wishes to report that a path cannot 956 be traversed because of insufficient permissions, or the final 957 component is an unexecutable or unwritable directory, then the 958 operation MUST fail with status FEDFS_ERR_ACCESS. 960 The removal of the association between the path and the FSN MUST be 961 durable before the operation returns successfully. If the operation 962 return codes indicates success, then the junction was successfully 963 destroyed. 965 The effective permissions and other attributes of the directory that 966 is restored by this operation SHOULD be identical to their value 967 prior to the creation of the junction. 969 After removal of the junction, the fileserver MAY check if any of its 970 existing junctions reference the NSDB specified in the removed 971 junction's FSN. If the NSDB is not referenced, the fileserver MAY 972 delete the connection parameters of the unreferenced NSDB. 974 5.3.3. Errors 976 FEDFS_ERR_ACCESS 977 FEDFS_ERR_BADCHAR 978 FEDFS_ERR_BADNAME 979 FEDFS_ERR_NAMETOOLONG 980 FEDFS_ERR_LOOP 981 FEDFS_ERR_BADXDR 982 FEDFS_ERR_INVAL 983 FEDFS_ERR_IO 984 FEDFS_ERR_NOTJUNCT 985 FEDFS_ERR_NOTLOCAL 986 FEDFS_ERR_PERM 987 FEDFS_ERR_ROFS 988 FEDFS_ERR_SVRFAULT 989 FEDFS_ERR_PATH_TYPE_UNSUPP 990 FEDFS_ERR_NOTSUPP 991 FEDFS_ERR_DELAY 993 5.4. FEDFS_LOOKUP_JUNCTION 995 5.4.1. Synopsis 997 Query the server to discover the current value of the junction (if 998 any) at a given path in the server namespace. 1000 5.4.2. Description 1002 This operation queries a server to determine whether a given path 1003 ends in a junction, and if so, the FSN to which the junction refers 1004 and the filerserver's ability to resolve the junction. 1006 Ordinary NFSv4 operations do not provide any general mechanism to 1007 determine whether an object is a junction -- there is no encoding 1008 specified by the NFSv4 protocol that can represent this information. 1010 As with FEDFS_CREATE_JUNCTION, the pathname MUST be in the form of an 1011 array of one or more UTF-8 path component strings. It is not 1012 required that this path be accessible in any other manner (e.g., to a 1013 file-access client). This path does not appear in the federated 1014 namespace, except by coincidence; there is no requirement that the 1015 global namespace reflect the server namespace, nor is it required 1016 that this path be relative to the server pseudo-root. It does not 1017 need to be a path that is accessible via NFS. 1019 If the path contains a character that is not supported by the server, 1020 then status FEDFS_ERR_BADCHAR MUST be returned. 1022 The path used to lookup a junction might not be the same path that 1023 was used to create the junction. If the namespace on the server has 1024 changed, then a junction might now appear at a different path than 1025 where it was created. If there is more than one valid path to the 1026 junction, any of them might be used. 1028 The path is REQUIRED to exist and be completely local to the server. 1029 It MUST NOT contain a junction, except as the final component. If 1030 any other component of the path is a junction, then this operation 1031 MUST fail with status FEDFS_ERR_NOTLOCAL. If the last component of 1032 the path is not a junction then this operation MUST return the status 1033 FEDFS_ERR_NOTJUNCT. The path might contain a symbolic link (if 1034 supported by the local server), but the traversal of the path MUST 1035 remain within the server-local namespace. 1037 The server MAY enforce the local permissions on the path, including 1038 the final component. If a server wishes to report that a path cannot 1039 be traversed because of insufficient permissions, or the final 1040 component is an unexecutable or unwritable directory, then the 1041 operation MUST fail with status FEDFS_ERR_ACCESS. 1043 If the junction exists, the resolve parameter allows for testing the 1044 fileserver's ability to resolve the junction. If the junction does 1045 not exist, the fileserver will ignore the resolve parameter. 1047 If the junction exists and the resolve parameter is set to 1048 FEDFS_RESOLVE_NONE, the fileserver MUST NOT attempt to resolve the 1049 FSN. This will allow the administrator to obtain the junction's FSN 1050 even if the resolution would fail. Therefore on success, the result 1051 of a FEDFS_RESOLVE_NONE call will return a 0 length fsl list in the 1052 FedFsLookupResOk structure. 1054 If the junction exists and the resolve parameter is set to 1055 FEDFS_RESOLVE_CACHE, the fileserver MUST attempt to resolve the FSN 1056 using its FSL cache, if one exists. The fileserver MUST NOT resolve 1057 the FSN by contacting the appropriate NSDB. If the fileserver's 1058 cache does not have a mapping for the FSN in question, the result of 1059 the operation MUST be FEDFS_OK with 0 elements in the 1060 FedFsLookupResOk structure's fsl array. The operation MAY fail with 1061 status FEDFS_ERR_NO_CACHE if the fileserver does not contain an FSN- 1062 to-FSL cache or with status FEDFS_ERR_UNKNOWN_CACHE if the state of 1063 the cache is unknown. 1065 If the junction exists and the resolve parameter is set to 1066 FEDFS_RESOLVE_NSDB, the fileserver MUST attempt to resolve the FSN by 1067 contacting the appropriate NSDB. The FSN MUST NOT be resolved using 1068 cached information. The resolution MAY fail with 1069 FEDFS_ERR_NSDB_ROUTE, FEDFS_ERR_NSDB_DOWN, FEDFS_ERR_NSDB_CONN, 1070 FEDFS_ERR_NSDB_AUTH, FEDFS_ERR_NSDB_LDAP, FEDFS_ERR_NSDB_LDAP_VAL, 1071 FEDFS_ERR_NSDB_NOFSN, FEDFS_ERR_NSDB_NOFSL, FEDFS_ERR_NSDB_NONCE, 1072 FEDFS_ERR_NSDB_RESPONSE, FEDFS_ERR_NSDB_FAULT, 1073 FEDFS_ERR_NSDB_LDAP_REFERRAL, FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL, 1074 FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED, or 1075 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL, depending on the nature of the 1076 failure. 1078 In the case of a LDAP failure, the fileserver MUST return either 1079 FEDFS_ERR_NSDB_LDAP or FEDFS_ERR_NSDB_LDAP_VAL. FEDFS_ERR_NSDB_LDAP 1080 indicates that an LDAP protocol error occurred during the resolution. 1081 FEDFS_ERR_NSDB_LDAP_VAL also indicates that an LDAP protocol error 1082 occurred during the resolution and allows the LDAP protocol error 1083 value to be returned in the FedFsLookupRes's ldapResultCode field 1084 (see the resultCode values in Section 4.1.9 of [RFC4511]). 1086 If the NSDB responds with an LDAP referral, either the Referral type 1087 defined in Section 4.1.10 of [RFC4511] or the SearchResultReference 1088 type defined in Section 4.5.3 of [RFC4511], the fileserver SHOULD 1089 process the LDAP referral using the same policies as the fileserver's 1090 file-access protocol server. The fileserver MUST indicate a failure 1091 while processing the LDAP referral using 1092 FEDFS_ERR_NSDB_LDAP_REFERRAL, FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL, 1093 FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED, or 1094 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL. The 1095 FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL is analogous to the 1096 FEDFS_ERR_NSDB_LDAP_VAL error and allows the LDAP protocol error 1097 value to be returned in the FedFsLookupResReferralVal's 1098 ldapResultCode field. The FEDFS_ERR_NSDB_LDAP_REFERRAL and 1099 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL errors errors allow the NSDB 1100 targeted by the LDAP referral to be returned in the FedFsLookupRes's 1101 targetNsdb field. Similarly, the FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL 1102 error includes this information in the FedFsLookupResReferralVal's 1103 targetNsdb. 1105 If the fileserver has a cache of FSL records, the process of 1106 resolving an FSN using an NSDB SHOULD result in the cache being 1107 updated. A failure to update the cache MAY be indicated with the 1108 FEDFS_ERR_NO_CACHE_UPDATE status value, or the operation may complete 1109 successfully. 1111 When updating the cache, new FSLs for the given FSN SHOULD be added 1112 to the cache and deleted FSLs SHOULD be removed from the cache. This 1113 behavior is desirable because it allows an administrator to 1114 proactively request that the fileserver refresh its FSL cache. For 1115 example, the administrator might like to refresh the fileserver's 1116 cache when changes are made to an FSN's FSLs. 1118 If the junction is resolved, the fileserver will include a list of 1119 UUIDs for the FSN's FSLs in the FedFsLookupResOk structure's fsl 1120 array. 1122 5.4.3. Errors 1124 FEDFS_ERR_ACCESS 1125 FEDFS_ERR_BADCHAR 1126 FEDFS_ERR_BADNAME 1127 FEDFS_ERR_NAMETOOLONG 1128 FEDFS_ERR_LOOP 1129 FEDFS_ERR_BADXDR 1130 FEDFS_ERR_INVAL 1131 FEDFS_ERR_IO 1132 FEDFS_ERR_NOTJUNCT 1133 FEDFS_ERR_NOTLOCAL 1134 FEDFS_ERR_PERM 1135 FEDFS_ERR_SVRFAULT 1136 FEDFS_ERR_NSDB_ROUTE 1137 FEDFS_ERR_NSDB_DOWN 1138 FEDFS_ERR_NSDB_CONN 1139 FEDFS_ERR_NSDB_AUTH 1140 FEDFS_ERR_NSDB_LDAP 1141 FEDFS_ERR_NSDB_LDAP_VAL 1142 FEDFS_ERR_NSDB_NONCE 1143 FEDFS_ERR_NSDB_NOFSN 1144 FEDFS_ERR_NSDB_NOFSL 1145 FEDFS_ERR_NSDB_RESPONSE 1146 FEDFS_ERR_NSDB_FAULT 1147 FEDFS_ERR_NSDB_PARAMS 1148 FEDFS_ERR_NSDB_LDAP_REFERRAL 1149 FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL 1150 FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED 1151 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL 1152 FEDFS_ERR_PATH_TYPE_UNSUPP 1153 FEDFS_ERR_NOTSUPP 1154 FEDFS_ERR_DELAY 1155 FEDFS_ERR_NO_CACHE 1156 FEDFS_ERR_UNKNOWN_CACHE 1157 FEDFS_ERR_NO_CACHE_UPDATE 1159 5.5. FEDFS_CREATE_REPLICATION 1161 5.5.1. Synopsis 1163 Set an FSN representing the replication information for the fileset 1164 containing the pathname. 1166 5.5.2. Description 1168 This operation indicates the replication information to be returned 1169 for a particular fileset. An NFSv4 client might request fs_locations 1170 or fs_locations_info at any time to detect other copies of this 1171 fileset, and this operation supports this by supplying the FSN the 1172 fileserver should use to respond. This FSN should be associated with 1173 the entire fileset in which the path resides, and should be used to 1174 satisfy fs_locations or fs_locations_info attribute requests whenever 1175 no junction is being accessed; if a junction is being accessed, the 1176 FSN specified by FEDFS_CREATE_JUNCTION will take precedence. Setting 1177 the replication FSN on a fileset that already has a replication FSN 1178 set is allowed. 1180 This operation differs from FEDFS_CREATE_JUNCTION in that it controls 1181 a fileset-wide attribute not associated with a junction. 1183 The server SHOULD permit this operation even on read-only filesets, 1184 but MUST return FEDFS_ERR_ROFS if this is not possible. 1186 If the path contains a character that is not supported by the server, 1187 then status FEDFS_ERR_BADCHAR MUST be returned. 1189 The path is REQUIRED to exist and be completely local to the server. 1190 It MUST NOT contain a junction. If any component of the path is a 1191 junction, then this operation MUST fail with status 1192 FEDFS_ERR_NOTLOCAL. The path might contain a symbolic link (if 1193 supported by the local server), but the traversal of the path MUST 1194 remain within the server-local namespace. 1196 The server MAY enforce the local permissions on the path, including 1197 the final component. If a server wishes to report that a path cannot 1198 be traversed because of insufficient permissions, or the final 1199 component is an unexecutable or unwritable directory, then the 1200 operation MUST fail with status FEDFS_ERR_ACCESS. 1202 The operation SHOULD fail with status FEDFS_ERR_NSDB_PARAMS if the 1203 fileserver does not have any connection parameters on record for the 1204 specified NSDB, or the server may allow the operation to proceed 1205 using some set of default NSDB connection parameters. 1207 The same FSN value SHOULD be associated with all replicas of a 1208 filesystem. Depending on the underlying representation, the FSN 1209 associated with a filesystem might or might not be replicated 1210 automatically with the filesystem replication mechanism. Therefore 1211 if FEDFS_CREATE_REPLICATION is used on one replica of a filesystem, 1212 it SHOULD be used on all replicas. 1214 5.5.3. Errors 1215 FEDFS_ERR_ACCESS 1216 FEDFS_ERR_BADCHAR 1217 FEDFS_ERR_BADNAME 1218 FEDFS_ERR_NAMETOOLONG 1219 FEDFS_ERR_LOOP 1220 FEDFS_ERR_BADXDR 1221 FEDFS_ERR_EXIST 1222 FEDFS_ERR_INVAL 1223 FEDFS_ERR_IO 1224 FEDFS_ERR_NOSPC 1225 FEDFS_ERR_NOTLOCAL 1226 FEDFS_ERR_PERM 1227 FEDFS_ERR_ROFS 1228 FEDFS_ERR_SVRFAULT 1229 FEDFS_ERR_PATH_TYPE_UNSUPP 1230 FEDFS_ERR_NOTSUPP 1231 FEDFS_ERR_DELAY 1233 5.6. FEDFS_DELETE_REPLICATION 1235 5.6.1. Synopsis 1237 Remove the replication information for the fileset containing the 1238 pathname. 1240 5.6.2. Description 1242 This operation removes any replication information from the fileset 1243 in which the path resides, such that NFSv4 client requests for 1244 fs_locations or fs_locations_info in the absence of a junction will 1245 not be satisfied. 1247 This operation differs from FEDFS_DELETE_JUNCTION in that it controls 1248 a fileset-wide attribute not associated with a junction. 1250 The server SHOULD permit this operation even on read-only filesets, 1251 but MUST return FEDFS_ERR_ROFS if this is not possible. 1253 If the path contains a character that is not supported by the server, 1254 then status FEDFS_ERR_BADCHAR MUST be returned. 1256 The path is REQUIRED to exist and be completely local to the server. 1257 It MUST NOT contain a junction. If any component of the path is a 1258 junction, then this operation MUST fail with status 1259 FEDFS_ERR_NOTLOCAL. 1261 The server MAY enforce the local permissions on the path, including 1262 the final component. If a server wishes to report that a path cannot 1263 be traversed because of insufficient permissions, or the final 1264 component is an unexecutable or unwritable directory, then the 1265 operation MUST fail with status FEDFS_ERR_ACCESS. 1267 5.6.3. Errors 1269 FEDFS_ERR_ACCESS 1270 FEDFS_ERR_BADCHAR 1271 FEDFS_ERR_BADNAME 1272 FEDFS_ERR_NAMETOOLONG 1273 FEDFS_ERR_LOOP 1274 FEDFS_ERR_BADXDR 1275 FEDFS_ERR_INVAL 1276 FEDFS_ERR_IO 1277 FEDFS_ERR_NOTJUNCT 1278 FEDFS_ERR_NOTLOCAL 1279 FEDFS_ERR_PERM 1280 FEDFS_ERR_ROFS 1281 FEDFS_ERR_SVRFAULT 1282 FEDFS_ERR_PATH_TYPE_UNSUPP 1283 FEDFS_ERR_NOTSUPP 1284 FEDFS_ERR_DELAY 1286 5.7. FEDFS_LOOKUP_REPLICATION 1288 5.7.1. Synopsis 1290 Query the server to discover the current replication information (if 1291 any) at the given path. 1293 5.7.2. Description 1295 This operation queries a server to determine whether a fileset 1296 containing the given path has replication information associated with 1297 it, and if so, the FSN for that replication information. 1299 This operation differs from FEDFS_LOOKUP_JUNCTION in that it inquires 1300 about a fileset-wide attribute not associated with a junction. 1302 If the path contains a character that is not supported by the server, 1303 then status FEDFS_ERR_BADCHAR MUST be returned. 1305 The path is REQUIRED to exist and be completely local to the server. 1306 It MUST NOT contain a junction. If any component of the path is a 1307 junction, then this operation MUST fail with status 1308 FEDFS_ERR_NOTLOCAL. 1310 The server MAY enforce the local permissions on the path, including 1311 the final component. If a server wishes to report that a path cannot 1312 be traversed because of insufficient permissions, or the final 1313 component is an unexecutable or unwritable directory, then the 1314 operation MUST fail with status FEDFS_ERR_ACCESS. 1316 Interpretation of the 'resolve' parameter and the procedure's results 1317 shall be the same as specified in Section 5.4 for the 1318 FEDFS_LOOKUP_JUNCTION operation. 1320 5.7.3. Errors 1322 FEDFS_ERR_ACCESS 1323 FEDFS_ERR_BADCHAR 1324 FEDFS_ERR_BADNAME 1325 FEDFS_ERR_NAMETOOLONG 1326 FEDFS_ERR_LOOP 1327 FEDFS_ERR_BADXDR 1328 FEDFS_ERR_INVAL 1329 FEDFS_ERR_IO 1330 FEDFS_ERR_NOTJUNCT 1331 FEDFS_ERR_NOTLOCAL 1332 FEDFS_ERR_PERM 1333 FEDFS_ERR_SVRFAULT 1334 FEDFS_ERR_NSDB_ROUTE 1335 FEDFS_ERR_NSDB_DOWN 1336 FEDFS_ERR_NSDB_CONN 1337 FEDFS_ERR_NSDB_AUTH 1338 FEDFS_ERR_NSDB_LDAP 1339 FEDFS_ERR_NSDB_LDAP_VAL 1340 FEDFS_ERR_NSDB_NONCE 1341 FEDFS_ERR_NSDB_NOFSN 1342 FEDFS_ERR_NSDB_NOFSL 1343 FEDFS_ERR_NSDB_RESPONSE 1344 FEDFS_ERR_NSDB_FAULT 1345 FEDFS_ERR_NSDB_PARAMS 1346 FEDFS_ERR_NSDB_LDAP_REFERRAL 1347 FEDFS_ERR_NSDB_LDAP_REFERRAL_VAL 1348 FEDFS_ERR_NSDB_LDAP_REFERRAL_NOTFOLLOWED 1349 FEDFS_ERR_NSDB_PARAMS_LDAP_REFERRAL 1350 FEDFS_ERR_PATH_TYPE_UNSUPP 1351 FEDFS_ERR_NOTSUPP 1352 FEDFS_ERR_DELAY 1353 FEDFS_ERR_NO_CACHE 1354 FEDFS_ERR_UNKNOWN_CACHE 1356 5.8. FEDFS_SET_NSDB_PARAMS 1358 5.8.1. Synopsis 1360 Set the connection parameters for the specified NSDB. 1362 5.8.2. Description 1364 This operations allows the administrator to set the connection 1365 parameters for a given NSDB. 1367 If a record for the given NSDB does not exist, a new record is 1368 created with the specified connection parameters. 1370 If a record for the given NSDB does exist, the existing connection 1371 parameters are replaced with the specified connection parameters. 1373 An NSDB is specified using a FedFsNsdbName. The rules in Section 4.1 1374 define when two FedFsNsdbNames are considered equal. 1376 The given NSDB need not be referenced by any junctions on the 1377 fileserver. This situation will occur when connection parameters for 1378 a new NSDB are installed. 1380 The format of the connection parameters is described above. 1382 On success, this operation returns FEDFS_OK. When the operation 1383 returns, the new connection parameters SHOULD be used for all 1384 subsequent LDAP connections to the given NSDB. Existing connections 1385 MAY be terminated and re-established using the new connection 1386 parameters. The connection parameters SHOULD be durable across 1387 fileserver reboots. 1389 On failure, an error value indicating the type of error is returned. 1390 If the operation's associated user does not have sufficient 1391 permissions to create/modify NSDB connection parameters, the 1392 operation MUST return FEDFS_ERR_ACCESS. 1394 5.8.3. Errors 1396 FEDFS_ERR_ACCESS 1397 FEDFS_ERR_BADCHAR 1398 FEDFS_ERR_BADNAME 1399 FEDFS_ERR_BADXDR 1400 FEDFS_ERR_INVAL 1401 FEDFS_ERR_IO 1402 FEDFS_ERR_NOSPC 1403 FEDFS_ERR_SVRFAULT 1404 FEDFS_ERR_NOTSUPP 1405 FEDFS_ERR_DELAY 1407 5.9. FEDFS_GET_NSDB_PARAMS 1409 5.9.1. Synopsis 1411 Get the connection parameters for the specified NSDB. 1413 5.9.2. Description 1415 This operations allows the administrator to retrieve connection 1416 parameters, if they exist, for the given NSDB. 1418 An NSDB is specified using a FedFsNsdbName. The rules in Section 4.1 1419 define when two FedFsNsdbNames are considered equal. 1421 A set of connection parameters is considered a match if their 1422 associated NSDB is equal (as defined above) to the operation's NSDB 1423 argument. Therefore, there is at most one set of connection 1424 parameters that can match the query described by this operation. 1426 The format of the connection parameters is described above. 1428 On success, this operation returns FEDFS_OK and the connection 1429 parameters on record for the given NSDB. 1431 On failure, an error value indicating the type of error is returned. 1432 This operation MUST return FEDFS_ERR_NSDB_PARAMS to indicate that 1433 there are no connection parameters on record for the given NSDB. If 1434 the operation's associated user does not have sufficient permissions 1435 to view NSDB connection parameters, the operation MUST return 1436 FEDFS_ERR_ACCESS. 1438 5.9.3. Errors 1440 FEDFS_ERR_ACCESS 1441 FEDFS_ERR_BADCHAR 1442 FEDFS_ERR_BADNAME 1443 FEDFS_ERR_BADXDR 1444 FEDFS_ERR_INVAL 1445 FEDFS_ERR_IO 1446 FEDFS_ERR_SVRFAULT 1447 FEDFS_ERR_NSDB_PARAMS 1448 FEDFS_ERR_NOTSUPP 1449 FEDFS_ERR_DELAY 1451 5.10. FEDFS_GET_LIMITED_NSDB_PARAMS 1453 5.10.1. Synopsis 1455 Get a limited subset of the connection parameters for the specified 1456 NSDB. 1458 5.10.2. Description 1460 This operation allows the administrator to retrieve a limited subset 1461 of information on the connection parameters, if they exist, for the 1462 given NSDB. 1464 A NSDB is specified using a FedFsNsdbName. The rules in Section 4.1 1465 define when two FedFsNsdbNames are considered equal. 1467 A set of connection parameters is considered a match if their 1468 associated NSDB is equal (as defined above) to the operation's NSDB 1469 argument. Therefore, there is at most one set of connection 1470 parameters that can match the query described by this operation. 1472 This operation returns a limited subset of the connection parameters. 1473 Only the FedFsConnectionSec mechanism that is used to protect 1474 communication between the fileserver and NSDB is returned. 1476 Viewing the limited subset of NSDB connection parameters returned by 1477 FEDFS_GET_LIMITED_NSDB_PARAMS MAY be a less privileged operation than 1478 viewing the entire set of NSDB connection parameters returned by 1479 FEDFS_GET_NSDB_PARAMS. For example, the full contents of an NSDB's 1480 connection parameters could contain sensitive information for some 1481 security mechanisms. FEDFS_GET_LIMITED_NSDB_PARAMS allows the 1482 fileserver to communicate a subset of the connection parameters (the 1483 security mechanism) to users with sufficient permissions without 1484 revealing more sensitive information. 1486 On success, this operation returns FEDFS_OK and the 1487 FedFsConnectionSec value on record for the given NSDB. 1489 On failure, an error value indicating the type of error is returned. 1490 This operation MUST return FEDFS_ERR_NSDB_PARAMS to indicate that 1491 there are no connection parameters on record for the given NSDB. If 1492 the operation's associated user does not have sufficient permissions 1493 to view the subset of NSDB connection parameters returned by this 1494 procedure, the operation MUST return FEDFS_ERR_ACCESS. 1496 5.10.3. Errors 1498 FEDFS_ERR_ACCESS 1499 FEDFS_ERR_BADCHAR 1500 FEDFS_ERR_BADNAME 1501 FEDFS_ERR_BADXDR 1502 FEDFS_ERR_INVAL 1503 FEDFS_ERR_IO 1504 FEDFS_ERR_SVRFAULT 1505 FEDFS_ERR_NSDB_PARAMS 1506 FEDFS_ERR_NOTSUPP 1507 FEDFS_ERR_DELAY 1509 6. Security Considerations 1511 The Security Considerations of [RFC5531] apply to the protocol 1512 described in this document. The ONC RPC protocol supports 1513 authentication, integrity and privacy via the RPCSEC_GSS framework 1514 [RFC2203]. Fileservers which support the FedFS administration 1515 protocol described above MUST support RPCSEC_GSS. 1517 As with NFSv4.1 (see Section 2.2.1.1.1.1 of [RFC5661]), FedFS 1518 administration protocol clients and servers MUST support RPCSEC_GSS's 1519 integrity and authentication services. FedFS administration protocol 1520 servers MUST support RPCSEC_GSS's privacy service. FedFS 1521 administration protocol clients SHOULD support RPCSEC_GSS's privacy 1522 service. When RPCSEC_GSS is employed on behalf of the FedFS 1523 administration protocol, RPCSEC_GSS data integrity SHOULD be used. 1525 It is strongly RECOMMENDED that an Access Control Service be employed 1526 to restrict access to a fileserver's FedFS administration 1527 configuration data via the FedFS administrative protocol to prevent 1528 FedFS namespace corruption, and protect NSDB communication 1529 parameters. 1531 For example, when the FedFsNsdbParams secType field value 1532 FEDFS_SEC_TLS is chosen, the payload is used to provision the trust 1533 anchor root certificate for TLS secure communication between the 1534 fileserver and the NSDB. In this case, RPCSEC_GSS with data 1535 integrity SHOULD be employed along with an Access Control Service to 1536 restrict access to domain adminstrators 1538 FEDFS_GET_LIMITED_NSDB_PARAMS's interaction with the NSDB's 1539 connection parameters is discussed in Section 5.10.2. 1541 7. IANA Considerations 1543 A range of ONC RPC program numbers were assigned for use by FedFS 1544 using the procedure described in Section 7.3 "Program Number 1545 Assignment" of [RFC5531]. The FedFS range is: 1547 IETF NFSv4 Working Group - FedFS 100418 - 100421 1549 This document describes version 1 of the ONC RPC program 100418 with 1550 the short name "fedfs_admin", a Description of "FedFS 1551 Administration", and a reference of [RFCTBD10]. Program 100418 will 1552 be removed from the reserved FedFS range and assigned these new 1553 values. 1555 8. References 1557 8.1. Normative References 1559 [3530bis] Haynes, T. and D. Noveck, "NFS Version 4 Protocol", 1560 draft-ietf-nfsv4-rfc3530bis (Work In Progress), 2010. 1562 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1563 Requirement Levels", BCP 14, RFC 2119, March 1997. 1565 [RFC2203] Eisler, M., Chiu, A., and L. Ling, "RPCSEC_GSS Protocol 1566 Specification", RFC 2203, September 1997. 1568 [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally 1569 Unique IDentifier (UUID) URN Namespace", RFC 4122, 1570 July 2005. 1572 [RFC4506] Eisler, M., "XDR: External Data Representation Standard", 1573 STD 67, RFC 4506, May 2006. 1575 [RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol 1576 (LDAP): The Protocol", RFC 4511, June 2006. 1578 [RFC4513] Harrison, R., "Lightweight Directory Access Protocol 1579 (LDAP): Authentication Methods and Security Mechanisms", 1580 RFC 4513, June 2006. 1582 [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security 1583 (TLS) Protocol Version 1.2", RFC 5246, August 2008. 1585 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., 1586 Housley, R., and W. Polk, "Internet X.509 Public Key 1587 Infrastructure Certificate and Certificate Revocation List 1588 (CRL) Profile", RFC 5280, May 2008. 1590 [RFC5531] Thurlow, R., "RPC: Remote Procedure Call Protocol 1591 Specification Version 2", RFC 5531, May 2009. 1593 8.2. Informative References 1595 [FEDFS-NSDB] 1596 Lentini, J., Everhart, C., Ellard, D., Tewari, R., and M. 1597 Naik, "NSDB Protocol for Federated Filesystems", 1598 draft-ietf-nfsv4-federated-fs-protocol (Work In Progress), 1599 2010. 1601 [MS-CIFS] Microsoft Corporation, "Common Internet File System (CIFS) 1602 Protocol Specification", MS-CIFS 2.0, November 2009. 1604 [MS-SMB] Microsoft Corporation, "Server Message Block (SMB) 1605 Protocol Specification", MS-SMB 17.0, November 2009. 1607 [MS-SMB2] Microsoft Corporation, "Server Message Block (SMB) Version 1608 2 Protocol Specification", MS-SMB2 19.0, November 2009. 1610 [RFC1813] Callaghan, B., Pawlowski, B., and P. Staubach, "NFS 1611 Version 3 Protocol Specification", RFC 1813, June 1995. 1613 [RFC5661] Shepler, S., Eisler, M., and D. Noveck, "Network File 1614 System (NFS) Version 4 Minor Version 1 Protocol", 1615 RFC 5661, January 2010. 1617 [RFC5662] Shepler, S., Eisler, M., and D. Noveck, "Network File 1618 System (NFS) Version 4 Minor Version 1 External Data 1619 Representation Standard (XDR) Description", RFC 5662, 1620 January 2010. 1622 [RFC5716] Lentini, J., Everhart, C., Ellard, D., Tewari, R., and M. 1623 Naik, "Requirements for Federated File Systems", RFC 5716, 1624 January 2010. 1626 Appendix A. Acknowledgments 1628 The authors and editor would like to thank Craig Everhart and Manoj 1629 Naik, who were co-authors of an earlier version of this document. In 1630 addition, we would like to thank Paul Lemahieu, Mario Wurzl, and 1631 Robert Thurlow for helping to author this document. 1633 We would like to thank Trond Myklebust for suggesting improvements to 1634 the FSL pathname format, David Noveck for his suggestions on 1635 internationalization and path encoding rules, and Nicolas Williams 1636 for his suggestions. 1638 The editor gratefully acknowledges the IESG reviewers, whose 1639 constructive comments helped make this a much stronger document. 1641 Finally, we would like to thank Andy Adamson, Rob Thurlow, and Tom 1642 Haynes for helping to get this document out the door. 1644 The extract.sh shell script and formatting conventions were first 1645 described by the authors of the NFSv4.1 XDR specification [RFC5662]. 1647 Appendix B. RFC Editor Notes 1649 [RFC Editor: please remove this section prior to publishing this 1650 document as an RFC] 1652 [RFC Editor: prior to publishing this document as an RFC, please 1653 replace all occurrences of RFCTBD10 with RFCxxxx where xxxx is the 1654 RFC number of this document] 1656 Authors' Addresses 1658 James Lentini 1659 NetApp 1660 1601 Trapelo Rd, Suite 16 1661 Waltham, MA 02451 1662 US 1664 Phone: +1 781-768-5359 1665 Email: jlentini@netapp.com 1667 Daniel Ellard 1668 Raytheon BBN Technologies 1669 10 Moulton Street 1670 Cambridge, MA 02138 1671 US 1673 Phone: +1 617-873-8004 1674 Email: dellard@bbn.com 1675 Renu Tewari 1676 IBM Almaden 1677 650 Harry Rd 1678 San Jose, CA 95120 1679 US 1681 Email: tewarir@us.ibm.com 1683 Charles Lever (editor) 1684 Oracle Corporation 1685 1015 Granger Avenue 1686 Ann Arbor, MI 48104 1687 US 1689 Phone: +1 248-614-5091 1690 Email: chuck.lever@oracle.com