diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3996.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3996.txt')
-rw-r--r-- | doc/rfc/rfc3996.txt | 1739 |
1 files changed, 1739 insertions, 0 deletions
diff --git a/doc/rfc/rfc3996.txt b/doc/rfc/rfc3996.txt new file mode 100644 index 0000000..c2a2a86 --- /dev/null +++ b/doc/rfc/rfc3996.txt @@ -0,0 +1,1739 @@ + + + + + + +Network Working Group R. Herriot +Request for Comments: 3996 Global Workflow Solutions +Updates: 2911 T. Hastings +Category: Standards Track Xerox Corp. + H. Lewis + IBM Corp. + March 2005 + + + Internet Printing Protocol (IPP): + The 'ippget' Delivery Method for Event Notifications + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2005). + +Abstract + + This document describes an extension to the Internet Printing + Protocol1.1: Model and Semantics (RFC 2911, RFC 2910). This document + specifies the 'ippget' Pull Delivery Method for use with the + "Internet Printing Protocol (IPP): Event Notifications and + Subscriptions" specification (RFC 3995). This IPPGET Delivery Method + is REQUIRED for all clients and Printers that support RFC 3995. The + Notification Recipient, acting as a client, fetches (pulls) Event + Notifications by using the Get-Notifications operation defined in + this document. + +Table of Contents + + 1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2.1. Conformance Terminology . . . . . . . . . . . . . . . . 4 + 2.2. Other Terminology . . . . . . . . . . . . . . . . . . . 4 + 3. Model and Operation . . . . . . . . . . . . . . . . . . . . . 4 + 4. General Information . . . . . . . . . . . . . . . . . . . . . 5 + 5. Get-Notifications Operation . . . . . . . . . . . . . . . . . 7 + 5.1. Get-Notifications Request . . . . . . . . . . . . . . . 8 + 5.1.1. notify-subscription-ids (1setOf integer(1:MAX)) 8 + 5.1.2. notify-sequence-numbers (1setOf integer(1:MAX)) 9 + + + +Herriot, et al. Standards Track [Page 1] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 5.1.3. notify-wait (boolean) . . . . . . . . . . . . . 10 + 5.2. Get-Notifications Response. . . . . . . . . . . . . . . 10 + 5.2.1. notify-get-interval (integer(0:MAX)). . . . . . 13 + 5.2.2. printer-up-time (integer(1:MAX)). . . . . . . . 14 + 6. Additional Information about Subscription Template Attributes 17 + 6.1. notify-pull-method (type2 keyword). . . . . . . . . . . 17 + 7. Subscription Description Attributes . . . . . . . . . . . . . 18 + 8. Additional Printer Description Attributes . . . . . . . . . . 18 + 8.1. ippget-event-life (integer(15:MAX)) . . . . . . . . . . 18 + 9. New Values for Existing Printer Description Attributes. . . . 19 + 9.1. notify-pull-method-supported (1setOf type2 keyword) . . 19 + 9.2. operations-supported (1setOf type2 enum). . . . . . . . 19 + 10. New Status Codes. . . . . . . . . . . . . . . . . . . . . . . 19 + 10.1. successful-ok-events-complete (0x0007) . . . . . . . . 20 + 11. Encoding and Transport. . . . . . . . . . . . . . . . . . . . 20 + 12. Conformance Requirements. . . . . . . . . . . . . . . . . . . 21 + 12.1. Conformance for IPP Printers . . . . . . . . . . . . . 21 + 12.2. Conformance for IPP Clients. . . . . . . . . . . . . . 22 + 13. Normative References. . . . . . . . . . . . . . . . . . . . . 23 + 14. Informative References. . . . . . . . . . . . . . . . . . . . 23 + 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 + 15.1. Attribute Registrations. . . . . . . . . . . . . . . . 24 + 15.2. Delivery Method and Additional Keyword Attribute Value + registrations for Existing Attributes. . . . . . . . . 24 + 15.3. Additional Enum Attribute Values . . . . . . . . . . . 25 + 15.4. Operation Registrations. . . . . . . . . . . . . . . . 25 + 15.5. Status Code Registrations. . . . . . . . . . . . . . . 25 + 16. Internationalization Considerations . . . . . . . . . . . . . 25 + 17. Security Considerations . . . . . . . . . . . . . . . . . . . 26 + 17.1. Notification Recipient Client Access Rights. . . . . . 26 + 17.2. Printer Security Threats . . . . . . . . . . . . . . . 27 + 17.3. Notification Recipient Security Threats. . . . . . . . 27 + 17.4. Security Requirements for Printers . . . . . . . . . . 27 + 17.5. Security Requirements for clients. . . . . . . . . . . 28 + 18. Description of Base IPP Documents (Informative) . . . . . . . 28 + 19. Contributors. . . . . . . . . . . . . . . . . . . . . . . . . 29 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 30 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 31 + +Table of Tables + + Table 1. Information about the Delivery Method. . . . . . . . . . 5 + Table 2. Combinations of "notify-wait", "status-code", and + "notify-get-interval". . . . . . . . . . . . . . . . . . 13 + Table 3. Attributes in Event Notification Content . . . . . . . . 15 + Table 4. Additional Attributes in Event Notification Content for + Job Events . . . . . . . . . . . . . . . . . . . . . . . 16 + + + + +Herriot, et al. Standards Track [Page 2] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Table 5. Combinations of Events and Subscribed Events for "job- + impressions-completed" . . . . . . . . . . . . . . . . . 17 + Table 6. Additional Attributes in Event Notification Content for + Printer Events . . . . . . . . . . . . . . . . . . . . . 17 + Table 7. Operation-id Assignments . . . . . . . . . . . . . . . . 19 + Table 8. The "event-notification-attributes-tag" Value. . . . . . 21 + +1. Introduction + + This document describes an extension to the Internet Printing + Protocol/1.1: Model and Semantics [RFC 2911], [RFC 2910]. This + document specifies the 'ippget' Pull Delivery Method for use with the + "Internet Printing Protocol (IPP): Event Notifications and + Subscriptions" specification [RFC3995]. This IPPGET Delivery Method + is REQUIRED for all clients and Printers that support [RFC3995]. The + Notification Recipient, acting as a client, fetches (pulls) Event + Notifications by using the Get-Notifications operation defined in + this document. For a description of the base IPP documents, see + section 21 of this document. For a description of the IPP Event + Notification Model, see [RFC3995]. + + With this Pull Delivery Method, when an Event occurs, the Printer + saves the Event Notification for a period of time called the Event + Life. The Notification Recipient fetches (pulls) the Event + Notifications by using the Get-Notifications operation. This + operation causes the Printer to return all Event Notifications held + for the specified Subscription object(s). If the Notification + Recipient has selected the Event Wait Mode option to wait for + additional Event Notifications, the Printer MAY continue to return + Event Notifications to the Notification Recipient as asynchronous + Get-Notification responses as Events occur using the transaction + originated by the Notification Recipient. + + The Notification Recipient can terminate Event Wait Mode (without + closing the connection) by supplying the "notify-wait" (boolean) + attribute with a 'false' value in a subsequent Get-Notifications + request. Similarly, the Printer can terminate Event Wait Mode + (without closing the connection) by returning the "notify-get- + interval" (integer) operation attribute in a Get-Notifications + response that tells the Notification Recipient how long to wait + before trying again. + +2. Terminology + + This section defines the following terms that are used throughout + this document: + + + + + +Herriot, et al. Standards Track [Page 3] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +2.1. Conformance Terminology + + Capitalized terms such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD + NOT, MAY, NEED NOT, and OPTIONAL have special meaning relating to + conformance as defined in [RFC2119] and [RFC2911], section 12.1. If + an implementation supports the extension defined in this document, + then these terms apply; otherwise, they do not. These terms define + conformance to this document only; they do not affect conformance to + other documents, unless it is explicitly stated otherwise. + +2.2. Other terminology + + This document uses the same terminology as [RFC2911], including + "client", "Printer", "Job", "attribute", "attribute value", + "keyword", "operation", "request", "response", and "support", with + the same meanings. This document also uses terminology defined in + [RFC3995], such as "Subscription (object)", "Notification Recipient", + "Event", "Event Notification", "Compound Event Notification", "Event + Life", and "Event Notification Attribute Group", with the same + meanings. In addition, this document defines the following terms for + use in this document: + + Event Wait Mode: The mode requested by a Notification Recipient + client in its Get-Notifications Request and granted by a Printer + to keep the connection open while the Printer sends subsequent + Get-Notification operation responses to the Notification + Recipient in the form of Event Notifications as they occur. + +3. Model and Operation + + In a Subscription Creation Operation, when the "notify-pull-method" + attribute is present and has the "ippget" keyword value, the client + is requesting that the Printer use the "ippget" Pull Delivery Method + for the Event Notifications associated with the new Subscription + Object. + + When an Event occurs, the Printer MUST generate an Event Notification + and MUST assign it the Event Life. The Printer MUST hold an Event + Notification for its assigned Event Life. + + When a Notification Recipient wants to receive Event Notifications + for a Subscription object, it performs the Get-Notifications + operation supplying the Subscription object's subscription-id, which + causes the Printer to return all un-expired Event Notifications held + for that Subscription object. If the Notification Recipient has + selected the Event Wait Mode option to wait for additional Event + Notifications, the response to the Get-Notifications request + continues indefinitely as the Printer continues to send Event + + + +Herriot, et al. Standards Track [Page 4] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Notifications in the response as Events occur for that Subscription + object. + + When the Notification Recipient requests Event Notifications for + Per-Job Subscription Objects, the Notification Recipient typically + performs the Get-Notifications operation within a second of + performing the Subscription Creation operation. Because the Printer + MUST save Event Notifications for at least 15 seconds (see section + 8.1), the Notification Recipient is unlikely to miss any Event + Notifications that occur between the Subscription Creation and the + Get-Notifications operation. + + The 'ippget' Delivery Method is designed primarily for (1) a client + that wants to get Events (from the job's Per-Job Subscription object) + for a job that it has submitted and (2) a privileged client that + wants to get all job or printer Events from a Per-Printer + Subscription object. + +4. General Information + + If a Printer supports this Delivery Method, the following are its + characteristics. + + Table 1. Information about the Delivery Method + + Document Method Conformance Requirement Delivery Method + Realization + + 1. What is the URL scheme name for the 'ippget' keyword method + Push Delivery Method, or the keyword name + method name for the Pull Delivery + Method? + + 2. Is the Delivery Method REQUIRED, REQUIRED + RECOMMENDED, or OPTIONAL for an IPP + Printer to support? + + 3. What transport and delivery protocols IPP with one new + does the Printer use to deliver the operation. + Event Notification Content; i.e., + what is the entire network stack? + + 4. Can several Event Notifications be Yes. + combined into a Compound Event + Notification? + + + + + + +Herriot, et al. Standards Track [Page 5] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 5. Is the Delivery Method initiated by This Delivery Method is + the Notification Recipient (pull), a pull method with + or by the Printer (push)? aspects of a push + method, though the + Printer does not + initiate the operation. + + 6. Is the Event Notification content Machine Consumable. + Machine Consumable or Human + Consumable? + + 7. What section in this document answers Section 5. + the following questions? For a Machine + Consumable Event Notification, what is + the representation and encoding of + values defined in section 9.1 of + [RFC3995], and what are the + conformance requirements thereof? For + a Human Consumable Event Notification, + what is the representation and + encoding of pieces of information + defined in section 9.2 of + [RFC3995], and the conformance + requirements thereof? + + 8. What are the latency and reliability Same as IPP and the + of the transport and delivery underlying HTTP + protocol? transport. + + 9. What are the security aspects of the Same as IPP and the + transport and delivery protocol; underlying HTTP + e.g., how it is handled in transport and in the + firewalls? same direction, so no + new firewall + considerations. + + 10. What are the content length None. + restrictions? + + 11. What are the additional values or None. + pieces of information that a Printer + sends in an Event Notification content + and the conformance requirements + thereof? + + + + + + + +Herriot, et al. Standards Track [Page 6] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 12. What are the additional Subscription None. + Template and/or Subscription + Description attributes and the + conformance requirements thereof? + + 13. What are the additional Printer "ipp-event-life" + Description attributes and the (integer (15: MAX)) + conformance requirements thereof? + +5. Get-Notifications Operation + + This operation is issued by a client acting in the role of a + Notification Recipient requesting the Printer to return all Event + Notifications held for the identified Subscription object(s). + + A Printer MUST support this operation, MUST accept the request in any + state (see [RFC2911] "printer-state" and "printer-state-reasons" + attributes), and MUST remain in the same state with the same + "printer-state-reasons" values. + + When a Printer performs this operation, it MUST return all and only + those Event Notifications + + 1. whose associated Subscription Object's "notify-subscription-id" + Subscription Description attribute equals one of the values of + the "notify-subscription-ids" (1setOf integer(1:MAX)) operation + attribute AND + + 2. whose associated Subscription Object contains the "notify-pull- + method" attribute and it has the 'ippget' keyword value, AND + + 3. whose "notify-sequence-number" is equal to or greater than the + corresponding value of the "notify-sequence-numbers" (1setOf + integer(1:MAX)) operation attribute if supplied AND + + 4. whose Event Life has not yet expired AND + + 5. where the Notification Recipient client has read-access rights to + the identified Subscription Object (see Access Rights paragraph + below). + + The Notification Recipient client MUST either (a) request Event Wait + Mode by supplying the "notify-wait" operation attribute with a 'true' + value or (b) suppress Event Wait Mode by omitting the "notify-wait" + operation attribute or by supplying it with a 'false' value. To + terminate Event Wait Mode subsequently, the Notification Recipient + client MUST close the connection. To terminate Event Wait Mode, the + Printer MUST either (a) return the "notify-get-interval" operation + + + +Herriot, et al. Standards Track [Page 7] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + attribute in a Get-Notifications response (RECOMMENDED behavior) or + (b) close the connection. The "notify-get-interval" operation + attributes tell the Notification Recipient how long to wait before + trying a subsequent Get-Notifications request. + + Access Rights: The authenticated user (see [RFC2911], section 8.3) + performing this operation MUST be (1) the owner of each Subscription + Object identified by the "notify-subscription-ids" operation + attribute (see section 5.1.1), (2) an operator or administrator of + the Printer (see [RFC2911], sections 1 and 8.5), or (3) otherwise + authorized by the Printer's administrator-configured security policy + to request Event Notifications from the target Subscription + Object(s). Otherwise, the IPP Printer MUST reject the operation and + return: 'client-error-forbidden', 'client-error-not-authenticated', + or 'client-error-not-authorized' status code, as appropriate. + Furthermore, the Printer's security policy MAY limit the attributes + returned by the Get-Notifications operation, in a manner similar to + that of the Get-Job-Attributes operation (see [RFC2911], end of + section 3.3.4.2). + +5.1. Get-Notifications Request + + The following groups of attributes are part of the Get-Notifications + Request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes, as described in [RFC2911], section 3.1.4.1. + + Target: + The "printer-uri" (uri) operation attribute that is the target + for this operation as described in [RFC2911], section 3.1.5. + + Requesting User Name: + The "requesting-user-name" (name(MAX)) attribute SHOULD be + supplied by the client as described in [RFC2911], section 8.3. + +5.1.1. notify-subscription-ids (1setOf integer(1:MAX)) + + This attribute identifies one or more Subscription objects for which + Events are requested. The client MUST supply this attribute with at + least one value. The Printer object MUST support this attribute with + multiple values. + + If no Subscription Object exists with the supplied identifier, or if + the identified Subscription Object does not contain the "notify- + + + +Herriot, et al. Standards Track [Page 8] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + pull-method" attribute with the 'ippget' keyword value, the Printer + MUST return the 'client-error-not-found' status code. + + Note: The name of both the "notify-subscription-ids" and + "notify-sequence-numbers" end in 's', as they are multi-valued. + However, there are other occurrences of these attribute names + without the 's' that are single valued. + +5.1.2. notify-sequence-numbers (1setOf integer(1:MAX)) + + This attribute specifies one or more of the lowest Event Notification + sequence number values for the Subscription objects identified by the + corresponding values of the "notify-subscription-ids" operation + attribute. The Notification Recipient SHOULD supply this attribute, + and the number of values SHOULD be the same as that of the "notify- + subscriptions-ids" attribute. The Printer MUST support this + attribute with multiple values. + + The Printer MUST NOT return Notification Events with lower sequence + numbers for the corresponding Subscription object. Therefore, by + supplying the proper values for this attribute the Notification + Recipient can prevent getting the same Event Notifications from a + Subscription object that were returned on a previous Get- + Notifications request. The Notification Recipient SHOULD remember + the highest "notify-sequence-number" value returned for each + Subscription object requested and SHOULD pass that value for each + requested Subscription object on the next Get-Notifications request. + + If the Notification Recipient supplies fewer values for this + attribute (including omitting this attribute) than it does for the + "notify-subscription-ids" operation attribute, the Printer assumes a + '1' value for each missing value. A value of '1' causes the Printer + to return any un-expired Event Notification for that Subscription + object, as '1' is the lowest possible sequence number. If the + Notification Recipient supplies more values for this attribute than + the number of values for the "notify-subscription-ids" operation + attribute, the Printer ignores the extra values. + + Note: If a Notification Recipient performs two consecutive Get- + Notifications operations with the same value for "notify-sequence- + number" (or omits the attribute), the time stamp value of the first + Event Notification in the second Get-Notifications Response may be + less than that of the time stamp of the last Event Notification in + the first Get-Notification Response. This happens because the + Printer sends all unexpired Event Notifications with an equal or + higher sequence number according to the ordering specified in + [RFC3995], and some Event Notifications from the first Get- + + + + +Herriot, et al. Standards Track [Page 9] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Notifications operation may not have expired by the time the second + Get-Notifications operation occurs. + +5.1.3. notify-wait (boolean) + + This value indicates whether the Notification Recipient wants Event + Wait Mode. The client MAY supply this attribute. The Printer object + MUST support both values of this attribute. + + If the client supplies the 'false' value or omits this attribute, the + client is not requesting Event Wait Mode. If the value is 'true', + the client is requesting Event Wait Mode. See the beginning of + section 5.2 for the rules for Event Wait Mode. + +5.2. Get-Notifications Response + + The Printer has the following options for responding to a Get- + Notifications Request: + + 1. The Printer can reject the request and return the 'server-error- + busy' status code if the Printer is too busy to accept this + operation at this time. In this case, the Printer MUST return + the "get-notify-interval" operation attribute to indicate when + the client SHOULD try again. + + 2. If the Notification Recipient did not request Event Wait Mode + ("notify-wait-mode" = 'false' or omitted), the Printer MUST + immediately return whatever Event Notifications it currently + holds in the requested Subscription object(s) and MUST return the + "notify-get-interval" operation attribute with the number of + seconds from now, at which the Notification Recipient SHOULD + repeat the Get-Notifications Request to get future Event + Notifications. + + 3. If the Notification Recipient requested Event Wait Mode + ("notify-wait-mode" = 'true'), the Printer MUST immediately + return whatever Event Notifications it currently holds in the + requested Subscription object(s) and MUST continue to return + Event Notifications as they occur until all the requested + Subscription Objects are canceled. A Subscription Object is + canceled either via the Cancel-Subscription operation or by the + Printer (e.g., the Subscription Object is canceled when the + associated Job completes and is no longer in the Job Retention or + Job History phase; see the "ippget-event-life (integer(15:MAX))" + attribute discussion in section 8.1). + + However, the Printer MAY decide to terminate Event Wait Mode at + any time, including in the first response. In this case, the + + + +Herriot, et al. Standards Track [Page 10] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Printer MUST return the "notify-get-interval" operation + attribute. This attribute indicates that the Printer wishes to + leave Event Wait Mode and the number of seconds in the future + that the Notification Recipient SHOULD try the Get-Notifications + operation again. The Notification Recipient MUST accept this + response and MUST disconnect. If the Notification Recipient does + not disconnect, the Printer SHOULD do so. + + From the Notification Recipient's view, the response appears as an + initial burst of data, which includes the Operation Attributes Group + and one Event Notification Attributes Group per Event Notification + that the Printer is holding. After the initial burst of data, if the + Notification Recipient has selected the Event Wait Mode option to + wait for additional Event Notifications, the Notification Recipient + receives occasional Event Notification Attribute Groups. Proxy + servers may delay some Event Notifications or cause time-outs to + occur. The client MUST be prepared to perform the Get-Notifications + operation again when time-outs occur. + + Each attribute is encoded by using the IPP rules for encoding + attributes [RFC2910] and MAY be encoded in any order. Note: the + Get-Jobs response in [RFC2911] acts as a model for encoding multiple + groups of attributes. See section 11 for the encoding and transport + rules. + + The following groups of attributes are part of the Get-Notifications + Response: + + Group 1: Operation Attributes + + Status Message: In addition to the REQUIRED status code returned + in every response, the response OPTIONALLY includes a "status- + message" (text(255)) and/or a "detailed-status-message" + (text(MAX)) operation attribute, as described in [RFC2911], + sections 13 and 3.1.6. + + The Printer can return any status codes defined in [RFC2911]. + If the status code is not 'successful-xxx', the Printer MUST + NOT return any Event Notification Attribute groups. The + following are descriptions of the important status codes: + + successful-ok: The response contains all Event Notification + associated with the specified subscription-ids that had + been supplied in the "notify-subscription-ids" operation + attribute in the request. If the requested Subscription + Objects have no associated Event Notification, the + response MUST contain zero Event Notifications. + + + + +Herriot, et al. Standards Track [Page 11] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + successful-ok-events-complete: Indicates when this return + is the last return for all Subscription objects that + match the request, whether or not Event Notifications are + returned. This condition occurs for Event Wait Mode with + Notification Recipients waiting for responses when (1) + the Subscription Object is canceled with a Cancel- + Subscription operation, (2) the Subscription Object is + deleted, when the Per-Printer Subscription lease time + expires, or (3) the 'job-completed' event occurs for a + Per-Job Subscription. This condition also occurs for a + Get-Notifications request that a Notification Recipient + makes after the job completes, but before the Event Life + expires. See section 10.1. + client-error-not-found: The Printer has no Subscription + Objects whose "notify-subscription-id" attribute equals + any of the values of the "notify-subscription-ids" + operation attribute supplied, or the identified + Subscription Object does not contain the "notify-pull- + method" attribute with the 'ippget' keyword value. + server-error-busy: The Printer is too busy to accept this + operation. The Printer SHOULD return the "notify-get- + interval" operation attribute in the Operation Attributes + of the response; then the Notification Recipient SHOULD + wait for the number of seconds specified by the "notify- + get-interval" operation attribute before performing this + operation again. If the "notify-get-interval" Operation + Attribute is not present, the Notification Recipient + SHOULD use the normal network back-off algorithms to + determine when to perform this operation again. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes, as described in [RFC2911], section 3.1.4.2. + + The Printer MUST use the values of "notify-charset" and + "notify-natural-language", respectively, from one Subscription + Object associated with the Event Notifications in this + response. + + Normally, there is only one matched Subscription Object, or the + value of the "notify-charset" and "notify-natural-language" + attributes is the same in all Subscription Objects. If not, + the Printer MUST pick one Subscription Object from which to + obtain the value of these attributes. The algorithm for + picking the Subscription Object is implementation dependent. + The choice of natural language is not critical, because 'text' + and 'name' values can override the "attributes-natural- + language" operation attribute. The Printer's choice of charset + + + +Herriot, et al. Standards Track [Page 12] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + is critical because a bad choice may leave it unable to send + some 'text' and 'name' values accurately. + +5.2.1. notify-get-interval (integer(0:MAX)) + + The value of this operation attribute is the number of seconds that + the Notification Recipient SHOULD wait before trying the Get- + Notifications operation again. The Printer MUST return this + operation attribute if (1) it is too busy to return events, (2) the + Notification Recipient client did not request Event Wait Mode, or (3) + the Printer is terminating Event Wait Mode. The client MUST accept + this attribute and SHOULD reissue the Get-Notifications operation + (with or without "notify-wait" = 'true') at the indicated number of + seconds in the future in order to get more Event Notifications This + value is intended to help the client be a good network citizen. + + The value of this attribute MUST be at least as large as that of the + Printer's "ippget-event-life" Printer Description attribute (see + section 8.1). The Printer MAY return a value that is larger than + that of the "ippget-event-life" Printer Description attribute + provided that the Printer increases the Event Life for this + Subscription object so that Notification Recipients taking account of + the larger value and polling with a longer interval will not miss + events. Note: Implementing such an algorithm requires some hidden + attributes in the Subscription object that are IMPLEMENTATION + DEPENDENT. + + If the Printer wants to remain in Event Wait Mode, then the Printer + MUST NOT return this attribute in the response. + + Here is a complete table of combinations of "notify-wait", "status- + code", "notify-get-interval", and Event Notification Attributes + Groups for Get-Notification initial (Wait and No Wait) Responses and + subsequent Event Wait Mode Responses (which may stay in Event Wait + Mode or may request the Notification Recipient to leave Event Wait + Mode): + + Table 2. Combinations of "notify-wait", "status-code", and + "notify-get-interval" + + Client sends: Printer returns: Printer Event + returns: Notification + "notify-wait" "status-code" "notify-get- Attribute + interval" Groups + + 1. 'false'* 'successful-ok' MUST return N maybe + 2. 'false'* 'not-found' MUST NOT MUST NOT + 3. 'false'* 'busy' MUST return N MUST NOT + + + +Herriot, et al. Standards Track [Page 13] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 4. 'false'* 'events- MUST NOT 'job- + complete' completed' + 5. 'true' 'successful-ok' MUST NOT MUST + 6. 'true' 'successful-ok' MUST return N maybe + 7. 'true' 'not-found' MUST NOT MUST NOT + 8. 'true' 'busy' MUST return N MUST NOT + 9. 'true' 'events- MUST NOT 'job- + complete' completed' or + maybe other + * 'false' or client omits the "notify-wait" attribute. + + Explanation: + + 1-4: Client does not request Event Wait Mode. + 5-9: Client requests Event Wait Mode. + 2,7: Subscription object not found, or was canceled earlier; + client should NOT try again. + 3,8: Server busy, tells client to try later; client should try + again in N seconds. + 4: Client polled after job completed, but before Event Life + expired, and got the 'job-completed' event, so the client + shouldn't bother trying again; client should NOT try + again later. + 5: Printer returns one or more Event Notifications and is OK + to stay in Event Wait Mode; the client waits for more + Event Notifications to be returned. + 6: Printer wants to leave Event Wait mode. Can happen on + the first response (with or without Event Notifications) + or happen on a subsequent response with or without Event + Notifications; the client SHOULD try again in N seconds. + 9: Either (1) the printer returns 'job-completed' event, or + (2) the Subscription Object was canceled by either a + Cancel-Job or a Per-Printer Subscription expired without + being renewed. For case (1), at least one Event + Notification MUST be returned; for case (2), it is + unlikely that any Event Notifications are returned, and + the client should NOT try again. + +5.2.2. printer-up-time (integer(1:MAX)) + + The value of this attribute is the Printer's "printer-up-time" + attribute at the time when the Printer sends this response. The + Printer MUST return this attribute. Because each Event Notification + also contains the value of this attribute when the event occurred, + the value of this attribute lets a Notification Recipient know when + each Event Notification occurred relative to the time of this + response. + + + + +Herriot, et al. Standards Track [Page 14] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Group 2: Unsupported Attributes + See [RFC2911], section 3.1.7, for details on returning + Unsupported Attributes. + + Group 3 through N: Event Notification Attributes + The Printer responds with one Event Notification Attributes + Group per matched Event Notification. The entire response is + considered a single Compound Event Notification (see + [RFC3995]). The matched Event Notifications are all un-expired + Event Notifications associated with the matched Subscription + Objects and MUST follow the "Event Notification Ordering" + requirements for Event Notifications within a Compound Event + Notification specified in [RFC3995] section 9. In other words, + the Printer MUST order these Event Notification groups in + ascending time stamp (and sequence number) order for a + Subscription object. If Event Notifications for multiple + Subscription objects are being returned, the Notification + Events for the next Subscription object follow in ascending + time stamp order, etc. + + Each Event Notification Group MUST contain all of attributes + specified in section 9.1 ("Content of Machine Consumable Event + Notifications") of [RFC3995], with exceptions denoted by + asterisks in the tables below. + + The tables below are identical to those in section 9.1 + ("Content of Machine Consumable Event Notifications") of + [RFC3995], except that each cell in the "Sends" column is a + "MUST". + + If more than one Event Notification is being returned and the + status of each is not the same, then the Printer MUST return a + "notify-status-code" attribute in each Event Notification + Attributes group to indicate the differing status values. + + For an Event Notification for all Events, the Printer includes + the attributes shown in Table 3. + + Table 3. Attributes in Event Notification Content + + Source Value Sends Source Object + + notify-subscription-id (integer(1:MAX)) MUST Subscription + notify-printer-uri (uri) MUST Subscription + notify-subscribed-event (type2 keyword) MUST Event + Notification + printer-up-time (integer(1:MAX)) * MUST Printer + printer-current-time (dateTime) MUST ** Printer + + + +Herriot, et al. Standards Track [Page 15] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + notify-sequence-number (integer (0:MAX)) MUST Subscription + notify-charset (charset) MUST Subscription + notify-natural-language (naturalLanguage) MUST Subscription + notify-user-data (octetString(63)) MUST *** Subscription + notify-text (text) MUST Event + Notification + attributes from the "notify-attributes" MUST **** Printer + attribute + attributes from the "notify-attributes" MUST **** Job + attribute + attributes from the "notify-attributes" MUST **** Subscription + attribute + + * As specified in [RFC3995] section 9, the value of the + "printer-up-time" attribute sent in each Event Notification + MUST be the time at which the Event occurred, not the time at + which the Event Notification was sent. + + ** The Printer MUST send the "printer-current-time" attribute + if and only if it supports the "printer-current-time" attribute + on the Printer object. + + *** If the associated Subscription Object does not contain a + "notify-user-data" attribute, the Printer MUST send an + octet-string of length 0. + + **** If the "notify-attributes" attribute is present on the + Subscription Object, the Printer MUST send all attributes + specified by the "notify-attributes" attribute. Note: If the + Printer doesn't support the "notify-attributes" attribute, it + is not present on the associated Subscription Object. + + For Event Notifications for Job Events, the Printer includes + the additional attributes shown in Table 4. + + Table 4. Additional Attributes in Event Notification Content for + Job Events + + Source Value Sends Source Object + + job-id (integer(1:MAX)) MUST Job + job-state (type1 enum) MUST Job + job-state-reasons (1setOf type2 keyword) MUST Job + job-impressions-completed (integer(0:MAX)) MUST * Job + + + + + + + +Herriot, et al. Standards Track [Page 16] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + * The Printer MUST send the "job-impressions-completed" attribute + in an Event Notification only for the combinations of Events and + Subscribed Events shown in Table 5. + + Table 5. Combinations of Events and Subscribed Events for + "job-impressions-completed" + + Job Event Subscribed Job Event + + 'job-progress' 'job-progress' + 'job-completed' 'job-completed' + 'job-completed' 'job-state-changed' + + For Event Notification for Printer Events, the Printer includes + the additional attributes shown in Table 6. + + Table 6. Additional Attributes in Event Notification Content for + Printer Events + + Source Value Sends Source + Object + + printer-state (type1 enum) MUST Printer + printer-state-reasons (1setOf type2 keyword) MUST Printer + printer-is-accepting-jobs (boolean) MUST Printer + +6. Additional Information about Subscription Template Attributes + + The 'ippget' Delivery Method does not define any addition + Subscription Template attributes and has the conformance requirements + for Subscription Template attributes defined in [RFC3995]. This + section defines additional information about Subscription Template + attributes defined in [RFC3995]. + +6.1. notify-pull-method (type2 keyword) + + This Subscription Template attribute identifies the Pull Delivery + Method to be used for the Subscription Object (see [RFC3995]). To + support the 'ippget' Pull Delivery Method defined in this document, + the Printer MUST support this attribute with the following keyword + value: + + 'ippget': Indicates that the 'ippget' Pull Delivery Method is to + be used for this Subscription Object. + + + + + + + +Herriot, et al. Standards Track [Page 17] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +7. Subscription Description Attributes + + The 'ippget' Delivery Method has the conformance requirements for + Subscription Description attributes defined in [RFC3995]. The + 'ippget' Delivery Method does not define any addition Subscription + Description attributes. + +8. Additional Printer Description Attributes + + This section defines additional Printer Description attributes for + use with the 'ippget' Delivery Method. + +8.1. ippget-event-life (integer(15:MAX)) + + This Printer Description attribute specifies the Event Life value + that the Printer assigns to each Event; i.e., the number of seconds + after an Event occurs during which a Printer will return that Event + in an Event Notification in a Get-Notifications response. After the + Event Life expires for the Event, the Printer MAY no longer return an + Event Notification for that Event in a Get-Notifications response. + + The Printer MUST support this attribute if it supports the 'ippget' + Delivery Method. The value MUST be 15 or more (at least 15 seconds), + and 60 (seconds) is the RECOMMENDED value to align with the PWG Job + Monitoring MIB [RFC2707] jmGeneralJobPersistence and + jmGeneralAttributePersistence objects. + + For example, assume the following: + + 1. A client performs a Job Creation operation that creates a + Subscription Object associated with the 'ippget' Delivery Method; + + 2. An Event associated with the new Job occurs immediately after the + Subscription Object is created; + + 3. the same client or some other client performs a Get-Notifications + operation so that the client is connected N seconds after the Job + Creation operation. + + Then, if N is less than the value of this attribute, the client(s) + performing the Get-Notifications operations can expect not to miss + any Event-Notifications, barring some unforeseen lack of memory space + in the Printer. Note: The client MUST initiate the Get- + Notifications at a time that is sufficiently less that N seconds to + account for network latency so that it is connected to the Printer + before N seconds elapses. + + + + + +Herriot, et al. Standards Track [Page 18] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + If a Printer supports the 'ippget' Delivery Method, it MUST keep + 'completed', 'canceled', or 'aborted' Job objects in the Job + Retention and/or Job History phases for at least as long as this + attribute's value. The Printer MAY retain jobs longer that this + value. See [RFC2911], section 4.3.7.1, and the discussion in + [RFC3995] (regarding the 'job-completed' event). The latter explains + that a Notification Recipient can query the Job after receiving a + 'job-completed' Event Notification in order to find out other + information about the job that is 'completed', 'aborted', or + 'canceled'. However, this attribute has no effect on the Cancel- + Subscription operation, which deletes the Subscription object + immediately whether or not it contains the "notify-pull-method" + attribute with the 'ippget' keyword value. Immediately thereafter, + subsequent Get-Notifications Responses MUST NOT contain Event + Notifications associated with the canceled Subscription object. + +9. New Values for Existing Printer Description Attributes + + This section defines additional values for existing Printer + Description attributes as defined in [RFC3995]. + +9.1. notify-pull-method-supported (1setOf type2 keyword) + + The following keyword value for the "notify-pull-method-supported" + attribute is added in order to support the new Delivery Method + defined in this document: + + 'ippget': The IPP Notification Pull Delivery Method defined in + this document. + +9.2. operations-supported (1setOf type2 enum) + + Table 7 lists the "operation-id" value defined in order to support + the new Get-Notifications operation defined in this document. + + Table 7. Operation-id Assignments + + Value Operation Name + + 0x001C Get-Notifications + +10. New Status Codes + + The following status code is defined as an extension for this + Delivery Method and is returned as the status code of the Get- + Notifications operation in Group 1 or Group 3 to N (see section 5.2). + + + + + +Herriot, et al. Standards Track [Page 19] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +10.1. successful-ok-events-complete (0x0007) + + The Printer MUST return the 'successful-ok-events-complete' status + code to indicate when this Get-Notifications response is the last + response for a Subscription object, whether or not there are Event + Notifications being returned. This condition occurs for Event Wait + Mode with Notification Recipients waiting for responses when (1) the + Subscription Object is canceled with a Cancel-Subscription operation, + (2) the Subscription object is deleted, when the Per-Printer + Subscription lease time expires, or (3) the 'job-completed' event + occurs for a Per-Job Subscription. This condition also occurs for a + Get-Notifications request that a Notification Recipient makes after + the job completes, but before the Event Life expires. + +11. Encoding and Transport + + This section defines the encoding and transport considerations for + this Delivery Method based on [RFC2910]. + + The encoding of a Get-Notifications Response is modeled after the + Get-Jobs Response (see [RFC2911]). In a Get-Notifications Response, + each Event Notification Attributes Group MUST start with an 'event- + notification-attributes-tag' (see the section "Encodings of + Additional Attribute Tags" in [RFC3995]), and end with an 'end-of- + attributes-tag'. In addition, for Event Wait Mode the multi- + part/related is used to separate each multiple response (in time) to + a single Get-Notifications Request. + + The Printer returns Get-Notification Response as follows: + + 1. If the Notification Recipient client did not request Event Wait + Mode ("notify-wait" = 'false' or omitted), the Printer ends the + response with an 'end-of-attributes-tag' (see [RFC2911], Get-Jobs + encoding), as with any operation response. + + 2. If the Notification Recipient client requests Event Wait Mode + ("notify-wait" = 'true') and the Printer wishes to honor the + request, the Printer MUST return the response as an + application/ipp part inside a multi-part/related MIME media type. + When one or more additional Events occur, the Printer returns + each as an additional Event Notification Group using a separate + application/ipp part under the multi-part/related type. + + 3. If the client requested Event Wait Mode ("notify-wait" = 'true'), + but the Printer does not wish to honor the request in the initial + response and wants the client explicitly polled for Event + Notifications, the Printer MUST return the "notify-get-interval" + operation attribute (see section 5.2.1). The Printer returns the + + + +Herriot, et al. Standards Track [Page 20] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + response as an application/ipp part that MAY be inside an multi- + part/related type. The client MUST accept this response and + reissue the Get-Notifications request in the future indicated by + the value of the "notify-get-interval" attribute value. + + 4. If the client requested Event Wait Mode ("notify-wait" = 'true'), + and the Printer initially honored the request but later wishes to + leave Event Wait Mode, the Printer MUST return the "notify-get- + interval" operation attribute (see section 5.2.1). The Printer + returns the response as an application/ipp part that MUST be + inside an multi-part/related type. + + NOTE: If a Notification Recipient fails to receive a response, it + can ask the Printer for the same Event Notifications again. The + Notification Recipient will receive the same Event Notifications that + it should have received the first time, except for those Event + Notifications that have expired in the meantime. + + The Printer MAY chunk the responses, but this has no significance to + the IPP semantics. + + This notification delivery method uses the IPP transport and encoding + [RFC2910] for the Get-Notifications operation with the following + extension, allocated in [RFC3995]: + + Table 8. The "event-notification-attributes-tag" Value + + Tag Value (Hex) Meaning + + 0x07 "event-notification-attributes-tag" + +12. Conformance Requirements + + This section lists the conformance requirements for clients and + Printers. + +12.1. Conformance for IPP Printers + + It is OPTIONAL for a Printer to support IPP Notifications as defined + in [RFC3995]. However, if a Printer supports IPP Notifications, the + Printer MUST support the 'ippget' Delivery Method, as defined in this + document, as one of its Delivery Methods. IPP Printers that conform + to this specification + + 1. MUST meet the conformance requirements defined in [RFC3995] for a + Pull Delivery Method; + + + + + +Herriot, et al. Standards Track [Page 21] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 2. MUST support the Get-Notifications operation defined in section + 5, including Event Wait Mode; + + 3. MUST support the Subscription Template object attributes, as + defined in section 6; + + 4. MUST support the Subscription Description object attributes, as + defined in section 7; + + 5. MUST support the "ippget-event-life" Printer Description + attribute defined in section 8.1, including retaining jobs in the + Job Retention and/or Job History phases for at least as long as + the value specified by the Printer's "ippget-event-life"; + + 6. MUST support the additional values for IPP/1.1 Printer + Description attributes defined in section 9; + + 7. MUST support the 'successful-ok-events-complete' status code, as + described in section 10.1; + + 8. MUST listen for the IPP Get-Notifications operation requests on + IANA-assigned well-known port 631, unless explicitly configured + by system administrators or site policies; + + 9. SHOULD NOT listen for IPP Get-Notifications operation requests on + any other port, unless explicitly configured by system + administrators or site policies; and + + 10. MUST meet the security conformance requirements stated in section + 18.4. + +12.2. Conformance for IPP Clients + + It is OPTIONAL for an IPP Client to support IPP Notifications as + defined in [RFC3995]. However, if a client supports IPP + Notifications, the client MUST support the 'ippget' Delivery Method + as defined in this document as one of its Delivery Methods. IPP + Clients that conform to this specification: + + 1. MUST create Subscription Objects by sending Subscription Creation + operation requests containing the "notify-pull-method" attribute + (as opposed to the "notify-recipient-uri" attribute) using the + 'ippget' keyword value (see sections 6.1 and 15.2); + + 2. MUST send IPP Get-Notifications operation requests (see section + 5.1) via the port specified in the associated 'ipp' URL (if + present) or otherwise via IANA-assigned well-known port 631; + + + + +Herriot, et al. Standards Track [Page 22] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + 3. MUST convert the associated 'ipp' URLs for use in IPP Get- + Notifications operation to their corresponding 'http' URL forms + for use in the HTTP layer, according to the rules in section 5, + "IPP URL Scheme", in [RFC2910]; and + + 4. MUST meet the security conformance requirements stated in section + 18.5. + +13. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R., and J. + Wenn, "Internet Printing Protocol/1.1: Encoding and + Transport", RFC 2910, September 2000. + + [RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S., and + P. Powell, "Internet Printing Protocol/1.1: Model and + Semantics", RFC 2911, September 2000. + + [RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol + (IPP): Event Notifications and Subscriptions", RFC 3995, + March 2005. + +14. Informative References + + [RFC2565] Herriot, R., Butler, S., Moore, P., and R. Turner, + "Internet Printing Protocol/1.0: Encoding and + Transport", RFC 2565, April 1999. + + [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and + P. Powell, "Internet Printing Protocol/1.0: Model and + Semantics", RFC 2566, April 1999. + + [RFC2567] Wright, F., "Design Goals for an Internet Printing + Protocol", RFC 2567, April 1999. + + [RFC2568] Zilles, S., "Rationale for the Structure of the Model + and Protocol for the Internet Printing Protocol", RFC + 2568, April 1999. + + [RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J. Martin, + "Mapping between LPD and IPP Protocols", RFC 2569, April + 1999. + + + + + + +Herriot, et al. Standards Track [Page 23] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext + Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. + + [RFC2707] Bergman, R., Hastings, T., Isaacson, S., and H. Lewis, + "Job Monitoring MIB - V1.0", RFC 2707, November 1999. + + [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. + Holst, "Internet Printing Protocol/1.1: Implementor's + Guide", RFC 3196, November 2001. + + [RFC3997] Hastings, T., Ed., deBry, R., and H. Lewis, "Internet + Printing Protocol (IPP): Requirements for IPP + Notifications", RFC 3997, March 2005. + +15. IANA Considerations + + This section contains the exact information that the IANA has added + to the IPP Registries according to the procedures defined in + [RFC2911], section 6. These registrations have been published in the + http://www.iana.org/assignments/ipp-registrations registry. + +15.1. Attribute Registrations + + The following table lists the attributes defined in this document. + This has been registered according to the procedures in RFC 2911 + [RFC2911] section 6.2. + + Printer Description attributes: Reference Section + ------------------------------- --------- ------- + ippget-event-life (integer(15:MAX)) [RFC3996] 8.1 + +15.2. Delivery Method and Additional Keyword Attribute Value + Registrations for Existing Attributes + + This section lists additional keyword attribute value registrations + for use with existing attributes defined in other documents. These + have been registered according to the procedures in [RFC2911], + section 6.1. According to [RFC3995], section 24.7.3, Pull Delivery + Method registrations are the keyword attribute value registrations + for the "notify-pull-method" and "notify-pull-method-supported" + attributes. + + + + + + + + + +Herriot, et al. Standards Track [Page 24] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + Attribute (attribute syntax) + Values Reference Section + ----------------------- --------- ------- + notify-pull-method (type2 keyword) [RFC3995] 5.3.2 + notify-pull-method-supported (1setOf type2 keyword) + [RFC3995] 5.3.2.1 + ippget [RFC3996] 9.1 + +15.3. Additional Enum Attribute Values + + The following table lists the enum attribute values defined in this + document. These have been registered according to the procedures in + [RFC2911], section 6.1. + + Attribute (attribute syntax) + Value Name Reference Section + ------ ----------------------------- --------- ------- + operations-supported (1setOf type2 enum) [RFC2911] 4.4.15 + 0x001C Get-Notifications [RFC3996] 9.2 + +15.4. Operation Registrations + + The following table lists the operations defined in this document. + This has been registered according to the procedures in RFC 2911 + [RFC2911] section 6.4. + + Operations: Reference Section + ----------- --------- ------- + Get-Notifications [RFC3996] 5 + +15.5. Status Code Registrations + + The following table lists the status codes defined in this document. + This has been registered according to the procedures in [RFC2911], + section 6.6. + + Status codes: Reference Section + ------------- --------- ------- + successful-ok-events-complete (0x0007) [RFC3996] 10.1 + +16. Internationalization Considerations + + The IPP Printer MUST localize the "notify-text" attribute as + specified in section 14 of [RFC3995]. + + + + + + + +Herriot, et al. Standards Track [Page 25] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + In addition, when the client receives the Get-Notifications response, + it is expected to localize the attributes that have the 'keyword' + attribute syntax according to the charset and natural language + requested in the Get-Notifications request. + +17. Security Considerations + + The IPP Model and Semantics document [RFC2911, section 8] discusses + high-level security requirements (Client Authentication, Server + Authentication and Operation Privacy). The IPP Transport and + Encoding document [RFC2910, section 8] discusses the security + requirements for the IPP protocol. Client Authentication is the + mechanism by which the client proves its identity to the server in a + secure manner. Server Authentication is the mechanism by which the + server proves its identity to the client in a secure manner. + Operation Privacy is defined as a mechanism for protecting operations + from eavesdropping. + + The 'ippget' Delivery Method with its Get-Notifications operations + leverages the security mechanism that are used in IPP/1.1 [RFC2910 + and RFC2911] without adding any additional security mechanisms in + order to maintain the same security support as IPP/1.1. + + The access control model for the Get-Notifications operation defined + in this document is the same as the access control model for the + Get-Job-Attributes operation (see [RFC2911], section 3.2.6). The + primary difference is that a Get-Notifications operation is directed + at Subscription Objects rather than at Job objects, and a returned + attribute group contains Event Notification attributes rather than + Job object attributes. + +17.1. Notification Recipient Client Access Rights + + The Notification Recipient client MUST have the following access + rights to the Subscription object(s) targeted by the Get- + Notifications operation request: + + The authenticated user (see [RFC2911], section 8.3) performing + this operation MUST be (1) the owner of each Subscription Object + identified by the "notify-subscription-ids" operation attribute + (see section 5.1.1), (2) an operator or administrator of the + Printer (see [RFC2911], sections 1 and 8.5), or (3) otherwise + authorized by the Printer's administrator-configured security + policy to request Event Notifications from the target Subscription + Object(s). Furthermore, the Printer's security policy MAY limit + + + + + + +Herriot, et al. Standards Track [Page 26] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + the attributes returned by the Get-Notifications operation, in a + manner similar to that of the Get-Job-Attributes operation (see + [RFC2911], end of section 3.3.4.2). + +17.2. Printer Security Threats + + Because the Get-Notifications operation is sent in the same direction + as are Job Creation operations, usually by the same client, this + Event Notification Delivery Method poses no additional + authentication, authorization, privacy, firewall, or port assignment + issues above those for the IPP Get-Job-Attributes and Get-Printer- + Attributes operations (see [RFC2911], sections 3.2.6 and 3.2.5). + +17.3. Notification Recipient Security Threats + + Unwanted Events Notifications (spam): Unlike Push Event Notification + Delivery Methods in which the IPP Printer initiates the Event + Notification, with the Pull Delivery Method defined in this document, + the Notification Recipient is the client that initiates the Get- + Notifications operation (see section 5). Therefore, with this method + there is no chance of "spam" notifications. + + Note: When a client stays connected to a Printer by using the Event + Wait Mode (see section 5.1.3) in order to receive Event Notifications + as they occur, it can close down the IPP connection at any time and + so can avoid future unwanted Event Notifications at any time. + + It is true that the client has control over whether to ask for Event + Notifications. However, if the client subscribes to an event and + does a Get-Notifications request, it gets all events for the + Subscription Object in the sequence number range (see section 5.1.2), + not just those it wants. If a client subscribes to a Per-Printer + Subscription job event, such as 'job-completed', and someone then + starts and cancels thousands of jobs, the client would have to + receive these events in addition to those it is interested in. A + client can protect itself better by subscribing to its own jobs by + using a Per-Job Subscription, rather than create a Per-Printer + subscription whose Job events apply to all jobs. + +17.4. Security Requirements for Printers + + For the Get-Notifications operation defined in this document, the + same Printer conformance requirements apply for supporting and using + Client Authentication, Server Authentication and Operation Privacy as + stated in [RFC2910] section 8 for all IPP operations. + + + + + + +Herriot, et al. Standards Track [Page 27] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +17.5. Security Requirements for Clients + + For the Get-Notifications operation defined in this document, the + same client conformance requirements apply for supporting and using + Client Authentication, Server Authentication, and Operation Privacy + as stated in [RFC2910], section 8, for all IPP operations. + +18. Description of Base IPP Documents (Informative) + + The base set of IPP documents includes the following: + + Design Goals for an Internet Printing Protocol [RFC2567] + Rationale for the Structure and Model and Protocol for the Internet + Printing Protocol [RFC2568] + Internet Printing Protocol/1.1: Model and Semantics [RFC2911] + Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] + Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] + Mapping between LPD and IPP Protocols [RFC2569] + + "Design Goals for an Internet Printing Protocol" takes a broad look + at distributed printing functionality, and it enumerates real-life + scenarios that help clarify the features that need to be included in + a printing protocol for the Internet. It identifies requirements for + three types of users: end users, operators, and administrators. It + calls out a subset of end user requirements that are satisfied in + IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator operations have + been added to IPP/1.1. + + "Rationale for the Structure and Model and Protocol for the Internet + Printing Protocol" describes IPP from a high-level view, defines a + roadmap for the various documents that form the suite of IPP + specification documents, and gives background and rationale for the + IETF working group's major decisions. + + "Internet Printing Protocol/1.1: Model and Semantics" describes a + simplified model with abstract objects, their attributes, and their + operations that are independent of encoding and transport. It + introduces a Printer and a Job object. The Job object optionally + supports multiple documents per Job. It also addresses security, + internationalization, and directory issues. + + "Internet Printing Protocol/1.1: Encoding and Transport" is a formal + mapping of the abstract operations and attributes defined in the + model document onto HTTP/1.1 [RFC2616]. It defines the encoding + rules for a new Internet MIME media type called "application/ipp". + This document also defines the rules for transporting over HTTP a + message body whose Content-Type is "application/ipp". This document + defines the 'ipp' scheme for identifying IPP printers and jobs. + + + +Herriot, et al. Standards Track [Page 28] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + + "Internet Printing Protocol/1.1: Implementer's Guide" gives insight + and advice to implementers of IPP clients and IPP objects. It is + intended to help them understand IPP/1.1 and some of the + considerations that may assist them in the design of their client + and/or IPP object implementations. For example, a typical order of + processing requests is given, including error checking. Motivation + for some of the specification decisions is also included. + + "Mapping between LPD and IPP Protocols" gives some advice to + implementers of gateways between IPP and LPD (Line Printer Daemon) + implementations. + +19. Contributors + + Carl Kugler and Harry Lewis contributed the basic idea of in-band + "smart polling" coupled with multiple responses for a single + operation on the same connection, with one response for each event as + it occurs. Without their continual persuasion, we would not have + arrived at this Delivery Method specification and would not have been + able to agree on a single REQUIRED Delivery Method for IPP. + + Carl Kugler + IBM Corporation + 6300 Diagonal Highway + Boulder, CO 80301 + + EMail: kugler@us.ibm.com + + + + + + + + + + + + + + + + + + + + + + + + +Herriot, et al. Standards Track [Page 29] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +Authors' Addresses + + Robert Herriot + Global Workflow Solutions + 706 Colorado Ave. + Palo Alto, CA 94303 + + Phone: 650-324-4000 + EMail: bob@herriot.com + + + Thomas N. Hastings + Xerox Corporation + 710 S Aviation Blvd. ESAE 242 + El Segundo CA 90245 + + Phone: 310-333-6413 + Fax: 310-333-6342 + EMail: hastings@cp10.es.xerox.com + + + Harry Lewis + IBM Corporation + 6300 Diagonal Hwy + Boulder, CO 80301 + + Phone: (303) 924-5337 + EMail: harryl@us.ibm.com + + + + + + + + + + + + + + + + + + + + + + + +Herriot, et al. Standards Track [Page 30] + +RFC 3996 IPP: The 'ippget' Delivery Method March 2005 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2005). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + +Herriot, et al. Standards Track [Page 31] + |