]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 1 | |
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | Network Working Group C. Kugler | |
8 | Request for Comments: 3998 H. Lewis | |
9 | Category: Standards Track IBM Corporation | |
10 | T. Hastings, Ed. | |
11 | Xerox Corporation | |
12 | March 2005 | |
13 | ||
14 | ||
15 | Internet Printing Protocol (IPP): | |
16 | Job and Printer Administrative Operations | |
17 | ||
18 | Status of This Memo | |
19 | ||
20 | This document specifies an Internet standards track protocol for the | |
21 | Internet community, and requests discussion and suggestions for | |
22 | improvements. Please refer to the current edition of the "Internet | |
23 | Official Protocol Standards" (STD 1) for the standardization state | |
24 | and status of this protocol. Distribution of this memo is unlimited. | |
25 | ||
26 | Copyright Notice | |
27 | ||
28 | Copyright (C) The Internet Society (2005). | |
29 | ||
30 | Abstract | |
31 | ||
32 | This document specifies the following 16 additional OPTIONAL system | |
33 | administration operations for use with the Internet Printing | |
34 | Protocol/1.1 (IPP), plus a few associated attributes, values, and | |
35 | status codes, and using the IPP Printer object to manage printer | |
36 | fan-out and fan-in. | |
37 | ||
38 | Printer operations: Job operations: | |
39 | Enable-Printer and Disable-Printer Reprocess-Job | |
40 | Pause-Printer-After-Current-Job Cancel-Current-Job | |
41 | Hold-New-Jobs and Release-Held-New-Jobs Suspend-Current-Job | |
42 | Deactivate-Printer and Activate-Printer Resume-Job | |
43 | Restart-Printer Promote-Job | |
44 | Shutdown-Printer and Startup-Printer Schedule-Job-After | |
45 | ||
46 | ||
47 | ||
48 | ||
49 | ||
50 | ||
51 | ||
52 | ||
53 | ||
54 | ||
55 | ||
56 | ||
57 | ||
58 | Kugler, et al. Standards Track [Page 1] | |
59 | \f | |
60 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
61 | ||
62 | ||
63 | Table of Contents | |
64 | ||
65 | 1. Introduction.................................................. 4 | |
66 | 2. Terminology................................................... 4 | |
67 | 2.1. Conformance Terminology................................. 4 | |
68 | 2.2. Other Terminology....................................... 5 | |
69 | 3. Definition of the Printer Operations.......................... 6 | |
70 | 3.1. The Disable and Enable Printer Operations............... 7 | |
71 | 3.1.1. Disable-Printer Operation....................... 7 | |
72 | 3.1.2. Enable-Printer Operation........................ 8 | |
73 | 3.2. The Pause and Resume Printer Operations................. 8 | |
74 | 3.2.1. Pause-Printer-After-Current-Job Operation....... 9 | |
75 | 3.3. Hold and Release New Jobs Operations.................... 11 | |
76 | 3.3.1. Hold-New-Jobs Operation......................... 11 | |
77 | 3.3.2. Release-Held-New-Jobs Operation................. 12 | |
78 | 3.4. Deactivate and Activate Printer Operations.............. 12 | |
79 | 3.4.1. Deactivate-Printer Operation.................... 13 | |
80 | 3.4.2. Activate-Printer Operation...................... 13 | |
81 | 3.5. Restart-Printer, Shutdown-Printer, | |
82 | and Startup-Printer Operations.......................... 14 | |
83 | 3.5.1. Restart-Printer Operation....................... 14 | |
84 | 3.5.2. Shutdown-Printer Operation...................... 14 | |
85 | 3.5.3. Startup-Printer Operation....................... 15 | |
86 | 4. Definition of the Job Operations.............................. 16 | |
87 | 4.1. Reprocess-Job Operation................................. 17 | |
88 | 4.2. Cancel-Current-Job Operation............................ 17 | |
89 | 4.3. Suspend and Resume Job Operations....................... 18 | |
90 | 4.3.1. Suspend-Current-Job Operation................... 19 | |
91 | 4.3.2. Resume-Job Operation............................ 20 | |
92 | 4.4. Job Scheduling Operations............................... 20 | |
93 | 4.4.1. Promote-Job Operation........................... 20 | |
94 | 4.4.2. Schedule-Job-After Operation.................... 21 | |
95 | 5. Additional Status Codes....................................... 23 | |
96 | 5.1. 'server-error-printer-is-deactivated' (0x050A).......... 23 | |
97 | 6. Use of Operation Attributes | |
98 | That Are Messages from the Operator........................... 23 | |
99 | 7. New Printer Description Attributes............................ 26 | |
100 | 7.1. subordinate-printers-supported (1setOf uri)............. 26 | |
101 | 7.2. parent-printers-supported (1setOf uri).................. 26 | |
102 | 8. Additional Values for | |
103 | the "printer-state-reasons" Printer Description Attribute..... 26 | |
104 | 8.1. 'hold-new-jobs' Value................................... 27 | |
105 | 8.2. 'deactivated' Value..................................... 27 | |
106 | 9. Additional Values for | |
107 | the "job-state-reasons" Job Description attribute............. 27 | |
108 | 9.1. 'job-suspended' Value................................... 27 | |
109 | 10. Use of the Printer Object to Represent | |
110 | IPP Printer Fan-Out and IPP Printer Fan-In.................... 27 | |
111 | ||
112 | ||
113 | ||
114 | Kugler, et al. Standards Track [Page 2] | |
115 | \f | |
116 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
117 | ||
118 | ||
119 | 10.1. IPP Printer Fan-Out..................................... 28 | |
120 | 10.2. IPP Printer Fan-In...................................... 28 | |
121 | 10.3. Printer Object Attributes Used | |
122 | to Represent Printer Fan-Out and Printer Fan-In......... 29 | |
123 | 10.4. Subordinate Printer URI................................. 29 | |
124 | 10.5. Printer Object Attributes Used | |
125 | to Represent Output Device Fan-Out...................... 30 | |
126 | 10.6. Figures to Show All Possible Configurations............. 30 | |
127 | 10.7. Forwarding Requests..................................... 33 | |
128 | 10.7.1. Forwarding Requests | |
129 | that Affect Printer Objects..................... 33 | |
130 | 10.7.2. Forwarding Requests that Affect Jobs............ 35 | |
131 | 10.8. Additional Attributes to Help with Fan-Out.............. 37 | |
132 | 10.8.1. output-device-assigned (name(127)) | |
133 | Job Description Attribute - from [RFC2911]...... 37 | |
134 | 10.8.2. original-requesting-user-name (name(MAX)) | |
135 | Operation and Job Description Attribute......... 37 | |
136 | 10.8.3. requesting-user-name (name(MAX)) | |
137 | Operation Attribute - Additional Semantics...... 38 | |
138 | 10.8.4. job-originating-user-name (name(MAX)) | |
139 | Job Description Attribute - | |
140 | Additional Semantics............................ 38 | |
141 | 11. Conformance Requirements...................................... 38 | |
142 | 12. Normative References.......................................... 39 | |
143 | 13. Informative References........................................ 40 | |
144 | 14. IANA Considerations........................................... 40 | |
145 | 14.1. Attribute Registrations................................. 41 | |
146 | 14.2. Attribute Value Registrations........................... 41 | |
147 | 14.3. Additional Enum Attribute Value Registrations........... 41 | |
148 | 14.4. Operation Registrations................................. 42 | |
149 | 14.5. Status Code Registrations............................... 43 | |
150 | 15. Internationalization Considerations........................... 43 | |
151 | 16. Security Considerations....................................... 43 | |
152 | 17. Summary of Base IPP Documents................................. 44 | |
153 | Authors' Addresses................................................ 45 | |
154 | Full Copyright Statement.......................................... 46 | |
155 | ||
156 | List of Tables | |
157 | ||
158 | Table 1. Printer Operation Operation-Id Assignments.............. 6 | |
159 | Table 2. Pause and Resume Printer Operations..................... 9 | |
160 | Table 3. State Transition Table for | |
161 | Pause-Printer-After-Current-Job Operation............... 10 | |
162 | Table 4. Job Operation Operation-Id Assignments.................. 16 | |
163 | Table 5. Operation Attribute Support for Printer Operations...... 24 | |
164 | Table 6. Operation Attribute Support for Job Operations.......... 25 | |
165 | Table 7. Forwarding Operations that Affect Printer Objects....... 34 | |
166 | Table 8. Forwarding Operations that Affect Jobs Objects.......... 36 | |
167 | ||
168 | ||
169 | ||
170 | Kugler, et al. Standards Track [Page 3] | |
171 | \f | |
172 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
173 | ||
174 | ||
175 | Table 9. Conformance Requirement Dependencies for Operations..... 38 | |
176 | Table 10. Conformance Requirement Dependencies | |
177 | for "printer-state-reasons" Values...................... 39 | |
178 | Table 11. Conformance Requirement Dependencies | |
179 | for "job-state-reasons" Values.......................... 39 | |
180 | ||
181 | List of Figures | |
182 | ||
183 | Figure 1. Embedded Printer Object................................ 31 | |
184 | Figure 2. Hosted Printer Object.................................. 31 | |
185 | Figure 3. Output Device Fan-Out.................................. 31 | |
186 | Figure 4. Chained IPP Printer Objects............................ 32 | |
187 | Figure 5. IPP Printer Object Fan-Out............................. 32 | |
188 | Figure 6. IPP Printer Object Fan-In.............................. 33 | |
189 | ||
190 | 1. Introduction | |
191 | ||
192 | The Internet Printing Protocol (IPP) is an application level protocol | |
193 | that can be used for distributed printing using Internet tools and | |
194 | technologies. IPP version 1.1 ([RFC2911, RFC2910]) focuses on end- | |
195 | user functionality, with a few administrative operations included. | |
196 | This document defines additional OPTIONAL end user, operator, and | |
197 | administrator operations used to control Jobs and Printers. In | |
198 | addition, this document extends the semantic model of the Printer | |
199 | object by allowing them to be configured into trees and/or inverted | |
200 | trees that represent Printer object Fan-Out and Printer object Fan- | |
201 | In, respectively. The special case of a tree with only a single | |
202 | Subordinate node represents Chained Printers. This document is a | |
203 | registration proposal for an extension to IPP/1.0 and IPP/1.1 | |
204 | following the registration procedures in those documents. | |
205 | ||
206 | The requirements and use cases for this document are defined in | |
207 | [RFC3239]. | |
208 | ||
209 | 2. Terminology | |
210 | ||
211 | This section defines the terminology used throughout this document. | |
212 | ||
213 | 2.1. Conformance Terminology | |
214 | ||
215 | Capitalized terms such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD | |
216 | NOT, MAY, NEED NOT, and OPTIONAL have special meaning relating to | |
217 | conformance as defined in RFC 2119 [RFC2119] and [RFC2911], section | |
218 | 12.1. If an implementation supports the extension defined in this | |
219 | document, then these terms apply; otherwise, they do not. These | |
220 | terms define conformance to this document only; they do not affect | |
221 | conformance to other documents, unless explicitly stated otherwise. | |
222 | ||
223 | ||
224 | ||
225 | ||
226 | Kugler, et al. Standards Track [Page 4] | |
227 | \f | |
228 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
229 | ||
230 | ||
231 | 2.2. Other Terminology | |
232 | ||
233 | This document uses terms such as "client", "Printer", "Job", | |
234 | "attributes", "keywords", "operation", and "support". These terms | |
235 | have special meaning and are defined in the model terminology | |
236 | ([RFC2911], section 12.2). | |
237 | ||
238 | In addition, the following capitalized terms are defined: | |
239 | ||
240 | IPP Printer object (or Printer for short) - A software abstraction | |
241 | defined by [RFC2911]. | |
242 | ||
243 | Printer Operation - An operation whose target is an IPP Printer | |
244 | object and whose effect is on the Printer object. | |
245 | ||
246 | Output Device - The physical imaging mechanism that an IPP Printer | |
247 | controls. Note: although this term is capitalized in this | |
248 | specification (but not in [RFC2911]), there is no formal object | |
249 | called an Output Device defined in this document (or in [RFC2911]). | |
250 | ||
251 | Output Device Fan-Out - A configuration in which an IPP Printer | |
252 | controls more than one Output Device. | |
253 | ||
254 | Printer Fan-Out - A configuration in which an IPP Printer object | |
255 | controls more than one Subordinate IPP Printer object. | |
256 | ||
257 | Printer Fan-In - A configuration in which an IPP Printer object is | |
258 | controlled by more than one IPP Printer object. | |
259 | ||
260 | Subordinate Printer - An IPP Printer object that is controlled by | |
261 | another IPP Printer object. Such a Subordinate Printer MAY have zero | |
262 | or more Subordinate Printers. | |
263 | ||
264 | Leaf Printer - An IPP Printer object that has no Subordinate | |
265 | Printers. | |
266 | ||
267 | Non-Leaf Printer - An IPP Printer object that has one or more | |
268 | Subordinate Printers. A Non-Leaf Printer is also called a Parent | |
269 | Printer. | |
270 | ||
271 | Chained Printer - a Non-Leaf Printer that has exactly one Subordinate | |
272 | Printer. | |
273 | ||
274 | Job Creation operations - IPP operations that create a Job object: | |
275 | Print-Job, Print-URI, and Create-Job. | |
276 | ||
277 | ||
278 | ||
279 | ||
280 | ||
281 | ||
282 | Kugler, et al. Standards Track [Page 5] | |
283 | \f | |
284 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
285 | ||
286 | ||
287 | 3. Definition of the Printer Operations | |
288 | ||
289 | All Printer Operations are directed at Printer objects. A client | |
290 | MUST always supply the "printer-uri" operation attribute in order to | |
291 | identify the correct target of the operation. These descriptions | |
292 | assume all of the common semantics of the IPP/1.1 Model and Semantics | |
293 | document ([RFC2911], section 3.1). | |
294 | ||
295 | The Printer Operations defined in this document are summarized in | |
296 | Table 1. | |
297 | ||
298 | Table 1. Printer Operation Operation-Id Assignments | |
299 | ||
300 | Operation Name Operation-Id Brief Description | |
301 | -------------------------------------------------------------------- | |
302 | Enable-Printer 0x22 Allows the target Printer to accept | |
303 | Job Creation operations. | |
304 | ||
305 | Disable-Printer 0x23 Prevents the target Printer from | |
306 | accepting Job Creation operations. | |
307 | ||
308 | Pause-Printer- 0x24 Pauses the Printer after the current | |
309 | After-Current- job has been sent to the Output | |
310 | Job Device. | |
311 | ||
312 | Hold-New-Jobs 0x25 Finishes processing all currently | |
313 | pending jobs. Any new jobs are | |
314 | placed in the 'pending-held' state. | |
315 | ||
316 | Release-Held- 0x26 Releases all jobs to the 'pending' | |
317 | New-Jobs state that had been held by the | |
318 | effect of a previous Hold-New-Jobs | |
319 | operation and condition the Printer | |
320 | so that it no longer holds new jobs. | |
321 | ||
322 | Deactivate- 0x27 Puts the Printer into a read-only | |
323 | Printer deactivated state. | |
324 | ||
325 | Activate- 0x28 Restores the Printer to normal | |
326 | Printer activity. | |
327 | ||
328 | Restart-Printer 0x29 Restarts the target Printer and re- | |
329 | initializes the software. | |
330 | ||
331 | Shutdown- 0x2A Shuts down the target Printer so that | |
332 | Printer it cannot be restarted or queried. | |
333 | ||
334 | ||
335 | ||
336 | ||
337 | ||
338 | Kugler, et al. Standards Track [Page 6] | |
339 | \f | |
340 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
341 | ||
342 | ||
343 | Startup-Printer 0x2B Starts up the instance of the Printer | |
344 | object. | |
345 | ||
346 | All of the operations in this document are OPTIONAL for an IPP object | |
347 | to support. Unless the specification of an OPTIONAL operation | |
348 | requires support of another OPTIONAL operation, conforming | |
349 | implementations may support any combination of these operations. | |
350 | Many of the operations come in pairs, so both are REQUIRED if either | |
351 | one is implemented. | |
352 | ||
353 | 3.1. The Disable and Enable Printer Operations | |
354 | ||
355 | This section defines the OPTIONAL Disable-Printer and Enable-Printer | |
356 | operations that stop and start the IPP Printer object from accepting | |
357 | new IPP jobs. If either of these operations are supported, both MUST | |
358 | be supported. | |
359 | ||
360 | These operations allow the operator to control whether the Printer | |
361 | will accept new Job Creation (Print-Job, Print-URI, and Create-Job) | |
362 | operations. These operations have no other effect on the Printer, so | |
363 | the Printer continues to accept all other operations and continues to | |
364 | schedule and process jobs normally. In other words, these operations | |
365 | control the "input of new jobs" to the IPP Printer, and the Pause and | |
366 | Resume operations (see section 3.2) independently control the "output | |
367 | of new jobs" from the IPP Printer to the Output Device. | |
368 | ||
369 | 3.1.1. Disable-Printer Operation | |
370 | ||
371 | This OPTIONAL operation allows a client to stop the Printer object | |
372 | from accepting new jobs; i.e., it causes the Printer to reject | |
373 | subsequent Job Creation operations and return the 'server-error-not- | |
374 | accepting-jobs' status code. The Printer still accepts all other | |
375 | operations, including Validate-Job, Send-Document, and Send-URI | |
376 | operations. Thus a Disable-Printer operation allows a client to | |
377 | continue submitting multiple documents of a multiple document job if | |
378 | the Create-Job operation had already been accepted. All previously | |
379 | created or submitted Jobs and all Jobs currently processing continue | |
380 | unaffected. | |
381 | ||
382 | The IPP Printer MUST accept the request in any state. The Printer | |
383 | sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer | |
384 | Description attribute to 'false' (see [RFC2911], section 4.4.20), no | |
385 | matter what the previous value was. This operation has no immediate | |
386 | or direct effect on the Printer's "printer-state" and "printer- | |
387 | state-reasons" attributes. | |
388 | ||
389 | ||
390 | ||
391 | ||
392 | ||
393 | ||
394 | Kugler, et al. Standards Track [Page 7] | |
395 | \f | |
396 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
397 | ||
398 | ||
399 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
400 | performing this operation must be an operator or administrator of the | |
401 | Printer object (see [RFC2911] sections 1 and 8.5). | |
402 | ||
403 | The Disable-Printer Request and Disable-Printer Response have the | |
404 | same attribute groups and attributes as do the Pause-Printer | |
405 | operation (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including | |
406 | the new "printer-message-from-operator" operation attribute (see | |
407 | section 6). | |
408 | ||
409 | 3.1.2. Enable-Printer Operation | |
410 | ||
411 | This OPTIONAL operation allows a client to start the Printer object | |
412 | accepting jobs; i.e., it causes the Printer to accept subsequent Job | |
413 | Creation operations. The Printer still accepts all other operations. | |
414 | All previously submitted and currently processing Jobs continue | |
415 | unaffected. | |
416 | ||
417 | The IPP Printer MUST accept the request in any state. The Printer | |
418 | sets the value of its "printer-is-accepting-jobs" READ-ONLY Printer | |
419 | Description attribute to 'true' (see [RFC2911], section 4.4.20), no | |
420 | matter what the previous value was. This operation has no immediate | |
421 | or direct effect on the Printer's "printer-state" and "printer- | |
422 | state-reasons" attributes. | |
423 | ||
424 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
425 | performing this operation must be an operator or administrator of the | |
426 | Printer object (see [RFC2911] sections 1 and 8.5). | |
427 | ||
428 | The Enable-Printer Request and Enable-Printer Response have the same | |
429 | attribute groups and attributes as does the Pause-Printer operation | |
430 | (see [RFC2911], sections 3.2.8.1 and 3.2.8.2), including the new | |
431 | "printer-message-from-operator" operation attribute (see section 6). | |
432 | ||
433 | 3.2. The Pause and Resume Printer Operations | |
434 | ||
435 | This section leaves the OPTIONAL IPP/1.1 Pause-Printer (see | |
436 | [RFC2911], sections 3.2.7) ambiguous as to whether it stops the | |
437 | Printer immediately or after the current job. It also defines the | |
438 | OPTIONAL Pause-Printer-After-Current-Job operation as following the | |
439 | current job. These operations affect the scheduling of IPP jobs. If | |
440 | either of these Pause Printer operations are supported, then the | |
441 | Resume-Printer operation MUST be supported. | |
442 | ||
443 | These operations allow the operator to control whether the Printer | |
444 | will send new IPP jobs to the associated Output Device(s) that the | |
445 | IPP Printer object represents. These operations have no other effect | |
446 | on the Printer, so the Printer continues to accept all operations. | |
447 | ||
448 | ||
449 | ||
450 | Kugler, et al. Standards Track [Page 8] | |
451 | \f | |
452 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
453 | ||
454 | ||
455 | In other words, these operations control the "output of new jobs" to | |
456 | the Output Device(s), and the Disable and Enable Printer Operations | |
457 | (see section 3.1) independently control the "input of new jobs" to | |
458 | the IPP Printer. | |
459 | ||
460 | Table 2. Pause and Resume Printer Operations | |
461 | ||
462 | Pause and Resume Printers Description | |
463 | -------------------------------------------------------------------- | |
464 | IPP/1.1 Pause Printer Stops the IPP Printer from sending | |
465 | new IPP Jobs to the Output Device(s) | |
466 | either immediately or after the | |
467 | current job completes, depending on | |
468 | implementation, as defined in | |
469 | [RFC2911]. | |
470 | ||
471 | Pause-Printer-After- Stops the IPP Printer from sending | |
472 | Current-Job new IPP Jobs to the Output Device(s) | |
473 | after the current jobs finish. | |
474 | ||
475 | Resume-Printer Starts the IPP Printer sending IPP | |
476 | Jobs to the Output Device again. | |
477 | ||
478 | 3.2.1. Pause-Printer-After-Current-Job Operation | |
479 | ||
480 | This OPTIONAL operation allows a client to stop the Printer object | |
481 | from sending IPP jobs to any of its Output Devices or Subordinate | |
482 | Printers. If the IPP Printer is in the middle of sending an IPP job | |
483 | to an Output Device or Subordinate Printer, the IPP Printer MUST | |
484 | complete sending that Job. However, after receiving this operation, | |
485 | the IPP Printer MUST NOT send any additional IPP jobs to any of its | |
486 | Output Devices or Subordinate Printers. In addition, after having | |
487 | received this operation, the IPP Printer MUST NOT start processing | |
488 | any more jobs, so additional jobs MUST NOT enter the 'processing' | |
489 | state. | |
490 | ||
491 | If the IPP Printer is not sending an IPP Job to the Output Device or | |
492 | Subordinate Printer (whether or not the Output Device or Subordinate | |
493 | Printer is busy processing any jobs), the IPP Printer object | |
494 | transitions immediately to the 'stopped' state by setting its | |
495 | "printer-state" attribute to 'stopped', removing the 'moving-to- | |
496 | paused' value, if present, from its "printer-state-reasons" | |
497 | attribute, and adding the 'paused' value to its "printer-state- | |
498 | reasons" attribute. | |
499 | ||
500 | If the implementation will take appreciable time to complete sending | |
501 | an IPP job that it has started sending to an Output Device or | |
502 | Subordinate Printer, the IPP Printer adds the 'moving-to-paused' | |
503 | ||
504 | ||
505 | ||
506 | Kugler, et al. Standards Track [Page 9] | |
507 | \f | |
508 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
509 | ||
510 | ||
511 | value to the Printer object's "printer-state-reasons" attribute (see | |
512 | section [RFC2911], 4.4.12). When the IPP Printer has completed | |
513 | sending IPP jobs that it was in the process of sending, the Printer | |
514 | object transitions to the 'stopped' state by setting its "printer- | |
515 | state" attribute to 'stopped', removing the 'moving-to-paused' value, | |
516 | if present, from its "printer-state-reasons" attribute, and adding | |
517 | the 'paused' value to its "printer-state-reasons" attribute. | |
518 | ||
519 | This operation MUST NOT affect the acceptance of Job Creation | |
520 | requests (see Disable-Printer Operation, section 3.1.1). | |
521 | ||
522 | For any jobs that are 'pending' or 'pending-held', the 'printer- | |
523 | stopped' values of the jobs' "job-state-reasons" attribute also | |
524 | apply. However, the IPP Printer NEED NOT update those jobs' "job- | |
525 | state-reasons" attributes and only have to return the 'printer- | |
526 | stopped' value when those jobs are queried by using the Get-Job- | |
527 | Attributes or Get-Jobs operations (so-called "lazy evaluation"). | |
528 | ||
529 | The IPP Printer MUST accept the request in any state and transition | |
530 | the Printer to the indicated new "printer-state", and it MUST add the | |
531 | indicated value to "printer-state-reasons" attribute before returning | |
532 | as follows: | |
533 | ||
534 | Table 3. State Transition Table for Pause-Printer-After-Current-Job | |
535 | Operation | |
536 | ||
537 | Current New "printer IPP Printer's response status | |
538 | "printer- "printer- -state- code and action (REQUIRED/ | |
539 | state" state" reasons" OPTIONAL state transition for | |
540 | a Printer to support): | |
541 | -------------------------------------------------------------------- | |
542 | 'idle' 'stopped' 'paused' REQUIRED: 'successful-ok' | |
543 | ||
544 | 'processing' 'processing' 'moving- OPTIONAL: 'successful-ok'; | |
545 | to- Later, when the IPP Printer | |
546 | paused' has finished sending IPP jobs | |
547 | to an Output Device, the | |
548 | "printer-state" becomes | |
549 | 'stopped', and the 'paused' | |
550 | value replaces the 'moving-to- | |
551 | paused' value in the "printer- | |
552 | state-reasons" attribute | |
553 | ||
554 | 'processing' 'stopped' 'paused' REQUIRED: 'successful-ok'; | |
555 | the IPP Printer wasn't in the | |
556 | middle of sending an IPP job | |
557 | to an Output Device | |
558 | ||
559 | ||
560 | ||
561 | ||
562 | Kugler, et al. Standards Track [Page 10] | |
563 | \f | |
564 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
565 | ||
566 | ||
567 | 'stopped' 'stopped' 'paused' REQUIRED: 'successful-ok' | |
568 | ||
569 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
570 | performing this operation must be an operator or administrator of the | |
571 | Printer object (see [RFC2911], sections 1 and 8.5). | |
572 | ||
573 | The Pause-Printer-After-Current-Job Request and Pause-Printer-After- | |
574 | Current-Job Response have the same attribute groups and attributes as | |
575 | does the Pause-Printer operation (see [RFC2911], sections 3.2.7.1 and | |
576 | 3.2.7.2), including the new "printer-message-from-operator" operation | |
577 | attribute (see section 6). | |
578 | ||
579 | 3.3. Hold and Release New Jobs Operations | |
580 | ||
581 | This section defines operations to condition the Printer to hold any | |
582 | new jobs and to release them. | |
583 | ||
584 | 3.3.1. Hold-New-Jobs Operation | |
585 | ||
586 | This OPTIONAL operation allows a client to condition the Printer to | |
587 | complete the current 'pending' and 'processing' IPP Jobs but not to | |
588 | start processing any subsequently created IPP Jobs. If the IPP | |
589 | Printer is in the middle of sending an IPP job to an Output Device or | |
590 | Subordinate Printer, the IPP Printer MUST complete sending that Job. | |
591 | Furthermore, the IPP Printer MUST send all of the current 'pending' | |
592 | IPP Jobs to the Output Device(s) or Subordinate IPP Printer | |
593 | object(s). Any subsequently received Job Creation operations will | |
594 | cause the IPP Printer to put the Job into the 'pending-held' state, | |
595 | with the 'job-held-on-create' value being added to the job's "job- | |
596 | state-reasons" attribute. Thus all newly accepted jobs will be | |
597 | automatically held by the Printer. | |
598 | ||
599 | When the Printer completes all the 'pending' and 'processing' jobs, | |
600 | it enters the 'idle' state as usual. An operator monitoring Printer | |
601 | state changes will know when the Printer has completed all current | |
602 | jobs because the Printer enters the 'idle' state. | |
603 | ||
604 | This operation MUST NOT affect the acceptance of Job Creation | |
605 | requests (see Disable-Printer Operation, section 3.1.1), except to | |
606 | put the Jobs into the 'pending-held' state, instead of the 'pending' | |
607 | or 'processing' state. | |
608 | ||
609 | The IPP Printer MUST accept the request in any state, MUST NOT | |
610 | transition the Printer to any other "printer-state", and MUST add the | |
611 | 'hold-new-jobs' value to the Printer's "printer-state-reasons" | |
612 | attribute (whether the value was present or not). | |
613 | ||
614 | ||
615 | ||
616 | ||
617 | ||
618 | Kugler, et al. Standards Track [Page 11] | |
619 | \f | |
620 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
621 | ||
622 | ||
623 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
624 | performing this operation must be an operator or administrator of the | |
625 | Printer object (see [RFC2911], sections 1 and 8.5). | |
626 | ||
627 | The Hold-New-Jobs Request and Hold-New-Jobs Response have the same | |
628 | attribute groups and attributes as does the Pause-Printer operation | |
629 | (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including the new | |
630 | "printer-message-from-operator" operation attribute (see section 6). | |
631 | ||
632 | 3.3.2. Release-Held-New-Jobs Operation | |
633 | ||
634 | This OPTIONAL operation allows a client to undo the effect of a | |
635 | previous Hold-New-Jobs operation. In particular, the Printer | |
636 | releases all the jobs that it held as a consequence of a Hold-New- | |
637 | Jobs operations; i.e., while the 'hold-new-jobs' value was present in | |
638 | the Printer's "printer-state-reasons" attribute. In addition, the | |
639 | Printer MUST accept this request in any state, MUST NOT transition | |
640 | the Printer to any other "printer-state", and MUST remove the 'hold- | |
641 | new-jobs' value from its "printer-state-reasons" attribute (whether | |
642 | the value was present or not) so that the Printer no longer holds | |
643 | newly created jobs. | |
644 | ||
645 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
646 | performing this operation must be an operator or administrator of the | |
647 | Printer object (see [RFC2911], sections 1 and 8.5). | |
648 | ||
649 | The Release-Held-New-Jobs Request and Release-Held-New-Jobs Response | |
650 | have the same attribute groups and attributes as the Pause-Printer | |
651 | operation (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including | |
652 | the new "printer-message-from-operator" operation attribute (see | |
653 | section 6). | |
654 | ||
655 | 3.4. Deactivate and Activate Printer Operations | |
656 | ||
657 | This section defines the OPTIONAL Deactivate-Printer and Activate- | |
658 | Printer operations that stop and start the IPP Printer object from | |
659 | accepting all requests except queries and performing work. If either | |
660 | of these operations are supported, both MUST be supported. | |
661 | ||
662 | These operations allow the operator to put the Printer into a dormant | |
663 | read-only condition and to take it out of this condition. | |
664 | ||
665 | ||
666 | ||
667 | ||
668 | ||
669 | ||
670 | ||
671 | ||
672 | ||
673 | ||
674 | Kugler, et al. Standards Track [Page 12] | |
675 | \f | |
676 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
677 | ||
678 | ||
679 | 3.4.1. Deactivate-Printer Operation | |
680 | ||
681 | This OPTIONAL operation allows a client to stop the Printer object | |
682 | from sending IPP jobs to any of its Output Devices or Subordinate | |
683 | Printers (Pause-Printer-After-Current-Job) and to stop the Printer | |
684 | object from accepting any requests but query requests. The Printer | |
685 | performs a Disable-Printer and a Pause-Printer-After-Current-Job | |
686 | operation immediately. If these two operations cannot be completed | |
687 | immediately, it includes use of all of the "printer-state-reasons". | |
688 | In addition, the Printer MUST immediately reject all requests, except | |
689 | for Activate-Printer, queries (Get-Printer-Attributes, Get-Job- | |
690 | Attributes, Get-Jobs, etc.), Send-Document, and Send-URI (so that | |
691 | partial job submission can be completed, see section 3.1.1). The | |
692 | Printer MUST then return the 'server-error-service-unavailable' | |
693 | status code. | |
694 | ||
695 | The IPP Printer MUST accept the request in any state. Immediately, | |
696 | the Printer MUST set the 'deactivated' value in its "printer-state- | |
697 | reasons" attribute. Note: neither the Disable-Printer nor the | |
698 | Pause-Printer-After-Current-Job set the 'deactivated' value. | |
699 | ||
700 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
701 | performing this operation must be an operator or administrator of the | |
702 | Printer object (see [RFC2911], sections 1 and 8.5). | |
703 | ||
704 | The Deactivate-Printer Request and Deactivate-Printer Response have | |
705 | the same attribute groups and attributes as does the Pause-Printer | |
706 | operation (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including | |
707 | the new "printer-message-from-operator" operation attribute (see | |
708 | section 6). | |
709 | ||
710 | 3.4.2. Activate-Printer Operation | |
711 | ||
712 | This OPTIONAL operation allows a client to undo the effects of the | |
713 | Deactivate-Printer; i.e., it allows the Printer object to start | |
714 | sending IPP jobs to any of its Output Devices or Subordinate Printers | |
715 | (Pause-Printer-After-Current-Job) and starts the Printer object from | |
716 | accepting any requests. The Printer performs an Enable-Printer and a | |
717 | Resume-Printer operation immediately. In addition, the Printer MUST | |
718 | immediately start accepting all requests. | |
719 | ||
720 | The IPP Printer MUST accept the request in any state. The Printer | |
721 | MUST immediately remove the 'deactivated' value from its "printer- | |
722 | state-reasons" attribute (whether it is present or not). | |
723 | ||
724 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
725 | performing this operation must be an operator or administrator of the | |
726 | Printer object (see [RFC2911], sections 1 and 8.5). | |
727 | ||
728 | ||
729 | ||
730 | Kugler, et al. Standards Track [Page 13] | |
731 | \f | |
732 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
733 | ||
734 | ||
735 | The Activate-Printer Request and Activate-Printer Response have the | |
736 | same attribute groups and attributes as the Pause-Printer operation | |
737 | (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including the new | |
738 | "printer-message-from-operator" operation attribute (see section 6). | |
739 | ||
740 | 3.5. Restart-Printer, Shutdown-Printer, and Startup-Printer Operations | |
741 | ||
742 | This section defines the OPTIONAL Restart-Printer, Shutdown-Printer, | |
743 | and Startup-Printer operations that initialize, shutdown, and start | |
744 | up the Printer object, respectively. Each of these operations is | |
745 | OPTIONAL, and any combination MAY be supported. | |
746 | ||
747 | 3.5.1. Restart-Printer Operation | |
748 | ||
749 | This OPTIONAL operation allows a client to restart a Printer object | |
750 | whose operation is in need of initialization because of incorrect or | |
751 | erratic behavior; i.e., perform the effect of a software re-boot. | |
752 | The implementation MUST attempt to save any information about Jobs | |
753 | and the Printer object before re-initializing. However, this | |
754 | operation MAY have drastic consequences on the running system, so the | |
755 | client SHOULD first try the Deactivate-Printer operation to minimize | |
756 | the effect on the current state of the system. The effects of | |
757 | previous Disable-Printer, Pause Printer, and Deactivate-Printer | |
758 | operations are lost. | |
759 | ||
760 | The IPP Printer MUST accept the request in any state. The Printer | |
761 | object MUST initialize its Printer's "printer-state" to 'idle', | |
762 | remove the state reasons from its "printer-state-reasons" attribute, | |
763 | and change its "printer-is-accepting-jobs" attribute to 'true'. | |
764 | ||
765 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
766 | performing this operation must be an operator or administrator of the | |
767 | Printer object (see [RFC2911], sections 1 and 8.5). | |
768 | ||
769 | The Restart-Printer Request and Restart-Printer Response have the | |
770 | same attribute groups and attributes as does the Pause-Printer | |
771 | operation (see [RFC2911], sections 3.2.8.1 and 3.2.8.2), including | |
772 | the new "printer-message-from-operator" operation attribute (see | |
773 | section 6). | |
774 | ||
775 | 3.5.2. Shutdown-Printer Operation | |
776 | ||
777 | This OPTIONAL operation allows a client to shutdown a Printer; i.e., | |
778 | to stop processing jobs without losing any jobs and to make the | |
779 | Printer object unavailable for any operations using the IPP protocol. | |
780 | There is no way to bring the instance of the Printer object back to | |
781 | being used, except for the Startup-Printer (see section 3.5.3), which | |
782 | starts up a new instance of the Printer object for hosted | |
783 | ||
784 | ||
785 | ||
786 | Kugler, et al. Standards Track [Page 14] | |
787 | \f | |
788 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
789 | ||
790 | ||
791 | implementations. The purpose of Shutdown-Printer is to shutdown the | |
792 | Printer for an extended period, not to reset the device(s) or modify | |
793 | a Printer attribute. See Restart-Printer (section 3.5.1) and | |
794 | Startup-Printer (section 3.5.3) for the way to initialize the | |
795 | software. See the Disable-Printer operation (section 3.1) for a way | |
796 | for the client to stop the Printer from accepting Job Creation | |
797 | requests without stopping processing or shutting down. | |
798 | ||
799 | The Printer MUST add the 'shutdown' value (see [RFC2911], section | |
800 | 4.4.11) immediately to its "printer-state-reasons" Printer | |
801 | Description attribute. It then performs a Deactivate-Printer | |
802 | operation (see section 3.4.1), which in turn performs Disable-Printer | |
803 | and Pause-Printer-After-Current-Job operations). | |
804 | ||
805 | Note: To shutdown the Printer after all the currently submitted jobs | |
806 | have completed, the operator issues a Disable-Printer operation (see | |
807 | section 3.1.1) and then waits until all the jobs have completed. The | |
808 | Printer goes into the 'idle' state before issuing the Shutdown- | |
809 | Printer operation. | |
810 | ||
811 | The Printer object MUST accept this operation in any state and | |
812 | transition the Printer object through the "printer-states" and | |
813 | "printer-state-reasons" defined for the Pause-Printer-After-Current- | |
814 | Job operation until the activity is completed and the Printer object | |
815 | disappears. | |
816 | ||
817 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
818 | performing this operation must be an operator or administrator of the | |
819 | Printer object (see [RFC2911], sections 1 and 8.5). | |
820 | ||
821 | The Shutdown-Printer Request and Shutdown-Printer Response have the | |
822 | same attribute groups and attributes as does the Pause-Printer | |
823 | operation (see [RFC2911], sections 3.2.7.1 and 3.2.7.2), including | |
824 | the new "printer-message-from-operator" operation attribute (see | |
825 | section 6). | |
826 | ||
827 | 3.5.3. Startup-Printer operation | |
828 | ||
829 | This OPTIONAL operation allows a client to start up an instance of a | |
830 | Printer object, provided that there isn't one already initiated. The | |
831 | purpose of Startup-Printer is to allow a hosted implementation of the | |
832 | IPP Printer object (i.e., a Server that implements an IPP Printer on | |
833 | behalf of a networked or local Output Device) to be started after the | |
834 | host is available (by means outside this document). See section | |
835 | 3.5.1 for the way to initialize the software or reset the Output | |
836 | Device(s) when the IPP Printer object has already been initiated. | |
837 | ||
838 | ||
839 | ||
840 | ||
841 | ||
842 | Kugler, et al. Standards Track [Page 15] | |
843 | \f | |
844 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
845 | ||
846 | ||
847 | The host MUST accept this operation only when the Printer object has | |
848 | not been initiated. If the Printer object already exists, the host | |
849 | must return the 'client-error-not-possible' status code. | |
850 | ||
851 | The result of this operation MUST be with the Printer object's | |
852 | "printer-state" set to 'idle', the state reasons removed from its | |
853 | "printer-state-reasons" attribute, and its "printer-is-accepting- | |
854 | jobs" attribute set to 'false'. Then the operator can reconfigure | |
855 | the Printer before performing an Enable-Printer operation. However, | |
856 | when a Printer is first powered up, it is RECOMMENDED that its | |
857 | "printer-is-accepting-jobs" attribute be set to 'true' in order to | |
858 | achieve easy "out of the box" operation. | |
859 | ||
860 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
861 | performing this operation must be an operator or administrator of the | |
862 | Printer object (see [RFC2911], sections 1 and 8.5). | |
863 | ||
864 | The Shutdown-Printer Request and Shutdown-Printer Response have the | |
865 | same attribute groups and attributes as does the Pause-Printer | |
866 | operation (see [RFC2911] sections 3.2.7.1 and 3.2.7.2), including the | |
867 | new "printer-message-from-operator" operation attribute (see section | |
868 | 6). | |
869 | ||
870 | 4. Definition of the Job Operations | |
871 | ||
872 | All Job operations are directed at Job objects. A client MUST always | |
873 | supply some means to identify the Job object in order to select the | |
874 | correct target of the operation. That job identification MAY either | |
875 | be a single Job URI or a combination of a Printer URI and a Job ID. | |
876 | The IPP object implementation MUST support both forms of | |
877 | identification for every job. | |
878 | ||
879 | The Job Operations defined in this document are summarized in Table | |
880 | 4. | |
881 | ||
882 | Table 4. Job Operation Operation-Id Assignments | |
883 | ||
884 | Operation Name Operation-Id Brief description | |
885 | -------------------------------------------------------------------- | |
886 | Reprocess-Job 0x2C Creates a copy of a completed target | |
887 | job with a new Job ID and processes it. | |
888 | ||
889 | Cancel-Current- 0x2D Cancels the current job on the target | |
890 | Job Printer or the specified job if it is | |
891 | the current job. | |
892 | ||
893 | ||
894 | ||
895 | ||
896 | ||
897 | ||
898 | Kugler, et al. Standards Track [Page 16] | |
899 | \f | |
900 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
901 | ||
902 | ||
903 | Suspend- 0x2E Suspends the current processing job on | |
904 | Current-Job the target Printer or the specified | |
905 | job if it is the current job, allowing | |
906 | other jobs to be processed instead. | |
907 | ||
908 | Resume-Job 0x2F Resumes the suspended target job. | |
909 | ||
910 | Promote-Job 0x30 Promotes the pending target job to be | |
911 | next after the current job(s) complete. | |
912 | ||
913 | Schedule-Job- 0x31 Schedules the target job immediately | |
914 | After after the specified job, all other | |
915 | scheduling factors being equal. | |
916 | ||
917 | 4.1. Reprocess-Job Operation | |
918 | ||
919 | This OPTIONAL operation is a create job operation that allows a | |
920 | client to re-process a copy of a job that had been retained in the | |
921 | queue after processing was completed, canceled, or aborted (see | |
922 | [RFC2911], section 4.3.7.2). This operation is the same as the | |
923 | Restart-Job operation (see [RFC2911], section 3.3.7), except that the | |
924 | Printer creates a new job that is a copy of the target job and the | |
925 | target job is unchanged. New values are assigned to the "job-uri" | |
926 | and "job-id" attributes. The new job's Job Description attributes | |
927 | that track job progress, such as "job-impressions-completed", "job- | |
928 | media-sheets-completed", and "job-k-octets-processed", are | |
929 | initialized to 0, as with any create job operation. The target job | |
930 | moves to the Job History after a suitable period, independent of | |
931 | whether one or more Reprocess-Job operations have been performed upon | |
932 | it. | |
933 | ||
934 | If the Set-Job-Attributes operation is supported, then the "job- | |
935 | hold-until" operation attribute MUST be supported with at least the | |
936 | 'indefinite' value, so that a client can modify the new job before it | |
937 | is scheduled for processing by using the Set-Job-Attributes | |
938 | operation. After modifying the job, the client can release the job | |
939 | for processing by using the Release-Job operation specifying the | |
940 | newly assigned "job-uri" or "job-id" for the new job. | |
941 | ||
942 | 4.2. Cancel-Current-Job Operation | |
943 | ||
944 | This OPTIONAL operation allows a client to cancel the current job on | |
945 | the target Printer or the specified job if it is the current job on | |
946 | the Printer. See [RFC2911], section 3.3.3, for the semantics of | |
947 | canceling a job. Since a Job might already be marking by the time a | |
948 | Cancel-Current-Job is received, some media sheet pages might print | |
949 | before the job is actually terminated. | |
950 | ||
951 | ||
952 | ||
953 | ||
954 | Kugler, et al. Standards Track [Page 17] | |
955 | \f | |
956 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
957 | ||
958 | ||
959 | If the client does not supply a "job-id" operation attribute, the | |
960 | Printer MUST accept the request and cancel the current job if there | |
961 | is a current job in the 'processing' or 'processing-stopped' state; | |
962 | otherwise, it MUST reject the request and return the 'client-error- | |
963 | not-possible' status code. If more than one job is in the | |
964 | 'processing' or 'processing-stopped' state, the one that is marking | |
965 | is canceled, and the others are unaffected. | |
966 | ||
967 | Warning: On a shared printer, there is a race condition. Between | |
968 | the time when a user issues this operation and the time of its | |
969 | acceptance, the current job might change to a different job. If the | |
970 | user or operator is authenticated to cancel the new job, the wrong | |
971 | job is canceled. To prevent this race from canceling the wrong job, | |
972 | the client MAY supply the "job-id" operation attribute, which is | |
973 | checked against the current job's job-id. If the job identified by | |
974 | the "job-id" attribute is not the current job on the Printer (i.e., | |
975 | is not in the 'processing' or 'processing-stopped' state), the | |
976 | Printer MUST reject this operation and return the 'client-error-not- | |
977 | possible' status code. Otherwise, the Printer cancels the specified | |
978 | job. | |
979 | ||
980 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
981 | performing this operation must either be the job owner (as determined | |
982 | in the Job Creation operation) or an operator or administrator of the | |
983 | Printer object (see [RFC2911], sections 1 and 8.5). | |
984 | ||
985 | The Cancel-Current-Job Request and Cancel-Current-Job Response have | |
986 | the same attribute groups and attributes as does the Resume-Printer | |
987 | operation (see [RFC2911], section 3.2.8), including the new "job- | |
988 | message-from-operator" operation attribute (see section 6), with the | |
989 | addition of the following Group 1 Operation attribute in the request: | |
990 | ||
991 | "job-id" (integer(1:MAX)): | |
992 | The client OPTIONALLY supplies this Operation attribute to verify | |
993 | that the identified job is still the current job on the target | |
994 | Printer object. The IPP object MUST support this operation | |
995 | attribute if it supports this operation. | |
996 | ||
997 | 4.3. Suspend and Resume Job Operations | |
998 | ||
999 | This section defines the Suspend-Current-Job and Resume-Job | |
1000 | operations. These operations allow an operator or user to suspend a | |
1001 | job while it is processing, allowing other jobs to be processed, and | |
1002 | to resume the suspended job at a later point without losing any of | |
1003 | the output. | |
1004 | ||
1005 | ||
1006 | ||
1007 | ||
1008 | ||
1009 | ||
1010 | Kugler, et al. Standards Track [Page 18] | |
1011 | \f | |
1012 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1013 | ||
1014 | ||
1015 | If either of these operations is supported, both MUST be supported. | |
1016 | ||
1017 | The Hold-Job and Release-Job operations ([RFC2911], section 3.3.5) | |
1018 | are for holding and releasing held jobs, not suspending and resuming | |
1019 | suspended jobs. | |
1020 | ||
1021 | 4.3.1. Suspend-Current-Job Operation | |
1022 | ||
1023 | This OPTIONAL operation allows a client to stop the current job on | |
1024 | the target Printer or the specified job if it is the current job on | |
1025 | the Printer, to allow other jobs to be processed instead. The | |
1026 | Printer moves the current job or the target job to the 'processing- | |
1027 | stopped' state and sets the 'job-suspended' value (see section 9.1) | |
1028 | in the job's "job-state-reasons" attribute and processes other jobs. | |
1029 | ||
1030 | If the client does not supply a "job-id" operation attribute, the | |
1031 | Printer MUST accept the request and suspend the current job if there | |
1032 | is a current job in the 'processing' or 'processing-stopped' state. | |
1033 | Otherwise, it MUST reject the request and return the 'client-error- | |
1034 | not-possible' status code. If more than one job is in the | |
1035 | 'processing' or 'processing-stopped' state, all of them are | |
1036 | suspended. | |
1037 | ||
1038 | Warning: On a shared printer, there is a race condition. Between | |
1039 | the time when a user issues this operation and the time of its | |
1040 | acceptance, the current job might change to a different job. If the | |
1041 | user or operator is authenticated to suspend the new job, the wrong | |
1042 | job is suspended. To prevent this race from pausing the wrong job, | |
1043 | the client MAY supply the "job-id" operation attribute, which is | |
1044 | checked against the current job's job-id. If the job identified by | |
1045 | the "job-id" attribute is not the current job on the Printer (i.e., | |
1046 | is not in the 'processing' or 'processing-stopped' state), the | |
1047 | Printer MUST reject this operation and return the 'client-error-not- | |
1048 | possible' status code. Otherwise, the Printer suspends the specified | |
1049 | job and processed other jobs. | |
1050 | ||
1051 | The Printer MUST reject a Suspend-Current-Job request (and return the | |
1052 | 'client-error-not-possible') for a job that has been suspended, i.e., | |
1053 | for a job in the 'processing-stopped' state, with the 'job-suspended' | |
1054 | value in its "job-state-reasons" attribute. | |
1055 | ||
1056 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
1057 | performing this operation must be either the job owner (as determined | |
1058 | in the Job Creation operation) or an operator or administrator of the | |
1059 | Printer object (see [RFC2911], sections 1 and 8.5). | |
1060 | ||
1061 | ||
1062 | ||
1063 | ||
1064 | ||
1065 | ||
1066 | Kugler, et al. Standards Track [Page 19] | |
1067 | \f | |
1068 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1069 | ||
1070 | ||
1071 | The Suspend-Current-Job Request and Suspend-Current-Job Response have | |
1072 | the same attribute groups and attributes as does the Pause-Printer | |
1073 | operation (see [RFC2911], section 3.2.8 ), including the new "job- | |
1074 | message-from-operator" operation attribute (see section 6), with the | |
1075 | addition of the following Group 1 Operation attribute in the request: | |
1076 | ||
1077 | "job-id" (integer(1:MAX)): | |
1078 | The client OPTIONALLY supplies this Operation attribute to verify | |
1079 | that the identified job is still the current job on the target | |
1080 | Printer object. The IPP object MUST support this operation | |
1081 | attribute if it supports this operation. | |
1082 | ||
1083 | 4.3.2. Resume-Job Operation | |
1084 | ||
1085 | This OPTIONAL operation allows a client to resume the target job at | |
1086 | the point where it was suspended. The Printer moves the target job | |
1087 | to the 'pending' state and removes the 'job-suspended' value from the | |
1088 | job's "job-state-reasons" attribute. | |
1089 | ||
1090 | If the target job is not in the 'processing-stopped' state, with the | |
1091 | 'job-suspended' value in the job's "job-state-reasons" attribute, the | |
1092 | Printer MUST reject the request and return the 'client-error-not- | |
1093 | possible' status code, since the job was not suspended. | |
1094 | ||
1095 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
1096 | performing this operation must be either the job owner (as determined | |
1097 | in the Job Creation operation) or an operator or administrator of the | |
1098 | Printer object (see [RFC2911], sections 1 and 8.5). | |
1099 | ||
1100 | The Resume-Job Request and Resume-Job Response have the same | |
1101 | attribute groups and attributes as the Release-Job operation (see | |
1102 | [RFC2911], section 3.3.6), including the new "job-message-from- | |
1103 | operator" operation attribute (see section 6). | |
1104 | ||
1105 | 4.4. Job Scheduling Operations | |
1106 | ||
1107 | This section defines jobs that allow an operator to control the | |
1108 | scheduling of jobs. | |
1109 | ||
1110 | 4.4.1. Promote-Job Operation | |
1111 | ||
1112 | This OPTIONAL operation allows a client to make the pending target | |
1113 | job be processed next after the current job completes. This | |
1114 | operation is especially useful in a production printing environment | |
1115 | where the operator is involved in job scheduling. | |
1116 | ||
1117 | ||
1118 | ||
1119 | ||
1120 | ||
1121 | ||
1122 | Kugler, et al. Standards Track [Page 20] | |
1123 | \f | |
1124 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1125 | ||
1126 | ||
1127 | If the target job is in the 'pending' state, this operation does not | |
1128 | change the job's state but causes the job to be processed after the | |
1129 | current job(s) complete. If the target job is not in the 'pending' | |
1130 | state, the Printer MUST reject the request and return the 'client- | |
1131 | error-not-possible' status code. | |
1132 | ||
1133 | If the Printer implements the "job-priority" Job Template attribute | |
1134 | (see [RFC2911], section 4.2.1), the Printer sets the job's "job- | |
1135 | priority" to the highest value supported (so that the job will print | |
1136 | before any of the other pending jobs). The Printer returns the | |
1137 | target job immediately after the current job(s) in a Get-Jobs | |
1138 | response (see [RFC2911], section 3.2.6) for the 'not-completed' jobs. | |
1139 | ||
1140 | When the current job is completed, canceled, suspended (see section | |
1141 | 4.3.1), or aborted, the target of this operation is processed next. | |
1142 | ||
1143 | If a client issues this request (again) before the target of the | |
1144 | operation of the original request started processing, the target of | |
1145 | this new request is processed first. | |
1146 | ||
1147 | IPP is specified not to require queues for job scheduling, as there | |
1148 | are other implementation techniques for scheduling multiple jobs, | |
1149 | such as re-evaluating a criteria function for each job on a | |
1150 | scheduling cycle. However, if an implementation does implement | |
1151 | queues for jobs, then the Promote-Job operation puts the specified | |
1152 | job at the front of the queue. A subsequent Promote-Job operation | |
1153 | prior to the processing of the first job puts that specified job at | |
1154 | the front of the queue, so that it is "in front" of the previously | |
1155 | promoted job. | |
1156 | ||
1157 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
1158 | performing this operation must be an operator or administrator of the | |
1159 | Printer object (see [RFC2911], sections 1 and 8.5). | |
1160 | ||
1161 | The Promote-Job Request and Promote-Job Response have the same | |
1162 | attribute groups and attributes as does the Cancel-Job operation (see | |
1163 | [RFC2911], section 3.3.3), including the new "job-message-from- | |
1164 | operator" operation attribute (see section 6). | |
1165 | ||
1166 | 4.4.2. Schedule-Job-After Operation | |
1167 | ||
1168 | This OPTIONAL operation allows a client to request that the Printer | |
1169 | schedule the target job so that it will be processed immediately | |
1170 | after the specified predecessor job, all other scheduling factors | |
1171 | being equal. This operation is specially useful in a production | |
1172 | printing environment where the operator is involved in job | |
1173 | scheduling. | |
1174 | ||
1175 | ||
1176 | ||
1177 | ||
1178 | Kugler, et al. Standards Track [Page 21] | |
1179 | \f | |
1180 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1181 | ||
1182 | ||
1183 | If the target job is in the 'pending' state, this operation does not | |
1184 | change the job's state but causes the job to be processed after the | |
1185 | preceding job completes. The preceding job can be in the target | |
1186 | 'pending', 'processing', or 'processing-stopped' state. If the | |
1187 | target job is not in the 'pending' state, or if the predecessor job | |
1188 | is not in the 'pending', 'processing', or 'processing-stopped' state, | |
1189 | the Printer MUST reject the request, and it returns the 'client- | |
1190 | error-not-possible' status code, as the job cannot have its position | |
1191 | changed. | |
1192 | ||
1193 | If the Printer implements the "job-priority" Job Template attribute | |
1194 | (see [RFC2911], section 4.2.1), the Printer sets the job's "job- | |
1195 | priority" to that of the predecessor job (so that the job will print | |
1196 | after the predecessor job). The Printer returns the target job | |
1197 | immediately after the predecessor in a Get-Jobs response (see | |
1198 | [RFC2911], section 3.2.6) for the 'not-completed' jobs. | |
1199 | ||
1200 | When the predecessor job completes processing or is canceled or | |
1201 | aborted while processing, the target of this operation is processed | |
1202 | next. | |
1203 | ||
1204 | If the client does not supply a predecessor job, this operation has | |
1205 | the same semantics as Promote-Job (see section 4.4). | |
1206 | ||
1207 | IPP is specified not to require queues for job scheduling, as there | |
1208 | are other implementation techniques for scheduling multiple jobs, | |
1209 | such as re-evaluating a criteria function for each job on a | |
1210 | scheduling cycle. However, if an implementation does implement | |
1211 | queues for jobs, then the Schedule-Job-After operation puts the | |
1212 | specified job immediately after the specified job in the queue. A | |
1213 | subsequent Schedule-Job-After operation specifying the same job will | |
1214 | cause its target job to be placed after that job, even though it is | |
1215 | between the first target job and the specified job. For example, | |
1216 | suppose the job queue consisted of jobs A, B, C, D, and E, in that | |
1217 | order. A Schedule-Job-After with job E as the target and B as the | |
1218 | specified job would result in the following queue: A, B, E, C, D. A | |
1219 | subsequent Schedule-Job-After with Job D as the target and B as the | |
1220 | specified job would result in the following queue: A, B, D, E, C. | |
1221 | ||
1222 | In other words, the link between the two jobs in a Schedule-Job-After | |
1223 | operation is not retained; i.e., there is no attribute on either job | |
1224 | that points to the other job as a result of this operation. | |
1225 | ||
1226 | Access Rights: The authenticated user (see [RFC2911], section 8.3) | |
1227 | performing this operation must be an operator or administrator of the | |
1228 | Printer object (see [RFC2911], sections 1 and 8.5). | |
1229 | ||
1230 | ||
1231 | ||
1232 | ||
1233 | ||
1234 | Kugler, et al. Standards Track [Page 22] | |
1235 | \f | |
1236 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1237 | ||
1238 | ||
1239 | The Schedule-Job-After Request have the same attribute groups and | |
1240 | attributes as does the Cancel-Job operation (see [RFC2911], section | |
1241 | 3.3.3), plus the new "job-message-from-operator" operation attribute | |
1242 | (see section 6). In addition, the following operation attribute is | |
1243 | defined: | |
1244 | ||
1245 | "predecessor-job-id": | |
1246 | The client OPTIONALLY supplies this attribute. The Printer MUST | |
1247 | support it, if it supports this operation. This attribute | |
1248 | specifies the job after which the target job is to be processed. | |
1249 | If the client omits this attribute, the Printer MUST process the | |
1250 | target job next, i.e., after the current job, if there is one. | |
1251 | ||
1252 | The Schedule-Job-After Response has the same attribute groups, | |
1253 | attributes, and status codes as does the Cancel-Job operation (see | |
1254 | [RFC2911], section 3.3.3). The following status codes have | |
1255 | particular meaning for this operation: | |
1256 | ||
1257 | 'client-error-not-possible' - The target job was not in the 'pending' | |
1258 | state, or the predecessor job was not in the 'pending', 'processing', | |
1259 | or 'processing-stopped' state. | |
1260 | ||
1261 | 'client-error-not-found' - Either the target job or the predecessor | |
1262 | job was not found. | |
1263 | ||
1264 | 5. Additional Status Codes | |
1265 | ||
1266 | This section defines new status codes used by the operations defined | |
1267 | in this document. | |
1268 | ||
1269 | 5.1. 'server-error-printer-is-deactivated' (0x050A) | |
1270 | ||
1271 | The Printer has been deactivated by the Deactivate-Printer operation | |
1272 | and is only accepting the Activate-Printer (see section 3.5.1), Get- | |
1273 | Job-Attributes, Get-Jobs, Get-Printer-Attributes, and any other Get- | |
1274 | Xxxx operations. An operator can perform the Activate-Printer | |
1275 | operation to allow the Printer to accept other operations. | |
1276 | ||
1277 | 6. Use of Operation Attributes That Are Messages from the Operator | |
1278 | ||
1279 | This section summarizes the usage of the "printer-message-from- | |
1280 | operator" and "job-message-from-operator" operation attributes | |
1281 | [RFC3380] that set the corresponding Printer and Job Description | |
1282 | attributes (see [RFC2911] for the definition of these). These | |
1283 | operation attributes are defined for most of the Printer and Job | |
1284 | operations that operators are likely to perform, respectively, so | |
1285 | that operators can indicate the reasons for their actions. | |
1286 | ||
1287 | ||
1288 | ||
1289 | ||
1290 | Kugler, et al. Standards Track [Page 23] | |
1291 | \f | |
1292 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1293 | ||
1294 | ||
1295 | Table 5 shows the operation attributes defined for use with the | |
1296 | Printer Operations. | |
1297 | ||
1298 | Table 5. Operation Attribute Support for Printer Operations | |
1299 | ||
1300 | Operation Attribute A B | |
1301 | --------------------------------------------- | |
1302 | attributes-charset REQ REQ | |
1303 | attributes-natural-language REQ REQ | |
1304 | printer-uri REQ REQ | |
1305 | requesting-user-name REQ REQ | |
1306 | printer-message-from-operator Note OPT | |
1307 | ||
1308 | Legend: | |
1309 | A: Get-Printer-Attributes, Set-Printer-Attributes | |
1310 | B: All other Printer administrative operations, including, but | |
1311 | not limited to, Pause-Printer, Pause-Printer-After-Current- | |
1312 | Job, Resume-Printer, Hold-New-Jobs, Release-Held-New-Jobs, | |
1313 | Purge-Jobs, Enable-Print, Disable-Printer, Restart- | |
1314 | Printer, Shutdown-Printer, and Startup-Printer. | |
1315 | REQ: REQUIRED for a Printer to support. | |
1316 | OPT: OPTIONAL for a Printer to support; the Printer ignores the | |
1317 | attribute if it is not supported. | |
1318 | Note: According to [RFC3380], the Client MUST NOT supply the | |
1319 | "printer-message-from-operator" operation attribute in a | |
1320 | Get-Printer-Attributes or Set-Printer-Attributes operation; | |
1321 | the Printer MUST ignore this operation attribute in these | |
1322 | two operations. Instead, when it is used by an | |
1323 | operator, the client MUST supply the | |
1324 | "printer-message-from-operator" as (one of the) explicit | |
1325 | attributes being set on the Printer object with the | |
1326 | Set-Printer-Attributes operation. | |
1327 | ||
1328 | ||
1329 | ||
1330 | ||
1331 | ||
1332 | ||
1333 | ||
1334 | ||
1335 | ||
1336 | ||
1337 | ||
1338 | ||
1339 | ||
1340 | ||
1341 | ||
1342 | ||
1343 | ||
1344 | ||
1345 | ||
1346 | Kugler, et al. Standards Track [Page 24] | |
1347 | \f | |
1348 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1349 | ||
1350 | ||
1351 | Table 6 shows the operation attributes defined for use with the Job | |
1352 | operations. | |
1353 | ||
1354 | Table 6. Operation Attribute Support for Job Operations | |
1355 | ||
1356 | Operation Attribute A B C F | |
1357 | --------------------------------------------------------- | |
1358 | attributes-charset REQ REQ REQ REQ | |
1359 | attributes-natural-language REQ REQ REQ REQ | |
1360 | printer-uri REQ REQ REQ REQ | |
1361 | job-uri REQ REQ REQ | |
1362 | job-id REQ REQ REQ REQ | |
1363 | requesting-user-name REQ REQ REQ REQ | |
1364 | job-message-from-operator OPT OPT OPT Note | |
1365 | message** OPT OPT OPT n/a | |
1366 | job-hold-until n/a n/a OPT* n/a | |
1367 | ||
1368 | Legend: | |
1369 | A: Cancel-Job, Resume-Job, Restart-Job, Promote-Job, Schedule-Job- | |
1370 | After | |
1371 | B: Cancel-Current-Job, Suspend-Current-Job | |
1372 | C: Hold-Job, Release-Job, Reprocess-Job | |
1373 | F: Get-Job-Attributes, Set-Job-Attributes | |
1374 | ||
1375 | REQ; REQUIRED for a Printer to support. | |
1376 | OPT: OPTIONAL for a Printer to support; the Printer ignores the | |
1377 | attribute if it is supplied, but not supported. | |
1378 | n/a: not applicable for use with the operation; the Printer ignores | |
1379 | the attribute. | |
1380 | Note: According to [RFC3380], the Client MUST NOT supply the "job- | |
1381 | message-from-operator" operation attribute in a Get-Job- | |
1382 | Attributes or Set-Job-Attributes operation; the Printer MUST | |
1383 | ignore this operation attribute in these two operations. | |
1384 | Instead, when used by an operator, the client MUST supply the | |
1385 | "job-message-from-operator" as (one of the) explicit attributes | |
1386 | being set on the Job object with the Set-Job-Attributes | |
1387 | operation. | |
1388 | *: The Printer MUST support the "job-hold-until" operation | |
1389 | attribute if it supports the "job-hold-until" Job Template | |
1390 | attribute. For the Reprocess-Job operation, the client can | |
1391 | hold the job and then modify the job before releasing it to | |
1392 | be processed. | |
1393 | **: In [RFC2911], the "message" operation attribute is defined to | |
1394 | contain a message to the operator, but [RFC2911] does not | |
1395 | define a Job Description attribute to store the message. | |
1396 | ||
1397 | ||
1398 | ||
1399 | ||
1400 | ||
1401 | ||
1402 | Kugler, et al. Standards Track [Page 25] | |
1403 | \f | |
1404 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1405 | ||
1406 | ||
1407 | 7. New Printer Description Attributes | |
1408 | ||
1409 | The following new Printer Description attributes are needed to | |
1410 | support the new operations defined in this document and the concepts | |
1411 | of Printer Fan-Out (see section 10). | |
1412 | ||
1413 | 7.1. subordinate-printers-supported (1setOf uri) | |
1414 | ||
1415 | This Printer attribute is REQUIRED if an implementation supports | |
1416 | Subordinate Printers (see section 10) and contains the URIs of the | |
1417 | immediate Subordinate Printer object(s) associated with this Printer | |
1418 | object. Each Non-Leaf Printer object MUST support this Printer | |
1419 | Description attribute. A Leaf Printer object either does not support | |
1420 | the "subordinate-printers-supported" attribute or does so with the | |
1421 | 'no-value' out-of-band value (see [RFC2911], section 4.1), depending | |
1422 | on the implementation. | |
1423 | ||
1424 | The precise format of the Subordinate Printer URIs is implementation | |
1425 | dependent (see section 10.4). | |
1426 | ||
1427 | If the Printer object does not have an associated Output Device, the | |
1428 | Printer MAY automatically copy the value of the Subordinate Printer | |
1429 | object's "printer-name" attribute to the Job object's "output- | |
1430 | device-assigned" attribute (see [RFC2911], section 4.3.13). The | |
1431 | "output-device-assigned" Job attribute identifies the Output Device | |
1432 | to which the Printer object has assigned a job; for example, when a | |
1433 | single Printer object is supporting Device Fan-Out or Printer Fan- | |
1434 | Out. | |
1435 | ||
1436 | 7.2. parent-printers-supported (1setOf uri) | |
1437 | ||
1438 | This Printer attribute is REQUIRED if an implementation supports | |
1439 | Subordinate Printers (see section 10) and contains the URI of the | |
1440 | Non-Leaf printer object(s) for which this Printer object is the | |
1441 | immediate Subordinate; i.e., this Printer's immediate "parent" or | |
1442 | "parents". Each Subordinate Printer object MUST support this Printer | |
1443 | Description attribute. A Printer that has no parents either does not | |
1444 | support the "parent-printers-supported" attribute or does so with the | |
1445 | 'no-value' out-of-band value (see [RFC2911], section 4.1), depending | |
1446 | on the implementation. | |
1447 | ||
1448 | 8. Additional Values for the "printer-state-reasons" Printer | |
1449 | Description Attribute | |
1450 | ||
1451 | This section defines additional values for the "printer-state- | |
1452 | reasons" Printer Description attribute. | |
1453 | ||
1454 | ||
1455 | ||
1456 | ||
1457 | ||
1458 | Kugler, et al. Standards Track [Page 26] | |
1459 | \f | |
1460 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1461 | ||
1462 | ||
1463 | 8.1. 'hold-new-jobs' Value | |
1464 | ||
1465 | 'hold-new-jobs': The operator has issued the Hold-New-Jobs operation | |
1466 | (see section 3.3.1) or other means, but the output-device(s) are | |
1467 | taking an appreciable time to stop. Later, when all output has | |
1468 | stopped, the "printer-state" becomes 'stopped', and the 'paused' | |
1469 | value replaces the 'moving-to-paused' value in the "printer- | |
1470 | state-reasons" attribute. This value MUST be supported if the | |
1471 | Hold-New-Jobs operation is supported and the implementation takes | |
1472 | significant time to pause a device in certain circumstances. | |
1473 | ||
1474 | 8.2. 'deactivated' Value | |
1475 | ||
1476 | 'deactivated': A client has issued a Deactivate-Printer operation | |
1477 | for the Printer object (see section 3.4.1), and the Printer is in | |
1478 | the process of becoming deactivated or has become deactivated. | |
1479 | The Printer MUST reject all requests except for Activate-Printer, | |
1480 | queries (Get-Printer-Attributes, Get-Job-Attributes, Get-Jobs, | |
1481 | etc.), Send-Document, and Send-URI (so that partial job submission | |
1482 | can be completed; see section 3.1.1), and then return the | |
1483 | 'server-error-service-unavailable' status code. | |
1484 | ||
1485 | 9. Additional Values for the "job-state-reasons" Job Description | |
1486 | Attribute | |
1487 | ||
1488 | This section defines additional values for the "job-state-reasons" | |
1489 | Job Description attribute. | |
1490 | ||
1491 | 9.1. 'job-suspended' Value | |
1492 | ||
1493 | 'job-suspended': While job processing has been suspended by the | |
1494 | Suspend-Current-Job operation, other jobs can be processed on the | |
1495 | Printer. The Job can be resumed with the Resume-Job operation, | |
1496 | which removes this value. | |
1497 | ||
1498 | 10. Use of the Printer Object to Represent IPP Printer Fan-Out and IPP | |
1499 | Printer Fan-In | |
1500 | ||
1501 | This section defines how the Printer object MAY be used to represent | |
1502 | IPP Printer Fan-Out and IPP Printer Fan-In. In Fan-Out, an IPP | |
1503 | Printer is used to represent other IPP Printer objects. In Fan-In, | |
1504 | several IPP Printer objects are used to represent another IPP Printer | |
1505 | object. | |
1506 | ||
1507 | ||
1508 | ||
1509 | ||
1510 | ||
1511 | ||
1512 | ||
1513 | ||
1514 | Kugler, et al. Standards Track [Page 27] | |
1515 | \f | |
1516 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1517 | ||
1518 | ||
1519 | 10.1. IPP Printer Fan-Out | |
1520 | ||
1521 | The IPP/1.1 Model and Semantics introduces the semantic concept of an | |
1522 | IPP Printer object that represents more than one Output Device (see | |
1523 | [RFC2911], section 2.1). This concept is called "Output Device Fan- | |
1524 | Out". However, with Fan-Out there was no way to represent the | |
1525 | individual states of the Output Devices or to perform operations on a | |
1526 | specific Output Device. This document generalizes the semantics of | |
1527 | the Printer object to represent Subordinate Fan-Out Output Devices | |
1528 | such as IPP Printer objects. This concept is called "Printer object | |
1529 | Fan-Out". A Printer object that has a Subordinate Printer object is | |
1530 | called a Non-Leaf Printer object. Thus, a Non-Leaf Printer object | |
1531 | supports one or more Subordinate Printer objects in order to | |
1532 | represent Printer object Fan-Out. A Printer object that does not | |
1533 | have any Subordinate Printer objects is called a Leaf Printer object. | |
1534 | ||
1535 | Each Non-Leaf Printer object submits jobs to its immediate | |
1536 | Subordinate Printers and otherwise controls the Subordinate Printers | |
1537 | by using IPP or other protocols. Whether pending jobs are kept in | |
1538 | the Non-Leaf Printer until a Subordinate Printer can accept them or | |
1539 | are kept in the Subordinate Printers depends on implementation and/or | |
1540 | configuration policy. Furthermore, a Subordinate Printer object MAY, | |
1541 | in turn, have Subordinate Printer objects. Thus a Printer object can | |
1542 | be both a Non-Leaf Printer and a Subordinate Printer. | |
1543 | ||
1544 | A Subordinate Printer object MUST be a conforming Printer object, so | |
1545 | it MUST support all of the REQUIRED [RFC2911] operations and | |
1546 | attributes. However, with access control, the Subordinate Printer | |
1547 | MAY be configured so that end-user clients are not permitted to | |
1548 | perform any operations (or just Get-Printer-Attributes) while one or | |
1549 | more Non-Leaf Printer object(s) are permitted to perform any | |
1550 | operation. | |
1551 | ||
1552 | 10.2. IPP Printer Fan-In | |
1553 | ||
1554 | The IPP/1.1 Model and Semantics did not preclude the semantic concept | |
1555 | of multiple IPP Printer objects that represent a single Output Device | |
1556 | (see [RFC2911], section 2.1). However, there was no way for the | |
1557 | client to determine whether there was a Fan-In configuration; nor was | |
1558 | there a way to perform operations on the Subordinate device. This | |
1559 | specification generalizes the semantics of the Printer object to | |
1560 | allow several Non-Leaf IPP Printer objects to represent a single | |
1561 | Subordinate Printer object. Thus a Non-Leaf Printer object MAY share | |
1562 | a Subordinate Printer object with one or more other Non-Leaf Printer | |
1563 | objects in order to represent IPP Printer Fan-In. | |
1564 | ||
1565 | As with Fan-Out (see section 10.1), when a Printer object is a Non- | |
1566 | Leaf Printer, it MUST NOT have an associated Output Device. As with | |
1567 | ||
1568 | ||
1569 | ||
1570 | Kugler, et al. Standards Track [Page 28] | |
1571 | \f | |
1572 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1573 | ||
1574 | ||
1575 | Fan-Out, a Leaf Printer object has one or more associated Output | |
1576 | Devices. As with Fan-Out, the Non-Leaf Printer objects submit jobs | |
1577 | to their Subordinate Printer objects and otherwise control the | |
1578 | Subordinate Printer. As with Fan-Out, whether pending jobs are kept | |
1579 | in the Non-Leaf Printers until the Subordinate Printer can accept | |
1580 | them or are kept in the Subordinate Printer depends on the | |
1581 | implementation and/or configuration policy. | |
1582 | ||
1583 | 10.3. Printer Object Attributes Used to Represent Printer Fan-Out and | |
1584 | Printer Fan-In | |
1585 | ||
1586 | The following Printer Description attributes are defined to represent | |
1587 | the relationship between Printer object(s) and their Subordinate | |
1588 | Printer object(s): | |
1589 | ||
1590 | 1. "subordinate-printers-supported" (1setOf uri) - Contains the | |
1591 | URI of the immediate Subordinate Printer object(s). | |
1592 | ||
1593 | 2. "parent-printers-supported (1setOf uri) - Contains the URI of | |
1594 | the Non-Leaf printer object(s) for which this Printer object is | |
1595 | the immediate Subordinate; i.e., this Printer's immediate | |
1596 | "parent" or "parents". | |
1597 | ||
1598 | 10.4. Subordinate Printer URI | |
1599 | ||
1600 | Each Subordinate Printer object has a URI used as the target of each | |
1601 | operation on the Subordinate Printer. The means to configure URIs | |
1602 | for Subordinate Printer objects is implementation-dependent, as are | |
1603 | all URIs. However, there are two distinct approaches: | |
1604 | ||
1605 | a. When the implementation seeks to make sure that no operation on | |
1606 | a Subordinate Printer object "sneaks by" the parent Printer | |
1607 | object (or that no Subordinate Printer is fronting for a device | |
1608 | that is not networked), the host part of the URI specifies the | |
1609 | host of the parent Printer. Then the parent Printer object can | |
1610 | easily reflect the state of the Subordinate Printer objects in | |
1611 | the parent's Printer object state and state reasons as the | |
1612 | operation passes "through" the parent Printer object. | |
1613 | ||
1614 | b. When the Subordinate Printer is networked and the | |
1615 | implementation allows operations to go directly to the | |
1616 | Subordinate Printer (with proper access control) without | |
1617 | knowledge of the parent Printer object, the host part of the | |
1618 | URI is different from the host part of the parent Printer | |
1619 | object. In this a case, the parent Printer object MAY keep its | |
1620 | "printer-state" and "printer-state-reasons" up to date, either | |
1621 | by polling the Subordinate Printer object or by subscribing to | |
1622 | events with the Subordinate Printer object (see [RFC3995] for | |
1623 | ||
1624 | ||
1625 | ||
1626 | Kugler, et al. Standards Track [Page 29] | |
1627 | \f | |
1628 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1629 | ||
1630 | ||
1631 | means to subscribe to event notification when the Subordinate | |
1632 | Printer object supports IPP notification). Alternatively, the | |
1633 | parent Printer MAY wait until its "printer-state" and | |
1634 | "printer-state-reasons" attributes are queried and then query | |
1635 | all its Subordinate Printers in order to return the correct | |
1636 | values. | |
1637 | ||
1638 | 10.5. Printer Object Attributes Used to Represent Output Device Fan-Out | |
1639 | ||
1640 | Only Leaf IPP Printer objects are allowed to have one or more | |
1641 | associated Output Devices. Each Leaf Printer object MAY support the | |
1642 | "output-devices-supported" (1setOf name(127)) to indicate the user- | |
1643 | friendly name(s) of the Output Device(s) that the Leaf Printer object | |
1644 | represents. It is RECOMMENDED that each Leaf Printer object have | |
1645 | only one associated Output Device, so that the individual Output | |
1646 | Devices can be represented completely and controlled completely by | |
1647 | clients. In other words, the Leaf Printer's "output-devices- | |
1648 | supported" attribute SHOULD have only one value. | |
1649 | ||
1650 | Non-Leaf Printer MUST NOT have associated Output Devices. However, a | |
1651 | Non-Leaf Printer SHOULD support an "output-devices-supported" (1setOf | |
1652 | name(127)) Printer Description attribute that contains all the values | |
1653 | of its immediate Subordinate Printers. As these Subordinate Printers | |
1654 | MAY be Leaf or Non-Leaf, the same rules apply to them. Thus any | |
1655 | Non-Leaf Printer SHOULD have an "output-devices-supported" (1setOf | |
1656 | name(127)) attribute that contains all the values of the Output | |
1657 | Devices associated with Leaf Printers of its complete sub-tree. | |
1658 | ||
1659 | When a configuration of Printers and Output Devices is added, moved, | |
1660 | or changed, there can be moments when the tree structure is not | |
1661 | consistent; i.e., times when a Non-Leaf Printer's "subordinate- | |
1662 | printers-supported" does not agree with the Subordinate Printer's | |
1663 | "parent-printers-supported". Therefore, the operator SHOULD first | |
1664 | Deactivate all Printers being configured in this way, update all | |
1665 | pointer attributes, and then reactivate them. A useful client tool | |
1666 | would validate a tree structure before Activating the Printers | |
1667 | involved. | |
1668 | ||
1669 | 10.6. Figures to Show All Possible Configurations | |
1670 | ||
1671 | Figures 1, 2, and 3 are taken from [RFC2911] to show the | |
1672 | configurations possible with IPP/1.0 and IPP/1.1 where all Printer | |
1673 | objects are Leaf Printer objects. The remaining figures show | |
1674 | additional configurations using Non-Leaf and Leaf Printer objects. | |
1675 | ||
1676 | ||
1677 | ||
1678 | ||
1679 | ||
1680 | ||
1681 | ||
1682 | Kugler, et al. Standards Track [Page 30] | |
1683 | \f | |
1684 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1685 | ||
1686 | ||
1687 | Legend: | |
1688 | ||
1689 | ----> indicates a network protocol with the direction of its requests | |
1690 | ||
1691 | ##### indicates a Printer object that is either | |
1692 | embedded in an Output Device, or | |
1693 | hosted in a server. | |
1694 | The Printer object might or might not be capable | |
1695 | of queuing/spooling. | |
1696 | ||
1697 | any indicates any network protocol or direct | |
1698 | connect, including IPP. | |
1699 | ||
1700 | Output Device | |
1701 | +---------------+ | |
1702 | | ########### | | |
1703 | O +--------+ | # (Leaf) # | | |
1704 | /|\ | client |------------IPP-----------------># Printer # | | |
1705 | / \ +--------+ | # Object # | | |
1706 | | ########### | | |
1707 | +---------------+ | |
1708 | ||
1709 | Figure 1. Embedded Printer Object | |
1710 | ||
1711 | ||
1712 | ########### Output Device | |
1713 | O +--------+ # (Leaf) # +---------------+ | |
1714 | /|\ | client |---IPP----># Printer #---any->| | | |
1715 | / \ +--------+ # object # | | | |
1716 | ########### +---------------+ | |
1717 | ||
1718 | Figure 2. Hosted Printer Object | |
1719 | ||
1720 | ||
1721 | +---------------+ | |
1722 | | | | |
1723 | +->| Output Device | | |
1724 | ########### any/ | | | |
1725 | O +--------+ # (Leaf) # / +---------------+ | |
1726 | /|\ | client |---IPP----># Printer #--* | |
1727 | / \ +--------+ # Object # \ +---------------+ | |
1728 | ########### any\ | | | |
1729 | +->| Output Device | | |
1730 | | | | |
1731 | +---------------+ | |
1732 | ||
1733 | Figure 3. Output Device Fan-Out | |
1734 | ||
1735 | ||
1736 | ||
1737 | ||
1738 | Kugler, et al. Standards Track [Page 31] | |
1739 | \f | |
1740 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1741 | ||
1742 | ||
1743 | ########### ########### | |
1744 | O +--------+ # Non-Leaf# # subord. # | |
1745 | /|\ | client |---IPP----># Printer #---IPP----># Printer # | |
1746 | / \ +--------+ # object # # object # | |
1747 | ########### ########### | |
1748 | ||
1749 | The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4 | |
1750 | through 6, or can be a Leaf Printer, as in Figures 1 through 3. | |
1751 | ||
1752 | Figure 4. Chained IPP Printer Objects | |
1753 | ||
1754 | ||
1755 | +------IPP--------------------->########### | |
1756 | / +---># subord. # | |
1757 | / / # Printer # | |
1758 | / ########### IPP # object # | |
1759 | O +--------+ # Non-Leaf# / ########### | |
1760 | /|\ | client |---IPP----># Printer #--* | |
1761 | / \ +--------+ # object # \ | |
1762 | \ ########### IPP ########### | |
1763 | \ \ # subord. # | |
1764 | \ +---># Printer # | |
1765 | +------IPP---------------------># object # | |
1766 | ########### | |
1767 | ||
1768 | The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4 | |
1769 | through 6, or can be a Leaf Printer, as in Figures 1 through 3. | |
1770 | ||
1771 | Figure 5. IPP Printer Object Fan-Out | |
1772 | ||
1773 | ||
1774 | ||
1775 | ||
1776 | ||
1777 | ||
1778 | ||
1779 | ||
1780 | ||
1781 | ||
1782 | ||
1783 | ||
1784 | ||
1785 | ||
1786 | ||
1787 | ||
1788 | ||
1789 | ||
1790 | ||
1791 | ||
1792 | ||
1793 | ||
1794 | Kugler, et al. Standards Track [Page 32] | |
1795 | \f | |
1796 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1797 | ||
1798 | ||
1799 | ########### | |
1800 | # Non-Leaf# | |
1801 | +---># Printer #-+ | |
1802 | / # object # \ | |
1803 | IPP ########### \ ########### | |
1804 | O +--------+ / +-IPP-># subord. # | |
1805 | /|\ | client |--+-----------IPP---------------># Printer # | |
1806 | / \ +--------+ \ +-IPP-># object # | |
1807 | IPP ########### / ########### | |
1808 | \ # Non-Leaf# / | |
1809 | +---># Printer #-+ | |
1810 | # object # | |
1811 | ########### | |
1812 | ||
1813 | The Subordinate Printer can be a Non-Leaf Printer, as in Figures 4 | |
1814 | through 6, or can be a Leaf Printer, as in Figures 1 through 3. | |
1815 | ||
1816 | Figure 6. IPP Printer Object Fan-In | |
1817 | ||
1818 | 10.7. Forwarding Requests | |
1819 | ||
1820 | This section describes the forwarding of Job and Printer requests to | |
1821 | Subordinate Printer objects. | |
1822 | ||
1823 | 10.7.1. Forwarding Requests that Affect Printer Objects | |
1824 | ||
1825 | In Printer Fan-Out, Printer Fan-In, and Chained Printers, the Non- | |
1826 | Leaf IPP Printer object MUST NOT forward the operations that affect | |
1827 | Printer objects to its Subordinate Printer objects. If a client | |
1828 | seeks to explicitly target a Subordinate Printer, the client MUST | |
1829 | specify the URI of the Subordinate Printer. The client can determine | |
1830 | the URI of any Subordinate Printers by querying the Printer's | |
1831 | "subordinate-printers-supported (1setOf uri) attribute (see section | |
1832 | 7.1). | |
1833 | ||
1834 | Table 7 lists the operations that affect Printer objects and the | |
1835 | forwarding behavior that a Non-Leaf Printer MUST exhibit to its | |
1836 | immediate Subordinate Printers. Operations that affect jobs have a | |
1837 | different forwarding rule (see section 10.7.2 and Table 8): | |
1838 | ||
1839 | ||
1840 | ||
1841 | ||
1842 | ||
1843 | ||
1844 | ||
1845 | ||
1846 | ||
1847 | ||
1848 | ||
1849 | ||
1850 | Kugler, et al. Standards Track [Page 33] | |
1851 | \f | |
1852 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1853 | ||
1854 | ||
1855 | Table 7. Forwarding Operations that Affect Printer Objects | |
1856 | ||
1857 | Printer Operation Non-Leaf Printer Action | |
1858 | --------------------------------------------------------------- | |
1859 | Printer Operations: | |
1860 | ||
1861 | Enable-Printer MUST NOT forward to any of its Subordinate | |
1862 | Printers | |
1863 | Disable-Printer MUST NOT forward to any of its Subordinate | |
1864 | Printers | |
1865 | Hold-New-Jobs MUST NOT forward to any of its Subordinate | |
1866 | Printers | |
1867 | Release-Held-New- MUST NOT forward to any of its Subordinate | |
1868 | Jobs Printers | |
1869 | Deactivate-Printer MUST NOT forward to any of its Subordinate | |
1870 | Printers | |
1871 | Activate-Printer MUST NOT forward to any of its Subordinate | |
1872 | Printers | |
1873 | Restart-Printer MUST NOT forward to any of its Subordinate | |
1874 | Printers | |
1875 | Shutdown-Printer MUST NOT forward to any of its Subordinate | |
1876 | Printers | |
1877 | Startup-Printer MUST NOT forward to any of its Subordinate | |
1878 | Printers | |
1879 | ||
1880 | IPP/1.1 Printer See [RFC2911] | |
1881 | Operations: | |
1882 | ||
1883 | Get-Printer- MUST NOT forward to any of its Subordinate | |
1884 | Attributes Printers | |
1885 | Pause-Printer MUST NOT forward to any of its Subordinate | |
1886 | Printers | |
1887 | Resume-Printer MUST NOT forward to any of its Subordinate | |
1888 | Printers | |
1889 | ||
1890 | Set Operations: See [RFC3380] | |
1891 | ||
1892 | Set-Printer- MUST NOT forward to any of its Subordinate | |
1893 | Attributes Printers | |
1894 | ||
1895 | ||
1896 | ||
1897 | ||
1898 | ||
1899 | ||
1900 | ||
1901 | ||
1902 | ||
1903 | ||
1904 | ||
1905 | ||
1906 | Kugler, et al. Standards Track [Page 34] | |
1907 | \f | |
1908 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1909 | ||
1910 | ||
1911 | 10.7.2. Forwarding Requests that Affect Jobs | |
1912 | ||
1913 | Unlike Printer Operations that only affect Printer objects (see | |
1914 | section 10.7.1), a Non-Leaf Printer object MUST forward operations | |
1915 | that directly affect jobs to the appropriate Job object(s) in one or | |
1916 | more of its immediate Subordinate Printer objects. Forwarding is | |
1917 | REQUIRED since the purpose of this Job operation is to affect the | |
1918 | indicated job, which may have been forwarded itself. This forwarding | |
1919 | MAY be immediate or queued, depending on the operation and the | |
1920 | implementation. For example, a Non-Leaf Printer object MAY | |
1921 | queue/spool jobs, feeding a job at a time to its Subordinate | |
1922 | Printer(s), or MAY forward jobs immediately to one of its Subordinate | |
1923 | Printers. In either case, the Non-Leaf Printer object forwards Job | |
1924 | Creation operations to one of its Subordinate Printers. Only the | |
1925 | time of forwarding of the Job Creation operations depends on whether | |
1926 | the policy is to queue/spool jobs in the Non-Leaf Printer or the | |
1927 | Subordinate Printer. | |
1928 | ||
1929 | When a Non-Leaf Printer object creates a Job object in its | |
1930 | Subordinate Printer, whether that Non-Leaf Printer object keeps a | |
1931 | fully formed Job object or just keeps a mapping from the "job-ids" | |
1932 | that it assigned to those assigned by its Subordinate Printer object | |
1933 | is IMPLEMENTATION-DEPENDENT. In either case, the Non-Leaf Printer | |
1934 | MUST be able to accept and carry out future Job operations that | |
1935 | specify the "job-id" that the Non-Leaf Printer assigned and returned | |
1936 | to the job submitting client. | |
1937 | ||
1938 | Table 8 lists the operations that directly affect jobs and the | |
1939 | forwarding behavior that a Non-Leaf Printer MUST exhibit to its | |
1940 | Subordinate Printers. | |
1941 | ||
1942 | ||
1943 | ||
1944 | ||
1945 | ||
1946 | ||
1947 | ||
1948 | ||
1949 | ||
1950 | ||
1951 | ||
1952 | ||
1953 | ||
1954 | ||
1955 | ||
1956 | ||
1957 | ||
1958 | ||
1959 | ||
1960 | ||
1961 | ||
1962 | Kugler, et al. Standards Track [Page 35] | |
1963 | \f | |
1964 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
1965 | ||
1966 | ||
1967 | Table 8. Forwarding Operations that Affect Jobs Objects | |
1968 | ||
1969 | Operation Non-Leaf Printer action | |
1970 | --------------------------------------------------------------- | |
1971 | Job operations: | |
1972 | ||
1973 | Reprocess-Job MUST forward to the appropriate Job in one of | |
1974 | its Subordinate Printers | |
1975 | Cancel-Current- MUST NOT forward | |
1976 | Job | |
1977 | Resume-Job MUST forward to the appropriate Job in one of | |
1978 | its Subordinate Printers | |
1979 | Promote-Job MUST forward to the appropriate Job in one of | |
1980 | its Subordinate Printers | |
1981 | ||
1982 | IPP/1.1 Printer | |
1983 | operations: | |
1984 | ||
1985 | Print-Job MUST forward immediately or queue to the | |
1986 | appropriate Subordinate Printer | |
1987 | Print-URI MUST forward immediately or queue to the | |
1988 | appropriate Subordinate Printer | |
1989 | Validate-Job MUST forward to the appropriate Subordinate | |
1990 | Printer | |
1991 | Create-Job MUST forward immediately or queue to the | |
1992 | appropriate Subordinate Printer | |
1993 | Get-Jobs MUST forward to all its Subordinate Printers | |
1994 | Purge-Jobs MUST forward to all its Subordinate Printers | |
1995 | ||
1996 | IPP/1.1 Job | |
1997 | operations: | |
1998 | ||
1999 | Send-Document MUST forward immediately or queue to the | |
2000 | appropriate Job in one of its Subordinate | |
2001 | Printers | |
2002 | Send-URI MUST forward immediately or queue to the | |
2003 | appropriate Job in one of its Subordinate | |
2004 | Printers | |
2005 | Cancel-Job MUST forward to the appropriate Job in one of | |
2006 | its Subordinate Printers | |
2007 | Get-Job- MUST forward to the appropriate Job in one of | |
2008 | Attributes its Subordinate Printers if the Non-Leaf | |
2009 | Printer doesn't know the complete status of the | |
2010 | Job object | |
2011 | Hold-Job MUST forward to the appropriate Job in one of | |
2012 | its Subordinate Printers | |
2013 | Release-Job MUST forward to the appropriate Job in one of | |
2014 | its Subordinate Printers | |
2015 | ||
2016 | ||
2017 | ||
2018 | Kugler, et al. Standards Track [Page 36] | |
2019 | \f | |
2020 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2021 | ||
2022 | ||
2023 | Restart-Job MUST forward to the appropriate Job in one of | |
2024 | its Subordinate Printers | |
2025 | ||
2026 | IPP Set operations: See [RFC3380] | |
2027 | ||
2028 | Set-Job- MUST forward to the appropriate Job in one of | |
2029 | Attributes its Subordinate Printers | |
2030 | ||
2031 | When a Printer receives a request that REQUIRES forwarding, it does | |
2032 | so on a "best efforts basis" and returns a response to its client | |
2033 | without waiting for responses from any of its Subordinate Printers. | |
2034 | Such forwarded requests could fail. | |
2035 | ||
2036 | 10.8. Additional Attributes to Help with Fan-Out | |
2037 | ||
2038 | The following operation and Job Description attributes are defined to | |
2039 | help represent Job relationships for Fan-Out and forwarding of jobs. | |
2040 | ||
2041 | 10.8.1. output-device-assigned (name(127)) Job Description Attribute - | |
2042 | from [RFC2911] | |
2043 | ||
2044 | [RFC2911] defines "output-device-assigned" as follows: "This | |
2045 | attribute identifies the Output Device to which the Printer object | |
2046 | has assigned this job. If an Output Device implements an embedded | |
2047 | Printer object, the Printer object NEED NOT set this attribute. If a | |
2048 | print server implements a Printer object, the value MAY be empty | |
2049 | (zero-length string) or not returned until the Printer object assigns | |
2050 | an Output Device to the job. This attribute is particularly useful | |
2051 | when a single Printer object supports multiple devices (so called | |
2052 | "Device Fan-Out" see [RFC2911] section 2.1)." See also section 10.1 | |
2053 | in this specification. | |
2054 | ||
2055 | 10.8.2. original-requesting-user-name (name(MAX)) Operation and Job | |
2056 | Description Attribute | |
2057 | ||
2058 | The operation attribute containing the user name of the original | |
2059 | user; i.e., corresponding to the "requesting-user-name" operation | |
2060 | attribute (see [RFC2911], section 3.2.1.1) that the original client | |
2061 | supplied to the first Printer object. The Printer copies the | |
2062 | "original-requesting-user-name" operation attribute to the | |
2063 | corresponding Job Description attribute. | |
2064 | ||
2065 | ||
2066 | ||
2067 | ||
2068 | ||
2069 | ||
2070 | ||
2071 | ||
2072 | ||
2073 | ||
2074 | Kugler, et al. Standards Track [Page 37] | |
2075 | \f | |
2076 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2077 | ||
2078 | ||
2079 | 10.8.3. requesting-user-name (name(MAX)) Operation Attribute - | |
2080 | Additional Semantics | |
2081 | ||
2082 | The IPP/1.1 "requesting-user-name" operation attribute (see [RFC2911] | |
2083 | section 3.2.1.1) is updated by each client to be itself on each hop; | |
2084 | i.e., the "requesting-user-name" represents the client forwarding the | |
2085 | request, not the original client. | |
2086 | ||
2087 | 10.8.4. job-originating-user-name (name(MAX)) Job Description Attribute | |
2088 | - Additional Semantics | |
2089 | ||
2090 | The "job-originating-user-name" Job Description attribute (see | |
2091 | [RFC2911], section 4.3.6) remains as the authenticated original user, | |
2092 | not the parent Printer's authenticated host, and is forwarded by each | |
2093 | client without changing the value. | |
2094 | ||
2095 | 11. Conformance Requirements | |
2096 | ||
2097 | The Job and Printer Administrative operations defined in this | |
2098 | document are OPTIONAL operations. However, some operations MUST be | |
2099 | implemented if others are implemented, as shown in Table 9. | |
2100 | ||
2101 | Table 9. Conformance Requirement Dependencies for Operations | |
2102 | ||
2103 | Operations REQUIRED If any of these operations are | |
2104 | supported: | |
2105 | -------------------------------------------------------------------- | |
2106 | Enable-Printer Disable-Printer | |
2107 | Disable-Printer Enable-Printer | |
2108 | Pause-Printer Resume-Printer | |
2109 | Resume-Printer Pause-Printer, | |
2110 | Pause-Printer-After-Current-Job | |
2111 | Hold-New-Jobs Release-Held-New-Jobs | |
2112 | Release-Held-New-Jobs Hold-New-Jobs | |
2113 | Activate-Printer, Deactivate-Printer | |
2114 | Disable-Printer, | |
2115 | Pause-Printer-After-Current-Job | |
2116 | Deactivate-Printer, Activate-Printer | |
2117 | Enable-Printer, | |
2118 | Resume-Printer | |
2119 | Restart-Printer none | |
2120 | Shutdown-Printer none | |
2121 | Startup-Printer none | |
2122 | Reprocess-Job none | |
2123 | Cancel-Current-Job none | |
2124 | Resume-Job Suspend-Current-Job | |
2125 | Suspend-Current-Job Resume-Job | |
2126 | ||
2127 | ||
2128 | ||
2129 | ||
2130 | Kugler, et al. Standards Track [Page 38] | |
2131 | \f | |
2132 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2133 | ||
2134 | ||
2135 | Promote-Job none | |
2136 | Schedule-Job-After Promote-Job | |
2137 | ||
2138 | Tables 10 and 11 list the "printer-state-reasons" and "job-state- | |
2139 | reasons" values that are REQUIRED if the indicated operations are | |
2140 | supported. | |
2141 | ||
2142 | Table 10. Conformance Requirement Dependencies for | |
2143 | "printer-state-reasons" Values | |
2144 | ||
2145 | "printer-state- Conformance If any of the following Printer | |
2146 | reasons" values: Requirement Operations are supported: | |
2147 | -------------------------------------------------------------------- | |
2148 | 'paused' REQUIRED Pause-Printer, | |
2149 | Pause-Printer-After-Current-Job, | |
2150 | or Deactivate-Printer | |
2151 | 'hold-new-jobs' REQUIRED Hold-New-Jobs | |
2152 | 'moving-to-paused' OPTIONAL Pause-Printer, | |
2153 | Pause-Printer-After-Current-Job, | |
2154 | Deactivate-Printer | |
2155 | 'deactivated' REQUIRED Deactivate-Printer | |
2156 | ||
2157 | ||
2158 | Table 11. Conformance Requirement Dependencies for "job-state- | |
2159 | reasons" Values | |
2160 | ||
2161 | "job-state-reasons" Conformance If any of the following Job | |
2162 | values: Requirement operations are supported: | |
2163 | ||
2164 | 'job-suspended' REQUIRED Suspend-Current-Job | |
2165 | 'printer-stopped' REQUIRED Always REQUIRED | |
2166 | ||
2167 | 12. Normative References | |
2168 | ||
2169 | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |
2170 | Requirement Levels", BCP 14, RFC 2119, March 1997. | |
2171 | ||
2172 | [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | |
2173 | RFC 2246, January 1999. | |
2174 | ||
2175 | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |
2176 | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |
2177 | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |
2178 | ||
2179 | [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R., and J. | |
2180 | Wenn, "Internet Printing Protocol/1.1: Encoding and | |
2181 | Transport", RFC 2910, September 2000. | |
2182 | ||
2183 | ||
2184 | ||
2185 | ||
2186 | Kugler, et al. Standards Track [Page 39] | |
2187 | \f | |
2188 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2189 | ||
2190 | ||
2191 | [RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S., and P. | |
2192 | Powell, "Internet Printing Protocol/1.1: Model and | |
2193 | Semantics", RFC 2911, September 2000. | |
2194 | ||
2195 | [RFC3380] Hastings, T., Herriot, R., Kugler, C., and H. Lewis, | |
2196 | "Internet Printing Protocol (IPP): Job and Printer Set | |
2197 | Operations", RFC 3380, September 2002. | |
2198 | ||
2199 | 13. Informative References | |
2200 | ||
2201 | [RFC2567] Wright, F., "Design Goals for an Internet Printing | |
2202 | Protocol", RFC 2567, April 1999. | |
2203 | ||
2204 | [RFC2568] Zilles, S., "Rationale for the Structure of the Model and | |
2205 | Protocol for the Internet Printing Protocol", RFC 2568, | |
2206 | April 1999. | |
2207 | ||
2208 | [RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J. Martin, | |
2209 | "Mapping between LPD and IPP Protocols", RFC 2569, April | |
2210 | 1999. | |
2211 | ||
2212 | [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. | |
2213 | Holst, "Internet Printing Protocol/1.1: Implementor's | |
2214 | Guide", RFC 3196, November 2001. | |
2215 | ||
2216 | [RFC3239] Kugler, C., Lewis, H., and T. Hastings, "Internet Printing | |
2217 | Protocol (IPP): Requirements for Job, Printer, and Device | |
2218 | Administrative Operations", RFC 3239, February 2002. | |
2219 | ||
2220 | [RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol | |
2221 | (IPP): Event Notifications and Subscriptions", RFC 3995, | |
2222 | February 2005. | |
2223 | ||
2224 | 14. IANA Considerations | |
2225 | ||
2226 | This section contains the registration information that IANA added to | |
2227 | the IPP Registry according to the procedures defined in [RFC2911], | |
2228 | section 6, to cover the definitions in this document. The resulting | |
2229 | registrations have been published as additions to the | |
2230 | http://www.iana.org/assignments/ipp-registrations file. | |
2231 | ||
2232 | ||
2233 | ||
2234 | ||
2235 | ||
2236 | ||
2237 | ||
2238 | ||
2239 | ||
2240 | ||
2241 | ||
2242 | Kugler, et al. Standards Track [Page 40] | |
2243 | \f | |
2244 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2245 | ||
2246 | ||
2247 | 14.1. Attribute Registrations | |
2248 | ||
2249 | The following table lists all the attributes defined in this | |
2250 | document. These have been registered according to the procedures in | |
2251 | [RFC2911], section 6.2. | |
2252 | ||
2253 | Name Reference Section | |
2254 | -------------------------------------- --------- ------- | |
2255 | Job Description attributes: | |
2256 | original-requesting-user-name (name(MAX)) [RFC3998] 10.8.2 | |
2257 | ||
2258 | Printer Description attributes: | |
2259 | subordinate-printers-supported (1setOf uri) [RFC3998] 7.1 | |
2260 | parent-printers-supported (1setOf uri) [RFC3998] 7.2 | |
2261 | ||
2262 | Operation attributes: | |
2263 | original-requesting-user-name (name(MAX)) [RFC3998] 10.8.2 | |
2264 | ||
2265 | 14.2. Attribute Value Registrations | |
2266 | ||
2267 | This section lists the additional values defined in this document for | |
2268 | existing attributes. | |
2269 | ||
2270 | Attribute | |
2271 | Value Reference Section | |
2272 | --------------------- --------- ------- | |
2273 | job-state-reasons (1setOf type2 keyword) | |
2274 | job-suspended [RFC3998] 9.1 | |
2275 | ||
2276 | ||
2277 | printer-state-reasons (1setOf type2 keyword) | |
2278 | hold-new-jobs [RFC3998] 8.1 | |
2279 | deactivated [RFC3998] 8.2 | |
2280 | ||
2281 | 14.3. Additional Enum Attribute Value Registrations | |
2282 | ||
2283 | The following table lists all the new enum attribute values defined | |
2284 | in this document. These have been registered according to the | |
2285 | procedures in [RFC2911], section 6.1. | |
2286 | ||
2287 | ||
2288 | ||
2289 | ||
2290 | ||
2291 | ||
2292 | ||
2293 | ||
2294 | ||
2295 | ||
2296 | ||
2297 | ||
2298 | Kugler, et al. Standards Track [Page 41] | |
2299 | \f | |
2300 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2301 | ||
2302 | ||
2303 | Attribute (attribute syntax) | |
2304 | Value Name Reference Section | |
2305 | ------- -------------------- --------- ------- | |
2306 | operations-supported (1setOf type2 enum) [RFC2911] 4.4.1 | |
2307 | 0x0022 Enable-Printer [RFC3998] 3 | |
2308 | 0x0023 Disable-Printer [RFC3998] 3 | |
2309 | 0x0024 Pause-Printer-After-Current-Job [RFC3998] 3 | |
2310 | 0x0025 Hold-New-Jobs [RFC3998] 3 | |
2311 | 0x0026 Release-Held-New-Jobs [RFC3998] 3 | |
2312 | 0x0027 Deactivate-Printer [RFC3998] 3 | |
2313 | 0x0028 Activate-Printer [RFC3998] 3 | |
2314 | 0x0029 Restart-Printer [RFC3998] 3 | |
2315 | 0x002A Shutdown-Printer [RFC3998] 3 | |
2316 | 0x002B Startup-Printer [RFC3998] 3 | |
2317 | 0x002C Reprocess-Job [RFC3998] 4 | |
2318 | 0x002D Cancel-Current-Job [RFC3998] 4 | |
2319 | 0x002E Suspend-Current-Job [RFC3998] 4 | |
2320 | 0x002F Resume-Job [RFC3998] 4 | |
2321 | 0x0030 Promote-Job [RFC3998] 4 | |
2322 | 0x0031 Schedule-Job-After [RFC3998] 4 | |
2323 | ||
2324 | 14.4. Operation Registrations | |
2325 | ||
2326 | The following table lists all the operations defined in this | |
2327 | document. These have been registered according to the procedures in | |
2328 | [RFC2911], section 6.4. | |
2329 | ||
2330 | Name Reference Section | |
2331 | ----------------------------- --------- ------- | |
2332 | Activate-Printer [RFC3998] 3.4.2 | |
2333 | Cancel-Current-Job [RFC3998] 4.2 | |
2334 | Deactivate-Printer [RFC3998] 3.4.1 | |
2335 | Disable-Printer [RFC3998] 3.1.1 | |
2336 | Enable-Printer [RFC3998] 3.1.2 | |
2337 | Hold-New-Jobs [RFC3998] 3.3.1 | |
2338 | Pause-Printer-After-Current-Job [RFC3998] 3.2.1 | |
2339 | Promote-Job [RFC3998] 4.4.1 | |
2340 | Release-Held-New-Jobs [RFC3998] 3.3.2 | |
2341 | Reprocess-Job [RFC3998] 4.1 | |
2342 | Restart-Printer [RFC3998] 3.5.1 | |
2343 | Resume-Job [RFC3998] 4.3.2 | |
2344 | Schedule-Job-After [RFC3998] 4.4.2 | |
2345 | Shutdown-Printer [RFC3998] 3.5.2 | |
2346 | Startup-Printer [RFC3998] 3.5.3 | |
2347 | Suspend-Current-Job [RFC3998] 4.3.1 | |
2348 | ||
2349 | ||
2350 | ||
2351 | ||
2352 | ||
2353 | ||
2354 | Kugler, et al. Standards Track [Page 42] | |
2355 | \f | |
2356 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2357 | ||
2358 | ||
2359 | 14.5. Status Code Registrations | |
2360 | ||
2361 | The following table lists the status code defined in this document. | |
2362 | This has been registered according to the procedures in [RFC2911], | |
2363 | section 6.6. | |
2364 | ||
2365 | Value Name Reference Section | |
2366 | ------ ------------------------ --------- ------- | |
2367 | 0x0000:0x00FF - "successful" | |
2368 | none at this time | |
2369 | ||
2370 | 0x0100:0x01FF - "informational" | |
2371 | none at this time | |
2372 | ||
2373 | 0x0300:0x03FF - "redirection" See RFC 2911 Errata | |
2374 | none at this time | |
2375 | ||
2376 | 0x0400:0x04FF - "client-error" | |
2377 | none at this time | |
2378 | ||
2379 | 0x0500:0x05FF - "server-error" | |
2380 | 0x050A server-error-printer-is-deactivated [RFC3998] 5.1 | |
2381 | ||
2382 | 15. Internationalization Considerations | |
2383 | ||
2384 | This document has the same localization considerations as [RFC2911]. | |
2385 | ||
2386 | 16. Security Considerations | |
2387 | ||
2388 | The IPP Model and Semantics document [RFC2911] discusses high level | |
2389 | security requirements (Client Authentication, Server Authentication, | |
2390 | and Operation Privacy). Client Authentication is the mechanism by | |
2391 | which the client proves its identity to the server in a secure | |
2392 | manner. Server Authentication is the mechanism by which the server | |
2393 | proves its identity to the client in a secure manner. Operation | |
2394 | Privacy is defined as a mechanism for protecting operations from | |
2395 | eavesdropping. | |
2396 | ||
2397 | Printer operations defined in this specification (see section 3), as | |
2398 | well as Pause-Printer, Resume-Printer, and Purge-Job (defined in | |
2399 | [RFC2911]) are intended for use by an operator and/or administrator. | |
2400 | Job operations defined in this specification (see section 4) and | |
2401 | Cancel-Job, Hold-Job, and Release-Job (defined in [RFC2911]) are | |
2402 | intended for use by the job owner, operator, or administrator of the | |
2403 | Printer object. These operator and administrator operations affect | |
2404 | service for all users. | |
2405 | ||
2406 | ||
2407 | ||
2408 | ||
2409 | ||
2410 | Kugler, et al. Standards Track [Page 43] | |
2411 | \f | |
2412 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2413 | ||
2414 | ||
2415 | Inappropriate use of an administrative operation by an | |
2416 | unauthenticated end user can affect the quality of service for all | |
2417 | users. Therefore, IPP Printer implementations MUST support both | |
2418 | successful certificate-based TLS [RFC2246] client authentication and | |
2419 | successful operator/administrator authorization (see [RFC2911], | |
2420 | sections 5.2.7 and 8, and [RFC2910]) to perform the administrative | |
2421 | operations defined in this document. [RFC2910] requires the IPP | |
2422 | Printer to support the minimum cipher suite specified for TLS/1.0. | |
2423 | The means for authorizing an operator or administrator of the Printer | |
2424 | object are outside the scope of this specification, RFC 2910, and RFC | |
2425 | 2911. | |
2426 | ||
2427 | The use of TLS and Client Authentication solves the Denial of | |
2428 | Service, Man in the Middle, and Masquerading security threats. | |
2429 | ||
2430 | 17. Summary of Base IPP Documents | |
2431 | ||
2432 | The base set of IPP documents includes the following: | |
2433 | ||
2434 | Design Goals for an Internet Printing Protocol [RFC2567] | |
2435 | Rationale for the Structure and Model and Protocol for the | |
2436 | Internet Printing Protocol [RFC2568] | |
2437 | Internet Printing Protocol/1.1: Model and Semantics [RFC2911] | |
2438 | Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] | |
2439 | Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] | |
2440 | Mapping between LPD and IPP Protocols [RFC2569] | |
2441 | ||
2442 | "Design Goals for an Internet Printing Protocol" takes a broad look | |
2443 | at distributed printing functionality, and it enumerates real-life | |
2444 | scenarios that help clarify the features that have to be included in | |
2445 | a printing protocol for the Internet. It identifies requirements for | |
2446 | three types of users: end users, operators, and administrators. It | |
2447 | calls out a subset of end user requirements that are satisfied in | |
2448 | IPP/1.0. A few OPTIONAL operator operations have been added to | |
2449 | IPP/1.1. | |
2450 | ||
2451 | "Rationale for the Structure and Model and Protocol for the Internet | |
2452 | Printing Protocol" describes IPP from a high level view, defines a | |
2453 | roadmap for the various documents that form the suite of IPP | |
2454 | specification documents, and gives background and rationale for the | |
2455 | IETF working group's major decisions. | |
2456 | ||
2457 | "Internet Printing Protocol/1.1: Model and Semantics" describes a | |
2458 | simplified model with abstract objects, their attributes, and their | |
2459 | operations that are independent of encoding and transport. It | |
2460 | introduces a Printer and a Job object. The Job object optionally | |
2461 | supports multiple documents per Job. It also addresses security, | |
2462 | internationalization, and directory issues. | |
2463 | ||
2464 | ||
2465 | ||
2466 | Kugler, et al. Standards Track [Page 44] | |
2467 | \f | |
2468 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2469 | ||
2470 | ||
2471 | "Internet Printing Protocol/1.1: Encoding and Transport" is a formal | |
2472 | mapping of the abstract operations and attributes defined in the | |
2473 | model document onto HTTP/1.1 [RFC2616]. It defines the encoding | |
2474 | rules for a new Internet MIME media type called "application/ipp". | |
2475 | This document also defines the rules for transporting over HTTP a | |
2476 | message body whose Content-Type is "application/ipp". This document | |
2477 | defines the 'ippget' scheme for identifying IPP printers and jobs. | |
2478 | ||
2479 | "Internet Printing Protocol/1.1: Implementer's Guide" gives insight | |
2480 | and advice to implementers of IPP clients and IPP objects. It is | |
2481 | intended to help them understand IPP/1.1 and some of the | |
2482 | considerations that may assist them in the design of their client | |
2483 | and/or IPP object implementations. For example, a typical order of | |
2484 | processing requests is given, including error checking. Motivation | |
2485 | for some of the specification decisions is also included. | |
2486 | ||
2487 | "Mapping between LPD and IPP Protocols" gives some advice to | |
2488 | implementers of gateways between IPP and LPD (Line Printer Daemon) | |
2489 | implementations. | |
2490 | ||
2491 | Authors' Addresses | |
2492 | ||
2493 | Carl Kugler | |
2494 | IBM Corporation, 003G | |
2495 | 6300 Diagonal Hwy | |
2496 | Boulder, CO 80301 | |
2497 | ||
2498 | Phone: (303) 924-5060 | |
2499 | EMail: kugler@us.ibm.com | |
2500 | ||
2501 | ||
2502 | Tom Hastings, editor | |
2503 | Xerox Corporation | |
2504 | 701 S Aviation Blvd. ESAE 242 | |
2505 | El Segundo, CA 90245 | |
2506 | ||
2507 | Phone: 310-333-6413 | |
2508 | Fax: 310-333-6342 | |
2509 | EMail: hastings@cp10.es.xerox.com | |
2510 | ||
2511 | ||
2512 | Harry Lewis | |
2513 | IBM Corporation | |
2514 | 6300 Diagonal Hwy | |
2515 | Boulder, CO 80301 | |
2516 | ||
2517 | Phone: (303) 924-5337 | |
2518 | EMail: harryl@us.ibm.com | |
2519 | ||
2520 | ||
2521 | ||
2522 | Kugler, et al. Standards Track [Page 45] | |
2523 | \f | |
2524 | RFC 3998 IPP: Job and Printer Operations March 2005 | |
2525 | ||
2526 | ||
2527 | Full Copyright Statement | |
2528 | ||
2529 | Copyright (C) The Internet Society (2005). | |
2530 | ||
2531 | This document is subject to the rights, licenses and restrictions | |
2532 | contained in BCP 78, and except as set forth therein, the authors | |
2533 | retain all their rights. | |
2534 | ||
2535 | This document and the information contained herein are provided on an | |
2536 | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |
2537 | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |
2538 | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |
2539 | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |
2540 | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |
2541 | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |
2542 | ||
2543 | Intellectual Property | |
2544 | ||
2545 | The IETF takes no position regarding the validity or scope of any | |
2546 | Intellectual Property Rights or other rights that might be claimed to | |
2547 | pertain to the implementation or use of the technology described in | |
2548 | this document or the extent to which any license under such rights | |
2549 | might or might not be available; nor does it represent that it has | |
2550 | made any independent effort to identify any such rights. Information | |
2551 | on the procedures with respect to rights in RFC documents can be | |
2552 | found in BCP 78 and BCP 79. | |
2553 | ||
2554 | Copies of IPR disclosures made to the IETF Secretariat and any | |
2555 | assurances of licenses to be made available, or the result of an | |
2556 | attempt made to obtain a general license or permission for the use of | |
2557 | such proprietary rights by implementers or users of this | |
2558 | specification can be obtained from the IETF on-line IPR repository at | |
2559 | http://www.ietf.org/ipr. | |
2560 | ||
2561 | The IETF invites any interested party to bring to its attention any | |
2562 | copyrights, patents or patent applications, or other proprietary | |
2563 | rights that may cover technology that may be required to implement | |
2564 | this standard. Please address the information to the IETF at ietf- | |
2565 | ipr@ietf.org. | |
2566 | ||
2567 | Acknowledgement | |
2568 | ||
2569 | Funding for the RFC Editor function is currently provided by the | |
2570 | Internet Society. | |
2571 | ||
2572 | ||
2573 | ||
2574 | ||
2575 | ||
2576 | ||
2577 | ||
2578 | Kugler, et al. Standards Track [Page 46] | |
2579 | \f |