Found wdiff, but it reported no recognisable version. Falling back to builtin diff colouring...
draft-pre-ch-16.txt | draft-ietf-nfsv4-minorversion1-22.txt | |||
---|---|---|---|---|
NFSv4 S. Shepler | NFSv4 S. Shepler | |||
Internet-Draft M. Eisler | Internet-Draft M. Eisler | |||
Intended status: Standards Track D. Noveck | Intended status: Standards Track D. Noveck | |||
Expires: September 23, 2008 Editors | Expires: October 2, 2008 Editors | |||
March 22, 2008 | March 31, 2008 | |||
NFS Version 4 Minor Version 1 | NFS Version 4 Minor Version 1 | |||
draft-ietf-nfsv4-minorversion1-22.txt | draft-ietf-nfsv4-minorversion1-22.txt | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on September 23, 2008. | This Internet-Draft will expire on October 2, 2008. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The IETF Trust (2008). | Copyright (C) The IETF Trust (2008). | |||
Abstract | Abstract | |||
This Internet-Draft describes NFS version 4 minor version one, | This Internet-Draft describes NFS version 4 minor version one, | |||
including features retained from the base protocol and protocol | including features retained from the base protocol and protocol | |||
extensions made subsequently. Major extensions introduced in NFS | extensions made subsequently. Major extensions introduced in NFS | |||
skipping to change at page 8, line 9 | skipping to change at page 8, line 9 | |||
15.1.13. Client Management Errors . . . . . . . . . . . . . . 339 | 15.1.13. Client Management Errors . . . . . . . . . . . . . . 339 | |||
15.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 340 | 15.1.14. Delegation Errors . . . . . . . . . . . . . . . . . 340 | |||
15.1.15. Attribute Handling Errors . . . . . . . . . . . . . 341 | 15.1.15. Attribute Handling Errors . . . . . . . . . . . . . 341 | |||
15.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 341 | 15.1.16. Obsoleted Errors . . . . . . . . . . . . . . . . . . 341 | |||
15.2. Operations and their valid errors . . . . . . . . . . . 342 | 15.2. Operations and their valid errors . . . . . . . . . . . 342 | |||
15.3. Callback operations and their valid errors . . . . . . . 358 | 15.3. Callback operations and their valid errors . . . . . . . 358 | |||
15.4. Errors and the operations that use them . . . . . . . . 360 | 15.4. Errors and the operations that use them . . . . . . . . 360 | |||
16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 374 | 16. NFSv4.1 Procedures . . . . . . . . . . . . . . . . . . . . . 374 | |||
16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 374 | 16.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 374 | |||
16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 375 | 16.2. Procedure 1: COMPOUND - Compound Operations . . . . . . 375 | |||
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 385 | 17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL . . . . . . . 386 | |||
18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 388 | 18. NFSv4.1 Operations . . . . . . . . . . . . . . . . . . . . . 389 | |||
18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 388 | 18.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 389 | |||
18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 391 | 18.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 392 | |||
18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 392 | 18.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . . 393 | |||
18.4. Operation 6: CREATE - Create a Non-Regular File Object . 395 | 18.4. Operation 6: CREATE - Create a Non-Regular File Object . 396 | |||
18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | 18.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting | |||
Recovery . . . . . . . . . . . . . . . . . . . . . . . . 398 | Recovery . . . . . . . . . . . . . . . . . . . . . . . . 399 | |||
18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 399 | 18.6. Operation 8: DELEGRETURN - Return Delegation . . . . . . 400 | |||
18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 399 | 18.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 400 | |||
18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 401 | 18.8. Operation 10: GETFH - Get Current Filehandle . . . . . . 402 | |||
18.9. Operation 11: LINK - Create Link to a File . . . . . . . 402 | 18.9. Operation 11: LINK - Create Link to a File . . . . . . . 403 | |||
18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 404 | 18.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . . 405 | |||
18.11. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 408 | 18.11. Operation 13: LOCKT - Test For Lock . . . . . . . . . . 409 | |||
18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 410 | 18.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . . 411 | |||
18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 411 | 18.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . . 412 | |||
18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 413 | 18.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . . 414 | |||
18.15. Operation 17: NVERIFY - Verify Difference in | 18.15. Operation 17: NVERIFY - Verify Difference in | |||
Attributes . . . . . . . . . . . . . . . . . . . . . . . 414 | Attributes . . . . . . . . . . . . . . . . . . . . . . . 415 | |||
18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 415 | 18.16. Operation 18: OPEN - Open a Regular File . . . . . . . . 416 | |||
18.17. Operation 19: OPENATTR - Open Named Attribute | 18.17. Operation 19: OPENATTR - Open Named Attribute | |||
Directory . . . . . . . . . . . . . . . . . . . . . . . 434 | Directory . . . . . . . . . . . . . . . . . . . . . . . 435 | |||
18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 435 | 18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access . 436 | |||
18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 437 | 18.19. Operation 22: PUTFH - Set Current Filehandle . . . . . . 438 | |||
18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 437 | 18.20. Operation 23: PUTPUBFH - Set Public Filehandle . . . . . 438 | |||
18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 439 | 18.21. Operation 24: PUTROOTFH - Set Root Filehandle . . . . . 440 | |||
18.22. Operation 25: READ - Read from File . . . . . . . . . . 439 | 18.22. Operation 25: READ - Read from File . . . . . . . . . . 441 | |||
18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 442 | 18.23. Operation 26: READDIR - Read Directory . . . . . . . . . 443 | |||
18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 446 | 18.24. Operation 27: READLINK - Read Symbolic Link . . . . . . 447 | |||
18.25. Operation 28: REMOVE - Remove File System Object . . . . 447 | 18.25. Operation 28: REMOVE - Remove File System Object . . . . 448 | |||
18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 449 | 18.26. Operation 29: RENAME - Rename Directory Entry . . . . . 450 | |||
18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 453 | 18.27. Operation 31: RESTOREFH - Restore Saved Filehandle . . . 454 | |||
18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 454 | 18.28. Operation 32: SAVEFH - Save Current Filehandle . . . . . 455 | |||
18.29. Operation 33: SECINFO - Obtain Available Security . . . 454 | 18.29. Operation 33: SECINFO - Obtain Available Security . . . 456 | |||
18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 457 | 18.30. Operation 34: SETATTR - Set Attributes . . . . . . . . . 459 | |||
18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 460 | 18.31. Operation 37: VERIFY - Verify Same Attributes . . . . . 461 | |||
18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 461 | 18.32. Operation 38: WRITE - Write to File . . . . . . . . . . 462 | |||
18.33. Operation 40: BACKCHANNEL_CTL - Backchannel control . . 466 | 18.33. Operation 40: BACKCHANNEL_CTL - Backchannel control . . 467 | |||
18.34. Operation 41: BIND_CONN_TO_SESSION . . . . . . . . . . . 467 | 18.34. Operation 41: BIND_CONN_TO_SESSION . . . . . . . . . . . 468 | |||
18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 470 | 18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID . . . 471 | |||
18.36. Operation 43: CREATE_SESSION - Create New Session and | 18.36. Operation 43: CREATE_SESSION - Create New Session and | |||
Confirm Client ID . . . . . . . . . . . . . . . . . . . 486 | Confirm Client ID . . . . . . . . . . . . . . . . . . . 487 | |||
18.37. Operation 44: DESTROY_SESSION - Destroy existing | 18.37. Operation 44: DESTROY_SESSION - Destroy existing | |||
session . . . . . . . . . . . . . . . . . . . . . . . . 496 | session . . . . . . . . . . . . . . . . . . . . . . . . 497 | |||
18.38. Operation 45: FREE_STATEID - Free stateid with no | 18.38. Operation 45: FREE_STATEID - Free stateid with no | |||
locks . . . . . . . . . . . . . . . . . . . . . . . . . 498 | locks . . . . . . . . . . . . . . . . . . . . . . . . . 499 | |||
18.39. Operation 46: GET_DIR_DELEGATION - Get a directory | 18.39. Operation 46: GET_DIR_DELEGATION - Get a directory | |||
delegation . . . . . . . . . . . . . . . . . . . . . . . 499 | delegation . . . . . . . . . . . . . . . . . . . . . . . 500 | |||
18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 503 | 18.40. Operation 47: GETDEVICEINFO - Get Device Information . . 504 | |||
18.41. Operation 48: GETDEVICELIST - Get All Device Mappings | 18.41. Operation 48: GETDEVICELIST - Get All Device Mappings | |||
for a File System . . . . . . . . . . . . . . . . . . . 505 | for a File System . . . . . . . . . . . . . . . . . . . 506 | |||
18.42. Operation 49: LAYOUTCOMMIT - Commit writes made using | 18.42. Operation 49: LAYOUTCOMMIT - Commit writes made using | |||
a layout . . . . . . . . . . . . . . . . . . . . . . . . 507 | a layout . . . . . . . . . . . . . . . . . . . . . . . . 508 | |||
18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 510 | 18.43. Operation 50: LAYOUTGET - Get Layout Information . . . . 511 | |||
18.44. Operation 51: LAYOUTRETURN - Release Layout | 18.44. Operation 51: LAYOUTRETURN - Release Layout | |||
Information . . . . . . . . . . . . . . . . . . . . . . 514 | Information . . . . . . . . . . . . . . . . . . . . . . 515 | |||
18.45. Operation 52: SECINFO_NO_NAME - Get Security on | 18.45. Operation 52: SECINFO_NO_NAME - Get Security on | |||
Unnamed Object . . . . . . . . . . . . . . . . . . . . . 519 | Unnamed Object . . . . . . . . . . . . . . . . . . . . . 520 | |||
18.46. Operation 53: SEQUENCE - Supply per-procedure | 18.46. Operation 53: SEQUENCE - Supply per-procedure | |||
sequencing and control . . . . . . . . . . . . . . . . . 520 | sequencing and control . . . . . . . . . . . . . . . . . 521 | |||
18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 526 | 18.47. Operation 54: SET_SSV - Update SSV for a Client ID . . . 527 | |||
18.48. Operation 55: TEST_STATEID - Test stateids for | 18.48. Operation 55: TEST_STATEID - Test stateids for | |||
validity . . . . . . . . . . . . . . . . . . . . . . . . 528 | validity . . . . . . . . . . . . . . . . . . . . . . . . 529 | |||
18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 530 | 18.49. Operation 56: WANT_DELEGATION - Request Delegation . . . 531 | |||
18.50. Operation 57: DESTROY_CLIENTID - Destroy existing | 18.50. Operation 57: DESTROY_CLIENTID - Destroy existing | |||
client ID . . . . . . . . . . . . . . . . . . . . . . . 534 | client ID . . . . . . . . . . . . . . . . . . . . . . . 535 | |||
18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | 18.51. Operation 58: RECLAIM_COMPLETE - Indicates Reclaims | |||
Finished . . . . . . . . . . . . . . . . . . . . . . . . 534 | Finished . . . . . . . . . . . . . . . . . . . . . . . . 535 | |||
18.52. Operation 10044: ILLEGAL - Illegal operation . . . . . . 537 | 18.52. Operation 10044: ILLEGAL - Illegal operation . . . . . . 538 | |||
19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 537 | 19. NFSv4.1 Callback Procedures . . . . . . . . . . . . . . . . . 538 | |||
19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 538 | 19.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . 539 | |||
19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 538 | 19.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 539 | |||
20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 542 | 20. NFSv4.1 Callback Operations . . . . . . . . . . . . . . . . . 543 | |||
20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 542 | 20.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . . 543 | |||
20.2. Operation 4: CB_RECALL - Recall an Open Delegation . . . 543 | 20.2. Operation 4: CB_RECALL - Recall an Open Delegation . . . 544 | |||
20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | 20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout from | |||
Client . . . . . . . . . . . . . . . . . . . . . . . . . 544 | Client . . . . . . . . . . . . . . . . . . . . . . . . . 545 | |||
20.4. Operation 6: CB_NOTIFY - Notify directory changes . . . 548 | 20.4. Operation 6: CB_NOTIFY - Notify directory changes . . . 549 | |||
20.5. Operation 7: CB_PUSH_DELEG - Offer Delegation to | 20.5. Operation 7: CB_PUSH_DELEG - Offer Delegation to | |||
Client . . . . . . . . . . . . . . . . . . . . . . . . . 552 | Client . . . . . . . . . . . . . . . . . . . . . . . . . 553 | |||
20.6. Operation 8: CB_RECALL_ANY - Keep any N delegations . . 553 | 20.6. Operation 8: CB_RECALL_ANY - Keep any N delegations . . 554 | |||
20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | 20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal | |||
Resources for Recallable Objects . . . . . . . . . . . . 555 | Resources for Recallable Objects . . . . . . . . . . . . 556 | |||
20.8. Operation 10: CB_RECALL_SLOT - change flow control | 20.8. Operation 10: CB_RECALL_SLOT - change flow control | |||
limits . . . . . . . . . . . . . . . . . . . . . . . . . 556 | limits . . . . . . . . . . . . . . . . . . . . . . . . . 557 | |||
20.9. Operation 11: CB_SEQUENCE - Supply backchannel | 20.9. Operation 11: CB_SEQUENCE - Supply backchannel | |||
sequencing and control . . . . . . . . . . . . . . . . . 557 | sequencing and control . . . . . . . . . . . . . . . . . 558 | |||
20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | 20.10. Operation 12: CB_WANTS_CANCELLED - Cancel Pending | |||
Delegation Wants . . . . . . . . . . . . . . . . . . . . 559 | Delegation Wants . . . . . . . . . . . . . . . . . . . . 560 | |||
20.11. Operation 13: CB_NOTIFY_LOCK - Notify of possible | 20.11. Operation 13: CB_NOTIFY_LOCK - Notify of possible | |||
lock availability . . . . . . . . . . . . . . . . . . . 560 | lock availability . . . . . . . . . . . . . . . . . . . 561 | |||
20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify device ID | 20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify device ID | |||
changes . . . . . . . . . . . . . . . . . . . . . . . . 562 | changes . . . . . . . . . . . . . . . . . . . . . . . . 563 | |||
20.13. Operation 10044: CB_ILLEGAL - Illegal Callback | 20.13. Operation 10044: CB_ILLEGAL - Illegal Callback | |||
Operation . . . . . . . . . . . . . . . . . . . . . . . 564 | Operation . . . . . . . . . . . . . . . . . . . . . . . 565 | |||
21. Security Considerations . . . . . . . . . . . . . . . . . . . 564 | 21. Security Considerations . . . . . . . . . . . . . . . . . . . 565 | |||
22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 566 | 22. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 567 | |||
22.1. Named Attribute Definitions . . . . . . . . . . . . . . 566 | 22.1. Named Attribute Definitions . . . . . . . . . . . . . . 567 | |||
22.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 566 | 22.2. ONC RPC Network Identifiers (netids) . . . . . . . . . . 567 | |||
22.3. Defining New Notifications . . . . . . . . . . . . . . . 567 | 22.3. Defining New Notifications . . . . . . . . . . . . . . . 568 | |||
22.4. Defining New Layout Types . . . . . . . . . . . . . . . 567 | 22.4. Defining New Layout Types . . . . . . . . . . . . . . . 568 | |||
22.5. Path Variable Definitions . . . . . . . . . . . . . . . 569 | 22.5. Path Variable Definitions . . . . . . . . . . . . . . . 570 | |||
22.5.1. Path Variable Values . . . . . . . . . . . . . . . . 569 | 22.5.1. Path Variable Values . . . . . . . . . . . . . . . . 570 | |||
22.5.2. Path Variable Names . . . . . . . . . . . . . . . . 569 | 22.5.2. Path Variable Names . . . . . . . . . . . . . . . . 570 | |||
23. References . . . . . . . . . . . . . . . . . . . . . . . . . 569 | 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 570 | |||
23.1. Normative References . . . . . . . . . . . . . . . . . . 569 | 23.1. Normative References . . . . . . . . . . . . . . . . . . 570 | |||
23.2. Informative References . . . . . . . . . . . . . . . . . 571 | 23.2. Informative References . . . . . . . . . . . . . . . . . 572 | |||
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 572 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 573 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 574 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 575 | |||
Intellectual Property and Copyright Statements . . . . . . . . . 576 | Intellectual Property and Copyright Statements . . . . . . . . . 577 | |||
1. Introduction | 1. Introduction | |||
1.1. The NFS Version 4 Minor Version 1 Protocol | 1.1. The NFS Version 4 Minor Version 1 Protocol | |||
The NFS version 4 minor version 1 (NFSv4.1) protocol is the second | The NFS version 4 minor version 1 (NFSv4.1) protocol is the second | |||
minor version of the NFS version 4 (NFSv4) protocol. The first minor | minor version of the NFS version 4 (NFSv4) protocol. The first minor | |||
version, NFSv4.0 is described in [21]. It generally follows the | version, NFSv4.0 is described in [21]. It generally follows the | |||
guidelines for minor versioning model listed in Section 10 of RFC | guidelines for minor versioning model listed in Section 10 of RFC | |||
3530. However, it diverges from guidelines 11 ("a client and server | 3530. However, it diverges from guidelines 11 ("a client and server | |||
skipping to change at page 374, line 28 | skipping to change at page 374, line 28 | |||
| | RECLAIM_COMPLETE, SETATTR, | | | | RECLAIM_COMPLETE, SETATTR, | | |||
| | VERIFY, WANT_DELEGATION, | | | | VERIFY, WANT_DELEGATION, | | |||
| | WRITE | | | | WRITE | | |||
| NFS4ERR_XDEV | LINK, RENAME | | | NFS4ERR_XDEV | LINK, RENAME | | |||
+-----------------------------------+-------------------------------+ | +-----------------------------------+-------------------------------+ | |||
Table 14 | Table 14 | |||
16. NFSv4.1 Procedures | 16. NFSv4.1 Procedures | |||
Both procedures, NULL and COMPOUND, MUST be implemented. | ||||
16.1. Procedure 0: NULL - No Operation | 16.1. Procedure 0: NULL - No Operation | |||
16.1.1. ARGUMENTS | 16.1.1. ARGUMENTS | |||
void; | void; | |||
16.1.2. RESULTS | 16.1.2. RESULTS | |||
void; | void; | |||
skipping to change at page 381, line 21 | skipping to change at page 381, line 25 | |||
struct COMPOUND4res { | struct COMPOUND4res { | |||
nfsstat4 status; | nfsstat4 status; | |||
utf8str_cs tag; | utf8str_cs tag; | |||
nfs_resop4 resarray<>; | nfs_resop4 resarray<>; | |||
}; | }; | |||
16.2.3. DESCRIPTION | 16.2.3. DESCRIPTION | |||
The COMPOUND procedure is used to combine one or more of the NFS | The COMPOUND procedure is used to combine one or more of the NFS | |||
operations into a single RPC request. The main NFS RPC program has | operations into a single RPC request. The NFS RPC program has two | |||
two main procedures: NULL and COMPOUND. All other operations use the | main procedures: NULL and COMPOUND. All other operations use the | |||
COMPOUND procedure as a wrapper. | COMPOUND procedure as a wrapper. | |||
The COMPOUND procedure is used to combine individual operations into | The COMPOUND procedure is used to combine individual operations into | |||
a single RPC request. The server interprets each of the operations | a single RPC request. The server interprets each of the operations | |||
in turn. If an operation is executed by the server and the status of | in turn. If an operation is executed by the server and the status of | |||
that operation is NFS4_OK, then the next operation in the COMPOUND | that operation is NFS4_OK, then the next operation in the COMPOUND | |||
procedure is executed. The server continues this process until there | procedure is executed. The server continues this process until there | |||
are no more operations to be executed or one of the operations has a | are no more operations to be executed or one of the operations has a | |||
status value other than NFS4_OK. | status value other than NFS4_OK. | |||
skipping to change at page 382, line 15 | skipping to change at page 382, line 19 | |||
zero length resultdata array. | zero length resultdata array. | |||
Contained within the COMPOUND results is a "status" field. If the | Contained within the COMPOUND results is a "status" field. If the | |||
results array length is non-zero, this status must be equivalent to | results array length is non-zero, this status must be equivalent to | |||
the status of the last operation that was executed within the | the status of the last operation that was executed within the | |||
COMPOUND procedure. Therefore, if an operation incurred an error | COMPOUND procedure. Therefore, if an operation incurred an error | |||
then the "status" value will be the same error value as is being | then the "status" value will be the same error value as is being | |||
returned for the operation that failed. | returned for the operation that failed. | |||
Note that operations, 0 (zero) and 1 (one) are not defined for the | Note that operations, 0 (zero) and 1 (one) are not defined for the | |||
COMPOUND procedure. Operation 2 is not defined but reserved for | COMPOUND procedure. Operation 2 is not defined and is reserved for | |||
future definition and use with minor versioning. If the server | future definition and use with minor versioning. If the server | |||
receives a operation array that contains operation 2 and the | receives a operation array that contains operation 2 and the | |||
minorversion field has a value of 0 (zero), an error of | minorversion field has a value of 0 (zero), an error of | |||
NFS4ERR_OP_ILLEGAL, as described in the next paragraph, is returned | NFS4ERR_OP_ILLEGAL, as described in the next paragraph, is returned | |||
to the client. If an operation array contains an operation 2 and the | to the client. If an operation array contains an operation 2 and the | |||
minorversion field is non-zero and the server does not support the | minorversion field is non-zero and the server does not support the | |||
minor version, the server returns an error of | minor version, the server returns an error of | |||
NFS4ERR_MINOR_VERS_MISMATCH. Therefore, the | NFS4ERR_MINOR_VERS_MISMATCH. Therefore, the | |||
NFS4ERR_MINOR_VERS_MISMATCH error takes precedence over all other | NFS4ERR_MINOR_VERS_MISMATCH error takes precedence over all other | |||
errors. | errors. | |||
skipping to change at page 383, line 21 | skipping to change at page 383, line 26 | |||
LOOKUP "compA" {fh2} | LOOKUP "compA" {fh2} | |||
GETATTR {fh2} | GETATTR {fh2} | |||
LOOKUP "compB" {fh3} | LOOKUP "compB" {fh3} | |||
GETATTR {fh3} | GETATTR {fh3} | |||
LOOKUP "compC" {fh4} | LOOKUP "compC" {fh4} | |||
GETATTR {fh4} | GETATTR {fh4} | |||
GETFH | GETFH | |||
Figure 84 | Figure 84 | |||
In this example, the PUTFH operation explicitly sets the current | In this example, the PUTFH (Section 18.19) operation explicitly sets | |||
filehandle value while the result of each LOOKUP operation sets the | the current filehandle value while the result of each LOOKUP | |||
current filehandle value to the resultant file system object. Also, | operation sets the current filehandle value to the resultant file | |||
the client is able to insert GETATTR operations using the current | system object. Also, the client is able to insert GETATTR operations | |||
filehandle as an argument. | using the current filehandle as an argument. | |||
The PUTROOTFH (Section 18.21) and PUTPUBFH (Section 18.21) operations | ||||
also set the current filehandle. The above example would replace | ||||
"PUTFH fh1" with PUTROOTFH or PUTPUBFH with no filehandle argument in | ||||
order to achieve the same effect (on the assumption that "compA" is | ||||
directly below the root of the namespace). | ||||
Along with the current filehandle, there is a saved filehandle. | Along with the current filehandle, there is a saved filehandle. | |||
While the current filehandle is set as the result of operations like | While the current filehandle is set as the result of operations like | |||
LOOKUP, the saved filehandle must be set directly with the use of the | LOOKUP, the saved filehandle must be set directly with the use of the | |||
SAVEFH operation. The SAVEFH operations copies the current | SAVEFH operation. The SAVEFH operations copies the current | |||
filehandle value to the saved value. The saved filehandle value is | filehandle value to the saved value. The saved filehandle value is | |||
used in combination with the current filehandle value for the LINK | used in combination with the current filehandle value for the LINK | |||
and RENAME operations. The RESTOREFH operation will copy the saved | and RENAME operations. The RESTOREFH operation will copy the saved | |||
filehandle value to the current filehandle value; as a result, the | filehandle value to the current filehandle value; as a result, the | |||
saved filehandle value may be used a sort of "scratch" area for the | saved filehandle value may be used a sort of "scratch" area for the | |||
skipping to change at page 384, line 5 | skipping to change at page 384, line 19 | |||
passing of stateids between operations. There are no changes to the | passing of stateids between operations. There are no changes to the | |||
syntax of the protocol, only changes to the semantics of a few | syntax of the protocol, only changes to the semantics of a few | |||
operations. | operations. | |||
A "current stateid" is the stateid that is associated with the | A "current stateid" is the stateid that is associated with the | |||
current filehandle. The current stateid may only be changed by an | current filehandle. The current stateid may only be changed by an | |||
operation that modifies the current filehandle or returns a stateid. | operation that modifies the current filehandle or returns a stateid. | |||
If an operation returns a stateid it MUST set the current stateid to | If an operation returns a stateid it MUST set the current stateid to | |||
the returned value. If an operation sets the current filehandle but | the returned value. If an operation sets the current filehandle but | |||
does not return a stateid, the current stateid MUST be set to the | does not return a stateid, the current stateid MUST be set to the | |||
all-zeros special stateid. As an example, PUTFH will change the | all-zeros special stateid, i.e. (seqid, other) = (0, 0). If an | |||
current server state from {ocfh, osid} to {cfh, 0} while LOCK will | operation uses a stateid as an argument but does not return a | |||
change the current state from {cfh, osid} to {cfh, nsid}. The SAVEFH | stateid, the current stateid MUST NOT be changed. E.g., PUTFH, | |||
and RESTOREFH operations will save and restore both the filehandle | PUTROOFH, and PUTPUBFH will change the current server state from | |||
and the stateid as a set. | {ocfh, (osid)} to {cfh, (0, 0)} while LOCK will change the current | |||
state from {cfh, (osid} to {cfh, (nsid)}. Operations like LOOKUP | ||||
Any operation which takes as an argument a stateid that is not the | that transform a current filehandle and component name into a new | |||
special all-zeros stateid MUST set the current stateid to the all- | current filehandle will also change the current stateid to {0, 0}. | |||
zeros value before evaluating the operation. If the argument is the | The SAVEFH and RESTOREFH operations will save and restore both the | |||
special all-zeros stateid, the operation is evaluated using the | current filehandle and the current stateid as a set. | |||
current stateid. | ||||
The following example is the common case of a simple READ operation | The following example is the common case of a simple READ operation | |||
with a supplied stateid showing that the PUTFH initializes the | with a supplied stateid showing that the PUTFH initializes the | |||
current stateid to zero. The subsequent READ with stateid sid1 | current stateid to (0, 0). The subsequent READ with stateid (sid1) | |||
replaces the current stateid before evaluating the operation. | leaves the current stateid unchanged, but does evaluate the the | |||
operation. | ||||
PUTFH fh1 - -> {fh1, 0} | PUTFH fh1 - -> {fh1, (0, 0)} | |||
READ sid1,0,1024 {fh1, sid1} -> {fh1, sid1} | READ (sid1), 0, 1024 {fh1, (0, 0)} -> {fh1, (0, 0)} | |||
Figure 85 | Figure 85 | |||
This next example performs an OPEN with the client provided stateid | This next example performs an OPEN with the root filehandle and as a | |||
sid1 and as a result generates stateid sid2. The next operation | result generates stateid (sid1). The next operation specifies the | |||
specifies the READ with the special all-zero stateid but the current | READ with the argument stateid set such that (seqid, other) are equal | |||
stateid set by the previous operation is actually used when the | to (1, 0), but the current stateid set by the previous operation is | |||
operation is evaluated, allowing correct interaction with any | actually used when the operation is evaluated. This allows correct | |||
existing, potentially conflicting, locks. | interaction with any existing, potentially conflicting, locks. | |||
PUTFH fh1 - -> {fh1, 0} | ||||
OPEN R,sid1,"compA" {fh1, sid1} -> {fh2, sid2} | ||||
READ 0,0,1024 {fh2, sid2} -> {fh2, sid2} | ||||
CLOSE 0 {fh2, sid2} -> {fh2, sid3} | ||||
PUTROOTFH - -> {fh1, (0, 0)} | ||||
OPEN "compA" {fh1, (0, 0)} -> {fh2, (sid1)} | ||||
READ (1, 0), 0, 1024 {fh2, (sid1)} -> {fh2, (sid1)} | ||||
CLOSE (1, 0) {fh2, (sid1)} -> {fh2, (sid2)} | ||||
Figure 86 | Figure 86 | |||
The final example is similar to the second in how it passes the | The final example is similar to the second in how it passes the | |||
stateid sid2 generated by the LOCK operation to the next READ | stateid sid2 generated by the LOCK operation to the next READ | |||
operation. This allows the client to explicitly surround a single | operation. This allows the client to explicitly surround a single | |||
I/O operation with a lock and its appropriate stateid to guarantee | I/O operation with a lock and its appropriate stateid to guarantee | |||
correctness with other client locks. | correctness with other client locks. The example also shows how | |||
SAVEFH and RESTOREFH can save and later re-use a filehandle and | ||||
stateid, passing them as the current filehandle and stateid to a READ | ||||
operation. | ||||
PUTFH fh1 - -> {fh1, (0, 0)} | ||||
LOCK 0, 1024, (sid1) {fh1, (sid1)} -> {fh1, (sid2)} | ||||
READ (1, 0), 0, 1024 {fh1, (sid2)} -> {fh1, (sid2)} | ||||
LOCKU 0, 1024, (1, 0) {fh1, (sid2)} -> {fh1, (sid3)} | ||||
SAVEFH {fh1, (sid3)} -> {fh1, (sid3)} | ||||
PUTFH fh2 {fh1, (sid3)} -> {fh2, (0, 0)} | ||||
WRITE (1, 0), 0, 1024 {fh2, (0, 0)} -> {fh2, (0, 0)} | ||||
RESTOREFH {fh2, (0, 0)} -> {fh1, (sid3)} | ||||
READ (1, 0), 1024, 1024 {fh1, (sid3)} -> {fh1, (sid3)} | ||||
PUTFH fh1 - -> {fh1, 0} | ||||
LOCK W,0,1024,sid1 {fh1, sid1} -> {fh1, sid2} | ||||
READ 0,0,1024 {fh1, sid2} -> {fh1, sid2} | ||||
LOCKU W,0,1024,0 {fh1, sid2} -> {fh1, sid3} | ||||
Figure 87 | Figure 87 | |||
16.2.4. ERRORS | 16.2.4. ERRORS | |||
COMPOUND will of course return every error that each operation on the | COMPOUND will of course return every error that each operation on the | |||
fore channel can return (see Table 12). However if COMPOUND returns | fore channel can return (see Table 12). However if COMPOUND returns | |||
zero operations, obviously the error returned by COMPOUND has nothing | zero operations, obviously the error returned by COMPOUND has nothing | |||
to do with an error returned by an operation. The list of errors | to do with an error returned by an operation. The list of errors | |||
COMPOUND will return if it processes zero operations include: | COMPOUND will return if it processes zero operations include: | |||
skipping to change at page 437, line 26 | skipping to change at page 438, line 26 | |||
/* | /* | |||
* If status is NFS4_OK, | * If status is NFS4_OK, | |||
* new CURRENT_FH: argument to PUTFH | * new CURRENT_FH: argument to PUTFH | |||
*/ | */ | |||
nfsstat4 status; | nfsstat4 status; | |||
}; | }; | |||
18.19.3. DESCRIPTION | 18.19.3. DESCRIPTION | |||
Replaces the current filehandle with the filehandle provided as an | Replaces the current filehandle with the filehandle provided as an | |||
argument. | argument. Clears the current stateid. | |||
If the security mechanism used by the requester does not meet the | If the security mechanism used by the requester does not meet the | |||
requirements of the filehandle provided to this operation, the server | requirements of the filehandle provided to this operation, the server | |||
MUST return NFS4ERR_WRONGSEC. | MUST return NFS4ERR_WRONGSEC. | |||
See Section 16.2.3.1.1 for more details on the current filehandle. | ||||
See Section 16.2.3.1.2 for more details on the current stateid. | ||||
18.19.4. IMPLEMENTATION | 18.19.4. IMPLEMENTATION | |||
Commonly used as the first operator in an NFS request to set the | Commonly used as the first operator in an NFS request to set the | |||
context for following operations. | context for following operations. | |||
18.20. Operation 23: PUTPUBFH - Set Public Filehandle | 18.20. Operation 23: PUTPUBFH - Set Public Filehandle | |||
18.20.1. ARGUMENT | 18.20.1. ARGUMENT | |||
void; | void; | |||
skipping to change at page 438, line 22 | skipping to change at page 439, line 22 | |||
nfsstat4 status; | nfsstat4 status; | |||
}; | }; | |||
18.20.3. DESCRIPTION | 18.20.3. DESCRIPTION | |||
Replaces the current filehandle with the filehandle that represents | Replaces the current filehandle with the filehandle that represents | |||
the public filehandle of the server's name space. This filehandle | the public filehandle of the server's name space. This filehandle | |||
may be different from the "root" filehandle which may be associated | may be different from the "root" filehandle which may be associated | |||
with some other directory on the server. | with some other directory on the server. | |||
PUTPUBFH also clears the current stateid. | ||||
The public filehandle represents the concepts embodied in RFC2054 | The public filehandle represents the concepts embodied in RFC2054 | |||
[32], RFC2055 [33], RFC2224 [41]. The intent for NFSv4.1 is that the | [32], RFC2055 [33], RFC2224 [41]. The intent for NFSv4.1 is that the | |||
public filehandle (represented by the PUTPUBFH operation) be used as | public filehandle (represented by the PUTPUBFH operation) be used as | |||
a method of providing WebNFS server compatibility with NFSv3. | a method of providing WebNFS server compatibility with NFSv3. | |||
The public filehandle and the root filehandle (represented by the | The public filehandle and the root filehandle (represented by the | |||
PUTROOTFH operation) should be equivalent. If the public and root | PUTROOTFH operation) SHOULD be equivalent. If the public and root | |||
filehandles are not equivalent, then the public filehandle MUST be a | filehandles are not equivalent, then the public filehandle MUST be a | |||
descendant of the root filehandle. | descendant of the root filehandle. | |||
See Section 16.2.3.1.1 for more details on the current filehandle. | ||||
See Section 16.2.3.1.2 for more details on the current stateid. | ||||
18.20.4. IMPLEMENTATION | 18.20.4. IMPLEMENTATION | |||
Used as the first operator in an NFS request to set the context for | Used as the second operator (after SEQUENCE) in an NFS request to set | |||
following operations. | the context for file accessing operations that follow in the same | |||
COMPOUND request. | ||||
With the NFSv3 public filehandle, the client is able to specify | With the NFSv3 public filehandle, the client is able to specify | |||
whether the path name provided in the LOOKUP should be evaluated as | whether the path name provided in the LOOKUP should be evaluated as | |||
either an absolute path relative to the server's root or relative to | either an absolute path relative to the server's root or relative to | |||
the public filehandle. RFC2224 [41] contains further discussion of | the public filehandle. RFC2224 [41] contains further discussion of | |||
the functionality. With NFSv4.1, that type of specification is not | the functionality. With NFSv4.1, that type of specification is not | |||
directly available in the LOOKUP operation. The reason for this is | directly available in the LOOKUP operation. The reason for this is | |||
because the component separators needed to specify absolute vs. | because the component separators needed to specify absolute vs. | |||
relative are not allowed in NFSv4. Therefore, the client is | relative are not allowed in NFSv4. Therefore, the client is | |||
responsible for constructing its request such that the use of either | responsible for constructing its request such that the use of either | |||
PUTROOTFH or PUTPUBFH are used to signify absolute or relative | PUTROOTFH or PUTPUBFH are used to signify absolute or relative | |||
evaluation of an NFS URL respectively. | evaluation of an NFS URL respectively. | |||
Note that there are warnings mentioned in RFC2224 [41] with respect | Note that there are warnings mentioned in RFC2224 [41] with respect | |||
to the use of absolute evaluation and the restrictions the server may | to the use of absolute evaluation and the restrictions the server may | |||
place on that evaluation with respect to how much of its namespace | place on that evaluation with respect to how much of its namespace | |||
has been made available. These same warnings apply to NFSv4. It is | has been made available. These same warnings apply to NFSv4.1. It | |||
likely, therefore that because of server implementation details, an | is likely, therefore that because of server implementation details, | |||
NFSv3 absolute public filehandle lookup may behave differently than | an NFSv3 absolute public filehandle lookup may behave differently | |||
an NFSv4.1 absolute resolution. | than an NFSv4.1 absolute resolution. | |||
There is a form of security negotiation as described in RFC2755 [42] | There is a form of security negotiation as described in RFC2755 [42] | |||
that uses the public filehandle a method of employing SNEGO. This | that uses the public filehandle and an overloading of the pathname. | |||
method is not available with NFSv4.1 as filehandles are not | This method is not available with NFSv4.1 as filehandles are not | |||
overloaded with special meaning and therefore do not provide the same | overloaded with special meaning and therefore do not provide the same | |||
framework as NFSv3. Clients should therefore use the security | framework as NFSv3. Clients should therefore use the security | |||
negotiation mechanisms described in this RFC. | negotiation mechanisms described in Section 2.6. | |||
18.21. Operation 24: PUTROOTFH - Set Root Filehandle | 18.21. Operation 24: PUTROOTFH - Set Root Filehandle | |||
18.21.1. ARGUMENTS | 18.21.1. ARGUMENTS | |||
void; | void; | |||
18.21.2. RESULTS | 18.21.2. RESULTS | |||
struct PUTROOTFH4res { | struct PUTROOTFH4res { | |||
skipping to change at page 439, line 40 | skipping to change at page 440, line 47 | |||
}; | }; | |||
18.21.3. DESCRIPTION | 18.21.3. DESCRIPTION | |||
Replaces the current filehandle with the filehandle that represents | Replaces the current filehandle with the filehandle that represents | |||
the root of the server's name space. From this filehandle a LOOKUP | the root of the server's name space. From this filehandle a LOOKUP | |||
operation can locate any other filehandle on the server. This | operation can locate any other filehandle on the server. This | |||
filehandle may be different from the "public" filehandle which may be | filehandle may be different from the "public" filehandle which may be | |||
associated with some other directory on the server. | associated with some other directory on the server. | |||
PUTROOTFH also clears the current stateid. | ||||
See Section 16.2.3.1.1 for more details on the current filehandle. | ||||
See Section 16.2.3.1.2 for more details on the current stateid. | ||||
18.21.4. IMPLEMENTATION | 18.21.4. IMPLEMENTATION | |||
Commonly used as the first operator in an NFS request to set the | Commonly used as the second operator (after SEQUENCE) in an NFS | |||
context for following operations. | request to set the context for file accessing operations that follow | |||
in the same COMPOUND request. | ||||
18.22. Operation 25: READ - Read from File | 18.22. Operation 25: READ - Read from File | |||
18.22.1. ARGUMENTS | 18.22.1. ARGUMENTS | |||
struct READ4args { | struct READ4args { | |||
/* CURRENT_FH: file */ | /* CURRENT_FH: file */ | |||
stateid4 stateid; | stateid4 stateid; | |||
offset4 offset; | offset4 offset; | |||
count4 count; | count4 count; | |||
skipping to change at page 453, line 39 | skipping to change at page 454, line 39 | |||
struct RESTOREFH4res { | struct RESTOREFH4res { | |||
/* | /* | |||
* If status is NFS4_OK, | * If status is NFS4_OK, | |||
* new CURRENT_FH: value of saved fh | * new CURRENT_FH: value of saved fh | |||
*/ | */ | |||
nfsstat4 status; | nfsstat4 status; | |||
}; | }; | |||
18.27.3. DESCRIPTION | 18.27.3. DESCRIPTION | |||
Set the current filehandle to the value in the saved filehandle. If | Set the current filehandle and stateid to the values in the saved | |||
there is no saved filehandle then the server will return the error | filehandle and stateid. If there is no saved filehandle then the | |||
NFS4ERR_NOFILEHANDLE. | server will return the error NFS4ERR_NOFILEHANDLE. | |||
See Section 16.2.3.1.1 for more details on the current filehandle. | ||||
See Section 16.2.3.1.2 for more details on the current stateid. | ||||
18.27.4. IMPLEMENTATION | 18.27.4. IMPLEMENTATION | |||
Operations like OPEN and LOOKUP use the current filehandle to | Operations like OPEN and LOOKUP use the current filehandle to | |||
represent a directory and replace it with a new filehandle. Assuming | represent a directory and replace it with a new filehandle. Assuming | |||
the previous filehandle was saved with a SAVEFH operator, the | the previous filehandle was saved with a SAVEFH operator, the | |||
previous filehandle can be restored as the current filehandle. This | previous filehandle can be restored as the current filehandle. This | |||
is commonly used to obtain post-operation attributes for the | is commonly used to obtain post-operation attributes for the | |||
directory, e.g. | directory, e.g. | |||
skipping to change at page 454, line 32 | skipping to change at page 455, line 36 | |||
struct SAVEFH4res { | struct SAVEFH4res { | |||
/* | /* | |||
* If status is NFS4_OK, | * If status is NFS4_OK, | |||
* new SAVED_FH: value of current fh | * new SAVED_FH: value of current fh | |||
*/ | */ | |||
nfsstat4 status; | nfsstat4 status; | |||
}; | }; | |||
18.28.3. DESCRIPTION | 18.28.3. DESCRIPTION | |||
Save the current filehandle. If a previous filehandle was saved then | Save the current filehandle and stateid. If a previous filehandle | |||
it is no longer accessible. The saved filehandle can be restored as | was saved then it is no longer accessible. The saved filehandle can | |||
the current filehandle with the RESTOREFH operator. | be restored as the current filehandle with the RESTOREFH operator. | |||
On success, the current filehandle retains its value. | On success, the current filehandle retains its value. | |||
See Section 16.2.3.1.1 for more details on the current filehandle. | ||||
See Section 16.2.3.1.2 for more details on the current stateid. | ||||
18.28.4. IMPLEMENTATION | 18.28.4. IMPLEMENTATION | |||
18.29. Operation 33: SECINFO - Obtain Available Security | 18.29. Operation 33: SECINFO - Obtain Available Security | |||
18.29.1. ARGUMENTS | 18.29.1. ARGUMENTS | |||
struct SECINFO4args { | struct SECINFO4args { | |||
/* CURRENT_FH: directory */ | /* CURRENT_FH: directory */ | |||
component4 name; | component4 name; | |||
}; | }; | |||
skipping to change at page 538, line 5 | skipping to change at page 539, line 5 | |||
the ILLEGAL4res would not be returned. | the ILLEGAL4res would not be returned. | |||
19. NFSv4.1 Callback Procedures | 19. NFSv4.1 Callback Procedures | |||
The procedures used for callbacks are defined in the following | The procedures used for callbacks are defined in the following | |||
sections. In the interest of clarity, the terms "client" and | sections. In the interest of clarity, the terms "client" and | |||
"server" refer to NFS clients and servers, despite the fact that for | "server" refer to NFS clients and servers, despite the fact that for | |||
an individual callback RPC, the sense of these terms would be | an individual callback RPC, the sense of these terms would be | |||
precisely the opposite. | precisely the opposite. | |||
Both procedures, CB_NULL and CB_COMPOUND, MUST be implemented. | ||||
19.1. Procedure 0: CB_NULL - No Operation | 19.1. Procedure 0: CB_NULL - No Operation | |||
19.1.1. ARGUMENTS | 19.1.1. ARGUMENTS | |||
void; | void; | |||
19.1.2. RESULTS | 19.1.2. RESULTS | |||
void; | void; | |||
End of changes. 53 change blocks. | ||||
147 lines changed or deleted | 193 lines changed or added | |||
This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |