home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-ipp-lpd-ipp-map-01.txt < prev    next >
Text File  |  1997-08-04  |  50KB  |  1,282 lines

  1.  
  2.  
  3. INTERNET-DRAFT
  4.  
  5.  
  6.                                                  Robert Herriot (editor)
  7.                                                   Sun Microsystems, Inc.
  8.                                                             Tom Hastings
  9.                                                        Xerox Corporation
  10.                                                              Norm Jacobs
  11.                                                   Sun Microsystems, Inc.
  12.                                                               Jay Martin
  13.                                                         Underscore, Inc.
  14.                                                            July 30, 1997
  15.  
  16.                  Mapping between LPD and IPP Protocols
  17.                   <draft-ietf-ipp-lpd-ipp-map-01.txt>
  18.                           Expires Jan 30, 1998
  19.  
  20.  
  21. Status of this Memo
  22.  
  23. This document is an Internet-Draft.  Internet-Drafts are working
  24. documents of the Internet Engineering Task Force (IETF), its areas, and
  25. its working groups.  Note that other groups may also distribute working
  26. documents as Internet-Drafts.
  27.  
  28.      Internet-Drafts are draft documents valid for a maximum of six
  29.      months and may be updated, replaced, or obsoleted by other
  30.      documents at any time.  It is inappropriate to use Internet-Drafts
  31.      as reference material or to cite them other than as "work in
  32.      progress."
  33.  
  34.      To learn the current status of any Internet-Draft, please check the
  35.      "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  36.      Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  37.      munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  38.      ftp.isi.edu (US West Coast).
  39.  
  40.                                 Abstract
  41.  
  42.      This Internet-Draft specifies the mapping between (1) the commands
  43.      and operands of the "Line Printer Daemon (LPD) Protocol" specified
  44.      in RFC 1179 and (2) the operations and parameters of the Internet
  45.      Printing Protocol (IPP).  One of the purposes of this document is
  46.      to compare the functionality of the two protocols.  Another purpose
  47.      is to facilitate implementation of gateways between LPD and IPP.
  48.  
  49.      WARNING:  RFC 1179 was not on standards track.  While RFC 1179 was
  50.      intended to record existing practice, it fell short in some areas.
  51.      However, this specification maps between (1) the actual current
  52.      practice of RFC 1179 and (2) IPP.  This document does not attempt
  53.      to map the numerous divergent extensions to the LPD protocol that
  54.      have been made by many implementers.
  55.  
  56.  
  57.  
  58.  
  59.  
  60. Herriot, Hastings,           July 30, 1997,                     [Page 1]
  61. Jacobs, Martin          Expires January 30, 1998
  62.  
  63.  
  64. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  65.  
  66.  
  67.  
  68.                            TABLE OF CONTENTS
  69.  
  70. 1. Introduction........................................................3
  71. 2. Terminology.........................................................3
  72. 3. Mapping from LPD Commands to IPP Operations.........................4
  73.  3.1 Print any waiting jobs ...........................................4
  74.  3.2 Receive a printer job ............................................4
  75.    3.2.1 Abort job ....................................................5
  76.    3.2.2 Receive control file .........................................6
  77.    3.2.3 Receive data file ............................................6
  78.  3.3 Send queue state (short) .........................................6
  79.  3.4 Send queue state (long) ..........................................8
  80.  3.5 Remove jobs ......................................................9
  81. 4. Mapping of LPD Control File Lines to IPP Parameters................10
  82.  4.1 Required Job Functions ..........................................10
  83.  4.2 Optional Job Functions ..........................................11
  84.  4.3 Required Document Functions .....................................12
  85.  4.4 Recommended Document Functions ..................................13
  86. 5. Mapping from IPP operations to LPD commands........................13
  87.  5.1 Get-Operations ..................................................13
  88.  5.2 Print-Job .......................................................13
  89.  5.3 Print-URI .......................................................14
  90.  5.4 Validate-Job ....................................................15
  91.  5.5 Create-Job ......................................................15
  92.  5.6 Send-Document ...................................................15
  93.  5.7 Send-URI ........................................................15
  94.  5.8 Cancel-Job ......................................................15
  95.  5.9 Get-Attributes ..................................................16
  96.  5.10 Get-Jobs .......................................................17
  97. 6. Mapping of IPP Parameters to LPD Control File Lines................17
  98.  6.1 Required Job Functions ..........................................17
  99.  6.2 Optional Job Functions ..........................................18
  100.  6.3 Required Document Functions .....................................18
  101. 7. References.........................................................19
  102. 8. Author's Addresses.................................................19
  103. 9. Appendix A: ABNF Syntax for response of Send-queue-state (short)...20
  104. 10. Appendix B: ABNF Syntax for response of Send-queue-state (long)...20
  105. 11. Appendix C: Unsupported LPD functions.............................21
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121. Herriot, Hastings,           July 30, 1997,                     [Page 2]
  122. Jacobs, Martin          Expires January 30, 1998
  123.  
  124.  
  125. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  126.  
  127.  
  128.                Mapping between the LPD and IPP Protocols
  129.  
  130.  
  131. 1. Introduction
  132.  
  133. The reader of this specification is expected to be familiar with the IPP
  134. Model and Semantics specification [1], the IPP Protocol specification
  135. [2], and the Line Printer Daemon (LPD) protocol specification [3] as
  136. described in RFC 1179.
  137.  
  138. RFC 1179 was written in 1990 in an attempt to document existing LPD
  139. protocol implementations.  Since then, a number of undocumented
  140. extensions have been made by vendors to support functionality specific
  141. to their printing solutions.  All of these extensions consist of
  142. additional control file commands.  This document does not address any of
  143. these vendor extensions.  Rather it addresses existing practice within
  144. the context of the features described by RFC 1179.  Deviations of
  145. existing practice from RFC 1179 are so indicated.
  146.  
  147. Other LPD control file commands in RFC 1179 are obsolete. They are
  148. intended to work on "text" only formats and are inappropriate for many
  149. contemporary document formats that completely specify each page. This
  150. document does not address the support of these obsolete features.
  151.  
  152. In the area of document formats, also known as page description
  153. languages (PDL), RFC 1179 defines a fixed set with no capability for
  154. extension.  Consequently, some new PDL's are not supported, and some of
  155. those that are supported are sufficiently unimportant now that they have
  156. not been registered for use with the Printer MIB[4] and IPP[1] [2],
  157. though they could be registered if desired.  See the Printer MIB
  158. specification [4] and/or the IPP Model specification [1] for
  159. instructions for registration of document-formats with IANA.  IANA lists
  160. the registered document-formats as "printer languages".
  161.  
  162. This document addresses the protocol mapping for both directions:
  163. mapping of the LPD protocol to the IPP protocol and mapping of the IPP
  164. protocol to the LPD protocol. The former is called the "LPD-to-IPP
  165. mapper" and the latter is called the "IPP-to-LPD mapper".
  166.  
  167.  
  168. 2. Terminology
  169.  
  170. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  171. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and  "OPTIONAL" in this
  172. document are to be interpreted as described in RFC 2119 [6].
  173.  
  174. RFC 1179 uses the word "command" in two contexts: for over-the-wire
  175. operations and for command file functions. This document SHALL use the
  176. word "command" for the former and the phrase "functions" for the latter.
  177. The syntax of the LPD commands is given using ABNF [6].
  178.  
  179. The following tokens are used in order to make the syntax more readable:
  180.  
  181.     LF stands for %x0A (linefeed)
  182. Herriot, Hastings,           July 30, 1997,                     [Page 3]
  183. Jacobs, Martin          Expires January 30, 1998
  184.  
  185.  
  186. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  187.  
  188.  
  189.     SP stands for %x20.  (space)
  190.     DIGIT stands for %x30-39 ("0" to "9")
  191.  
  192. 3. Mapping from LPD Commands to IPP Operations
  193.  
  194. This section describes the mapping from LPD commands  to IPP operations.
  195. Each of the following sub-sections appear as sub-sections of section 5
  196. of RFC 1179.
  197.  
  198. The following table summarizes the IPP operation that the mapper uses
  199. when it receives an LPD command. Each section below gives more detail.
  200.  
  201. LPD command                IPP operation
  202.  
  203. print-any-waiting-jobs     ignore
  204. receive-a-printer-job      Print-Job or Create-Job/Send-Document
  205. send queue state           Get-Attributes (printer) and Get-Jobs
  206. (short or long)
  207. remove-jobs                Cancel-Job
  208.  
  209. 3.1 Print any waiting jobs
  210.  
  211. Command syntax:
  212.  
  213.   print-waiting-jobs = %x01 printer-name LF
  214.  
  215. This command causes the LPD daemon check its queue and print any waiting
  216. jobs. An IPP printer handles waiting jobs without such a nudge.
  217.  
  218. If the  mapper receives this LPD command, it SHALL ignore it and send no
  219. IPP operation.
  220.  
  221.  
  222. 3.2 Receive a printer job
  223.  
  224. Command syntax:
  225.  
  226.   receive-job = %x02 printer-name LF
  227.  
  228. The control file and data files mentioned in the following paragraphs
  229. are received via LPD sub-commands that follow this command. Their
  230. mapping to IPP commands and attributes is described later in this
  231. section.
  232.  
  233. The mapper maps the 'Receive a printer job' command to either:
  234.  
  235.   .  the Print-Job operation which includes a single data file or
  236.   .  the  Create-Job  operation   followed  by  one   Send-Document
  237.      operation for each data file.
  238.  
  239. If the IPP printer supports both Create-Job and Send-Document, and if a
  240. job consists of:
  241.  
  242.  
  243. Herriot, Hastings,           July 30, 1997,                     [Page 4]
  244. Jacobs, Martin          Expires January 30, 1998
  245.  
  246.  
  247. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  248.  
  249.  
  250.   .  a single  data  file,  the  mapper  SHOULD  use  the  PrintJob
  251.      operation,  but  MAY  use  the  Create-Job  and  Send-Document
  252.      operations.
  253.   .  more than  one data  file, the  mapper  SHALL use  Create  Job
  254.      followed by one Send-Document for each received LPD data file.
  255.  
  256. If the IPP printer does not support both Create-Job and Send-Document,
  257. and if a job consists of:
  258.  
  259.   .  a  single  data  file,  the  mapper  SHALL  use  the  PrintJob
  260.      operation.
  261.   .  more than one data file, the mapper SHALL submit each received
  262.      LPD data  file  as  a separate  Print-Job  operation  (thereby
  263.      converting a single LPD job into multiple IPP jobs).
  264.  
  265. If the mapper uses Create-Job and Send-Document, it MUST send the
  266. Create-Job operation before it sends any Send-Document operations
  267. whether the LPD control file, which supplies attributes for Create-Job,
  268. arrives before or after all LPD data files.
  269.  
  270. NOTE:  This specification does not specify how the mapper maps: the LPD
  271. Printer-name operand to the IPP "printer-uri" parameter.
  272.  
  273. The following 3 sub-sections gives further details about the mapping
  274. from  LPD receive-a-printer-job sub-commands.  Each of the following
  275. sub-sections appear as sub-sections of section 6 of RFC 1179.
  276.  
  277. ISSUE: the mapper needs to maintain information such as the mapping of
  278. each job-number  to its corresponding job-URI.  It would be nice for IPP
  279. to support an "scratch-pad" attribute for the mapper to encode such
  280. information. Then it  wouldn't have to maintain this information
  281. separately.
  282.  
  283.  
  284. 3.2.1 Abort job
  285.  
  286. Sub-command syntax:
  287.  
  288.   abort-job = %x1 LF
  289.  
  290. This sub-command of receive-a-printer-job is intended to abort any job
  291. transfer in process.
  292.  
  293. If the mapper receives this sub-command, it SHALL cancel the job that it
  294. is in the process of transmitting.
  295.  
  296. If the mapper is in the process of sending a Print-Job or Create-Job
  297. operation, it terminates the job either by closing the connection, or
  298. performing the Cancel-Job operation with the job-uri that it received
  299. from the Print-Job or Create-Job operation.
  300.  
  301. NOTE: This sub-command is implied if at any time the connection between
  302. the LPD client and server is terminated before an entire print job has
  303. been transferred via an LPD Receive-a-printer-job request.
  304. Herriot, Hastings,           July 30, 1997,                     [Page 5]
  305. Jacobs, Martin          Expires January 30, 1998
  306.  
  307.  
  308. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  309.  
  310.  
  311. 3.2.2 Receive control file
  312.  
  313. Sub-command syntax:
  314.  
  315.   receive-control-file = %x2 number-of-bytes SP name-of-control-file LF
  316.   number-of-bytes = 1*DIGIT
  317.   name-of-control-file = "cfA" job-number client-host-name
  318.                           ; e.g. "cfA123woden"
  319.   job-number = 3DIGIT
  320.   client-host-name = <a host name>
  321.  
  322. This sub-command is roughly equivalent to the IPP Create-Job operation.
  323.  
  324. The mapper SHALL use the contents of the received LPD control file to
  325. create IPP parameter and attribute values to transmit with the Print-Job
  326. or Create-Job operation.
  327.  
  328.  
  329. 3.2.3 Receive data file
  330.  
  331. Sub-command syntax:  %x3 number-of-bytes-in-data-file Name-of-data-file
  332.  
  333.   receive-data-file = %x03 number-of-bytes SP name-of-data-file LF
  334.   number-of-bytes = 1*DIGIT
  335.   name-of-data-file = "df" letter job-number client-host-name
  336.               ; e.g. "dfA123woden for the first file
  337.   letter = %x41-5A /  %x61-7A    ;  "A" to "Z", "a" to "z" 
  338.                                  ;  first file is "A",
  339.                                  ; second "B", and  52nd file is "z"
  340.   job-number = 3DIGIT
  341.   client-host-name = <a host name>
  342.  
  343. This sub-command is roughly equivalent to the IPP Send-Document
  344. operation.
  345.  
  346. The mapper SHALL use the contents of the received LPD data file as the
  347. data to transmit with the IPP Print-Job or Send-Document operation.
  348.  
  349. Although  RFC-1179 alludes to a method for passing an unspecified
  350. length data file by using an octet-count of zero, no implementations
  351. support this feature.. The mapper SHALL reject a job that has a value of
  352. 0 in the number-of-bytes field.
  353.  
  354.  
  355. 3.3 Send queue state (short)
  356.  
  357. Command syntax:
  358.  
  359.   send-queue-short  = %x03 printer-name *(SP(user-name / job-number)) LF
  360.  
  361. The mapper's response to this command includes information about the
  362. printer and its jobs. RFC 1179 specifies neither the information nor the
  363. format of its response. This document requires the mapper to follow
  364. existing practice as specified in this document.
  365. Herriot, Hastings,           July 30, 1997,                     [Page 6]
  366. Jacobs, Martin          Expires January 30, 1998
  367.  
  368.  
  369. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  370.  
  371.  
  372. The mapper SHALL produce a response in the following format which
  373. consists of a printer-status line optionally followed by a heading line,
  374. and a list of jobs. This format is defined by examples below. Appendix A
  375. contains the ABNF syntax.
  376.  
  377. For an printer with no jobs, the response starts in column 1 and is:
  378.  
  379. no entries
  380.  
  381. For a printer with jobs, an example of the response is:
  382.  
  383. killtree is ready and printing
  384. Rank   Owner      Job          Files             Total Size
  385. active fred       123          stuff             1204 bytes
  386. 1st    smith      124          resume, foo       34576 bytes
  387. 2nd    fred       125          more              99 bytes
  388. 3rd    mary       126          mydoc             378 bytes
  389. 4th    jones      127          statistics.ps     4567 bytes
  390. 5th    fred       128          data.txt          9 bytes
  391.  
  392. The column numbers of above headings and job entries are:
  393.  
  394. |      |          |            |                 |
  395. 01     08         19           35                63
  396.  
  397. The mapper SHALL produce each field above from the following IPP
  398. attribute:
  399.  
  400.    LPD field IPP attribute           special conversion details
  401.  
  402.    printer-  printer-state and       For a printer-state of idle or
  403.    status    printer-state-reasons   processing, the mapper SHALL use
  404.                                      the formats above.  For stopped,
  405.                                      the mapper SHALL use printer-
  406.                                      state-reasons to produce an
  407.                                      unspecified format for the error.
  408.    rank      number-of-              the mapper SHALL the format above
  409.              intervening-jobs
  410.    owner     job-originating-user    unspecified conversion; job-
  411.                                      originating-user may be the
  412.                                      mapper's user-name
  413.    job       job-uri                 unspecified conversion
  414.    files     document-name           the mapper shall create a comma
  415.                                      separated list of the document-
  416.                                      names and then truncate this list
  417.                                      to the first 24 characters
  418.    total-    job-k-octets            the mapper shall multiple the
  419.    size                              value of job-k-octets by 1024.
  420.  
  421.  
  422. A mapper SHOULD use the job attribute number-of-intervening-jobs rather
  423. than the job's position in a list of jobs to determine `rank' because a
  424. Printer may omit jobs that it wants to keep secret. If a printer doesn't
  425.  
  426. Herriot, Hastings,           July 30, 1997,                     [Page 7]
  427. Jacobs, Martin          Expires January 30, 1998
  428.  
  429.  
  430. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  431.  
  432.  
  433. support the job attribute number-of-intervening-jobs, a mapper MAY use
  434. the job's position.
  435.  
  436. ISSUE: is job-k-octets the sum of the bytes of each document times the
  437. number of copies? If so, "total-size" is 1024 times job-k-octets.  The
  438. model document needs clarification.
  439.  
  440. In order to obtain the information specified above, The LPD-to-IPP
  441. mapper SHALL use the Get-Attributes operation of the printer to get
  442. printer-status and SHOULD use the Get-Jobs operation to get information
  443. about all of the jobs. If the LPD command contains job-numbers or user-
  444. names, the mapper handles the filtering of the response because Get-Jobs
  445. has no way to limit jobs to those of a particular user. If the LPD
  446. command contains job-numbers but no user-names, the mapper MAY use Get-
  447. Attributes on each converted job-number rather than Get-Jobs.
  448.  
  449. NOTE:  This specification does not define how the mapper maps the LPD
  450. Printer-name operand to the IPP "printer-uri" parameter.
  451.  
  452.  
  453. 3.4 Send queue state (long)
  454.  
  455. Command syntax:
  456.  
  457.   send-queue-long = %x04 printer-name *(SP(user-name / job-number)) LF
  458.  
  459. The mapper's response to this command includes information about the
  460. printer and its jobs. RFC 1179 specifies neither the information nor the
  461. format of its response. This document requires the mapper to follow
  462. existing practice as specified in this document.
  463.  
  464. The mapper SHALL produce a response in the following format which
  465. consists of a printer-status line optionally followed a list of jobs,
  466. where each job consists of a blank line, a description line, and one
  467. line for each file. The description line contains the user-name, rank,
  468. job-number and host. This format is defined by examples below. Appendix
  469. B contain the ABNF syntax.
  470.  
  471. For an printer with no jobs the response is:
  472.  
  473. no entries
  474.  
  475. For a printer with jobs, an example of the response is:
  476.  
  477. killtree is ready and printing
  478.  
  479. fred: active                        [job 123 tiger]
  480.         2 copies of stuff           602 bytes
  481.  
  482. smith: 1st                          [job 124 snail]
  483.         2 copies of resume          7088 bytes
  484.         2 copies of foo             10200 bytes
  485.  
  486. fred: 2nd                           [job 125 tiger]
  487. Herriot, Hastings,           July 30, 1997,                     [Page 8]
  488. Jacobs, Martin          Expires January 30, 1998
  489.  
  490.  
  491. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  492.  
  493.  
  494.         more                        99 bytes
  495.  
  496. The column numbers of above headings and job entries are:
  497.  
  498. |       |                           |
  499. 01      09                          41
  500.  
  501. Although the format of the long form is different from the format of the
  502. short form, their fields are identical except for the copies and host
  503. fields which are only in the long form.  For fields other than the host
  504. and copies fields, see the preceding section. For the host field see the
  505. table below.
  506.  
  507.    LPD field IPP attribute         special conversion details
  508.  
  509.    host      job-originating-host  unspecified conversion; job-
  510.                                    originating-host may be the
  511.                                    mapper's host
  512.    copies    copies                the mapper shall assume the
  513.                                    value of copies precedes the
  514.                                    string "copies of "; otherwise,
  515.                                    the value of copies is 1.
  516.  
  517.  
  518. NOTE:  This specification does not define how the mapper maps the LPD
  519. Printer-name operand to the IPP printer-uri parameter.
  520.  
  521.  
  522. 3.5 Remove jobs
  523.  
  524. Command syntax:
  525.  
  526.   remove-jobs = %x05 printer-name SP agent
  527.                       *(SP(user-name / job-number)) LF
  528.  
  529. The agent operand is the user-name of the user initiating the remove-
  530. jobs command. The special user-name 'root' indicates a privileged user
  531. who can remove jobs whose user-name differs from the agent..
  532.  
  533. The mapper SHALL issue one Cancel-Job operation for each job referenced
  534. by the remove-jobs command. Each job-number in the remove-jobs command
  535. references a single job. Each user-name in the remove-jobs command
  536. implicitly references all jobs owned by the specified user. The active
  537. job is implicitly referenced when the remove-jobs command contains
  538. neither job-numbers nor user-names. The mapper MAY use Get-Job to
  539. determine the job-uri of implicitly referenced jobs.
  540.  
  541. The mapper SHALL not use the agent name of `root' when end-users cancel
  542. their own jobs.  Violation of this rule creates a potential security
  543. violation, and it may cause the printer to issue a notification that
  544. misleads a user into thinking that some other person canceled the job.
  545.  
  546. If the agent of a remove-jobs command for a job J is the same as the
  547. user name specified with the `P' function in the control file for job J,
  548. Herriot, Hastings,           July 30, 1997,                     [Page 9]
  549. Jacobs, Martin          Expires January 30, 1998
  550.  
  551.  
  552. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  553.  
  554.  
  555. then the mapper SHALL ensure that the caller of the Cancel-Job command
  556. for job J is the same as  job-originating-user for job J.
  557.  
  558. Note: This requirement means that a mapper must be consistent in who the
  559. receiver perceives as the caller of IPP operations. The mapper either
  560. acts as itself or acts on behalf of another user. The latter is
  561. preferable if it is possible. This consistency is necessary between
  562. Print-Job/Create-Job and Cancel-Job in order for Cancel-Job to work, but
  563. it is also desirable for other operations. For example, Get-Jobs may
  564. give more information about job submitted by the caller of this
  565. operation.
  566.  
  567. NOTE: This specification does not define  how the mapper maps: (1) the
  568. LPD printer-name to the IPP "printer-uri" or (2) the LPD job-number to
  569. the IPP "job-uri".
  570.  
  571. NOTE: This specification does not specify how the mapper maps the LPD
  572. user-name to the IPP job-originating-user because the mapper may use its
  573. own user-name with jobs.
  574.  
  575.  
  576. 4. Mapping of LPD Control File Lines to IPP Parameters
  577.  
  578. This section describes the mapping from LPD control file lines (called
  579. `functions') to IPP operation input parameters. The mapper receives the
  580. control file lines via the LPD receive-control-file sub-command..  Each
  581. of the LPD functions  appear as sub-sections of section 7 of RFC 1179.
  582.  
  583. In LPD control file lines, the text operands have a maximum length of 31
  584. or 99 while IPP input parameters have a maximum of 255 characters.
  585. Therefore, no data is lost.
  586.  
  587. The mapper converts each supported LPD function to its corresponding IPP
  588. parameter as defined by tables in the subsections that follow. These
  589. subsections group functions according to whether they are:
  590.  
  591.   .  required with a job,
  592.   .  optional with a job
  593.   .  required with each document.
  594.  
  595. In the tables below, each LPD value is given a name, such as `h'. If an
  596. IPP value uses the LPD value, then the IPP value column contains the LPD
  597. name, such as `h' to denote this.  Otherwise, the IPP value column
  598. specifies the literal value.
  599.  
  600.  
  601. 4.1 Required Job Functions
  602.  
  603. The following LPD functions MUST be in a received LPD job. The mapper
  604. SHALL receive each of the following LPD functions and SHALL include the
  605. information as a parameter with each IPP job. The functions SHOULD be in
  606. the order `H', `P' and they SHOULD be the first two functions in the
  607. control file, but they MAY be anywhere in the control file and in any
  608. order.
  609. Herriot, Hastings,           July 30, 1997,                    [Page 10]
  610. Jacobs, Martin          Expires January 30, 1998
  611.  
  612.  
  613. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  614.  
  615.  
  616. LPD function                      IPP
  617. name value   description          name          value
  618.  
  619. H    h       Originating Host                   h (in security layer)
  620. P    u       User identification                u (in security layer)
  621.              none                 best-effort   `true'
  622.  
  623. A mapper MAY sends its own host rather than the client's host, and a
  624. mapper MAY send its own user-name as user identification rather than the
  625. client user. But in any case, the values sent SHALL be compatible with
  626. the Cancel-Job operation. The IPP operation MAY have no way to specify
  627. an originating host-name.
  628.  
  629. ISSUE: what do we do about job-orginating-host?
  630.  
  631. The mapper SHALL include best-effort=true so that it doesn't have to
  632. determine which attributes a printer supports.
  633.  
  634.  
  635. 4.2 Optional Job Functions
  636.  
  637. The following LPD functions MAY be in a received job. These function
  638. SHOULD follow the required job functions and precede the document
  639. functions, but they MAY be anywhere in the control file.
  640.  
  641. If the mapper receives such an LPD function, the mapper SHALL include
  642. the corresponding IPP attribute with the value converted as specified in
  643. the table below.  If the mapper does not receive such an LPD attribute,
  644. the mapper SHALL NOT include the corresponding IPP attribute, except the
  645. `L' LPD function whose absence has a special meaning as noted in the
  646. table.
  647.  
  648. LPD function                    IPP
  649. name value   description        name           value
  650.  
  651. J    j       Job name for       job-name       j
  652.              banner page
  653. L    l       Print banner page  job-sheets     `standard' if `L' is
  654.                                                present
  655.                                                `none' if `L' is present
  656. M    m       Mail When Printed  notification-  `job-completion'
  657.                                 events         'mailto://'m`@'h
  658.                                 notification-
  659.                                 method
  660. Note: `m' is the user name and not an email address. The mapper can
  661. fabricate an email address with the source host.  This email address
  662. mail fail when the `h' is some intermediary host that doesn't know about
  663. user `m'. But there is no better solution.
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670. Herriot, Hastings,           July 30, 1997,                    [Page 11]
  671. Jacobs, Martin          Expires January 30, 1998
  672.  
  673.  
  674. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  675.  
  676.  
  677. 4.3 Required Document Functions
  678.  
  679. The mapper SHALL receive one set of the required document functions with
  680. each copy of a document, and SHALL include the converted information as
  681. parameters with each IPP document
  682.  
  683. If the control file contains required and recommended document
  684. functions, the required functions SHOULD precede the recommended ones
  685. and if the job contains multiple documents, all the functions for each
  686. document are grouped together as shown in the example of section 6.3
  687. "Required Document Functions". However, the document functions MAY be in
  688. any order.
  689.  
  690.  
  691.  
  692. LPD function                    IPP
  693. name  valu  description         name              value
  694.       e
  695.  
  696. f     fff   Print formatted     document-format   37 (langAutomatic)
  697.             file
  698. l     fff   Print file leaving  document-format   37 (langAutomatic)
  699.             control characters
  700. o     fff   Print Postscript    document-format   6  (langPS).
  701.             output file
  702.                                 copies            see note
  703. Note: In practice, the `f' LPD function is often overloaded. It is often
  704. used with any format of document data including PostScript and PCL data.
  705.  
  706. Note: In practice, the `l' LPD function is often used as a rough
  707. equivalent to the `f' function.
  708.  
  709. Note: When RFC 1179 was written, no implementation supported the `o'
  710. function; instead `f' was used for PostScript. Windows NT now sends `o'
  711. function for a PostScript file.
  712.  
  713. Note: the value `fff' of the `f', `l' and `o' functions is the name of
  714. the data file as transferred, e.g. "dfA123woden".
  715.  
  716. If the mapper receives any other lower case letter, the mapper SHALL
  717. reject the job because the document contains a format that the mapper
  718. does not support.
  719.  
  720. The mapper determines the number of copies by counting the number of
  721. occurrences of each `fff' file with one of the lower-case functions
  722. above. For example, if `f dfA123woden' occurs 4 times, then copies has a
  723. value of 4. Although the LPD protocol allows the value of copies to be
  724. different for each document, the commands and the receiving print
  725. systems don't support this.
  726.  
  727. ISSUE: should we register DVI, ditroff and troff. At least DVI and one
  728. of the troff is  still in use.
  729.  
  730.  
  731. Herriot, Hastings,           July 30, 1997,                    [Page 12]
  732. Jacobs, Martin          Expires January 30, 1998
  733.  
  734.  
  735. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  736.  
  737.  
  738. 4.4 Recommended Document Functions
  739.  
  740. The mapper SHOULD receive one set of the recommended document functions
  741. with each document, and SHOULD include the converted information as
  742. parameters with each IPP document. The functions SHOULD be received in
  743. the order `U' and `N', but they MAY arrive in any order.
  744.  
  745.  
  746.  
  747. LPD function                        IPP
  748. name  value   description           name              value
  749.  
  750. U     fff                           ignored
  751. N     n       Name of source file   document-name     n
  752.  
  753. Note: the value `fff' of the `U' function is the name of the data file
  754. as transferred, e.g. "dfA123woden".
  755.  
  756.  
  757. 5. Mapping from IPP operations to LPD commands
  758.  
  759. If the IPP-to-LPD mapper receives an IPP operation, the following table
  760. summarizes the LPD command that it uses. Each section below gives the
  761. detail. Each of the following sub-sections appear as sub-sections of
  762. section 3 in the document "Internet Printing Protocol/1.0: Model and
  763. Semantics" [1].
  764.  
  765. IPP operation                     LPD command
  766.  
  767. Get-Operations                    implemented by the mapper
  768. Print-Job or Print-URI or         receive-a-printer-job
  769. Create-Job/Send-Document/Send-URI and then print-any-waiting-jobs
  770. Validate-Job                      implemented by the mapper
  771. Cancel-Job                        remove-jobs
  772. Get-Attributes (printer or job)   send queue state (short or long)
  773. or Get-Jobs
  774.  
  775. 5.1 Get-Operations
  776.  
  777. The mapper SHALL return a list of the operations that it supports. It
  778. SHALL support at least those operations that are mandatory according to
  779. the IPP model document [1].
  780.  
  781.  
  782. 5.2 Print-Job
  783.  
  784. The mapper SHALL send the following commands in the order listed below:
  785.  
  786.   .  receive-a-printer-job command
  787.   .  both receive-control-file sub-command and receive-data-file
  788.      sub-command
  789.      (unspecified order, see Note below)
  790.   .  print-any-waiting-jobs command,
  791.      except that if the mapper is sending a sequence of receive-a-
  792. Herriot, Hastings,           July 30, 1997,                    [Page 13]
  793. Jacobs, Martin          Expires January 30, 1998
  794.  
  795.  
  796. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  797.  
  798.  
  799.      printer-job commands, it MAY omit sending print-any-waiting-
  800.      jobs after any receive-a printer-job command that is neither
  801.      the first nor last command in this sequence
  802.  
  803. Note: it is recommended that the order of the receive-control-file sub-
  804. command and the receive-data-file sub-command be configurable because
  805. either order fails for some print systems. Some print systems assume
  806. that the control file follows all data files and start printing
  807. immediately on receipt of the control file. When such a print system
  808. tries to print a data file that has not arrived, it produces an error.
  809. Other print systems assume that the control file arrives before the data
  810. files and start printing when the first data file arrives. Such a system
  811. ignores the control information, such as banner page or copies.
  812.  
  813. NOTE: This specification does not define the mapping between the IPP
  814. printer-uri and the LPD printer-name.
  815.  
  816. The mapper SHALL send the IPP parameters and attributes received from
  817. the operation to the LPD printer by using the LPD receive-control-file
  818. sub-command. The mapper SHALL create the job-number for use in the
  819. control file name, but the receiving printer MAY, in some circumstances,
  820. assign a different job-number to the job. The mapper SHALL create the
  821. job-uri returned in the Print-Job response.
  822.  
  823. NOTE: This specification does not specify how the mapper determines the
  824. job-number or the job-uri of a job that it creates nor does it specify
  825. the relation ship between the job-uri and the job-number, both of which
  826. the mapper creates.
  827.  
  828. The mapper SHALL send data received in the IPP operation to the LPD
  829. printer by using the LPD receive-data-file sub-command. The mapper SHALL
  830. specify the exact number of bytes being transmitted in the number-of-
  831. bytes field of the receive-data-file sub-command. It SHALL NOT use a
  832. value of 0 in this field.
  833.  
  834. If the mapper, while it is transmitting a receive-a-printer-job command
  835. or sub-command, either detects that its IPP connection has closed or
  836. receives a Cancel-Job operation,  the mapper SHALL terminate the LPD job
  837. either with the abort sub-command or the remove-jobs command.
  838.  
  839. ISSUE: error code conversion.
  840.  
  841.  
  842. 5.3 Print-URI
  843.  
  844. The mapper SHALL handle this operation in the same way as a Print-Job
  845. operation except that it SHALL obtain data referenced by the "document-
  846. uri" parameter and SHALL then treat that data as if it had been received
  847. via a Print-Job operation.
  848.  
  849.  
  850.  
  851.  
  852.  
  853. Herriot, Hastings,           July 30, 1997,                    [Page 14]
  854. Jacobs, Martin          Expires January 30, 1998
  855.  
  856.  
  857. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  858.  
  859.  
  860. 5.4 Validate-Job
  861.  
  862. The mapper SHALL perform this operation directly. Because LPD supports
  863. very few attributes, this operation doesn't have much to check.
  864.  
  865.  
  866. 5.5 Create-Job
  867.  
  868. The mapper SHALL handle this operation like Print-Job, except
  869.  
  870.   .  the mapper SHALL send the control  file after it has  received
  871.      the last  Send-Document  or  Send-URI  operation  because  the
  872.      control file  contains  all the  document-name  and  document-
  873.      format values  specified  in the  Send-Document  and  Send-URI
  874.      operations.
  875.   .  the mapper SHALL perform one receive-data-file sub-command for
  876.      each Send-Document or Send-URI  operation received and in  the
  877.      same order received.
  878.   .  the mapper SHALL send the control file either before all data
  879.      files or after all data files.
  880.      (See the note in the section on Print-Job about the dilemma of
  881.      sending the control file either before or after the data
  882.      files.
  883.  
  884. 5.6 Send-Document
  885.  
  886. The mapper performs a receive-data-file sub-command on the received
  887. data. See the preceding section 5.5 "Create-Job" for the details.
  888.  
  889.  
  890. 5.7 Send-URI
  891.  
  892. The mapper SHALL obtain the data referenced by the "document-uri"
  893. parameter, and SHALL then treat that data as if it had been received via
  894. a Send-Document operation. See the preceding section 5.6 "Send-Document"
  895. for the details.
  896.  
  897.  
  898. 5.8 Cancel-Job
  899.  
  900. The mapper SHALL perform a remove-jobs command with the following
  901. parameters:
  902.  
  903.   .  the printer is the one containing the job specified by the IPP
  904.      job-uri,
  905.   .  the agent is the authenticated user-name of the IPP client,
  906.   .  the job-number is  the one  corresponding to  the IPP  job-uri
  907.      parameter.
  908.  
  909. NOTE: This specification does not specify how the mapper maps the IPP
  910. "job-uri"  to the LPD printer-name or LPD job-number.
  911.  
  912.  
  913.  
  914. Herriot, Hastings,           July 30, 1997,                    [Page 15]
  915. Jacobs, Martin          Expires January 30, 1998
  916.  
  917.  
  918. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  919.  
  920.  
  921. ISSUE: the model needs to offer a solution for mapping jobs to printers
  922. either with a new job attribute "printer-uri" or with all operation
  923. targets being a printer-uri.
  924.  
  925.  
  926. 5.9 Get-Attributes
  927.  
  928. LPD severely limits the set of attributes that the mapper is able to
  929. return in its response for this operation.
  930.  
  931. When the mapper receives a Get-Attributes operation for a printer
  932. object, it SHALL support, at most, the following printer attributes:
  933.  
  934.   .  printer-state
  935.   .  printer-state-reasons
  936.  
  937. When the mapper receives a Get-Attributes operation for a job object, it
  938. SHALL support, at most, the following job attributes:
  939.  
  940.   .  number-of-intervening-jobs
  941.   .  job-originating-user
  942.   .  job-uri
  943.   .  job-originating-host
  944.   .  document-name
  945.   .  job-k-octets
  946.   .  copies
  947.  
  948. The mapper uses either the long or short form of the "send queue state"
  949. command. If it receives a request for the "job-originating-host" or
  950. "copies" and supports those attribute it SHALL use the long form;
  951. otherwise, it SHALL use the short form.
  952.  
  953. Note: the value of job-k-octets is the value in the short form, but it
  954. can be computed from the copies and file size fields in the long form.
  955.  
  956. The mapper SHALL assume that the LPD response that it receives has the
  957. format and information specified in section 3.3 "Send queue state
  958. (short)"  and section 3.4 "Send queue state (long)". The mapper SHALL
  959. determine the value of each requested attribute by using the inverse of
  960. the mapping specified in the two aforementioned sections.
  961.  
  962. Note: when the mapper receives the Get-Attributes operation for a
  963. printer, it can determine the response from the printer-status line
  964. without examining the rest of the LPD response. When the mapper receives
  965. the Get-Attributes operation for a job and uses the LPD short form, it
  966. can determine the response from the single line that pertains to the job
  967. specified by the Get-Attributes operation.
  968.  
  969. NOTE: For Get-Attributes of a job, this specification does not specify
  970. how the mapper maps the IPP "job-uri"  to the LPD printer-name or LPD
  971. job-number.
  972.  
  973.  
  974.  
  975. Herriot, Hastings,           July 30, 1997,                    [Page 16]
  976. Jacobs, Martin          Expires January 30, 1998
  977.  
  978.  
  979. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  980.  
  981.  
  982. 5.10 Get-Jobs
  983.  
  984. The mapper SHALL perform this operation in the same way as Get-
  985. Attributes of a printer except that the mapper converts the job-lines,
  986. and the IPP response contains one job object for each job in the LPD
  987. response..
  988.  
  989.  
  990. 6. Mapping of IPP Parameters to LPD Control File Lines
  991.  
  992. This section describes the mapping from IPP operation input parameters
  993. to LPD control file lines (called `functions'). The mapper receives the
  994. IPP operation input parameters via the IPP operation.  Each of the IPP
  995. operation input parameters appear as sub-sections of section 3 and 4.2
  996. in the IPP model document [1].
  997.  
  998. In the context of LPD control file lines, the text operands have a
  999. maximum length of 31 or 99 while IPP input parameters have a maximum of
  1000. 255 characters.  Therefore, there may be some data loss if the IPP
  1001. parameters exceed the maximum length of the LPD equivalent operands.
  1002.  
  1003. The mapper converts each supported IPP parameter to its corresponding
  1004. LPD function as defined by tables in the subsections that follow. These
  1005. subsections group functions according to whether they are:
  1006.  
  1007.   .  required with a job,
  1008.   .  optional with a job
  1009.   .  required with each document.
  1010.  
  1011. In the tables below, each IPP value is given a name, such as `h'. If an
  1012. LPD value uses the IPP value, then the LPD value column contains the IPP
  1013. name, such as `h' to denote this.  Otherwise, the LPD value column
  1014. specifies the literal value.
  1015.  
  1016.  
  1017. 6.1 Required Job Functions
  1018.  
  1019. The mapper SHALL include the following LPD functions with each job, and
  1020. they SHALL have the specified value. They SHALL be the first functions
  1021. in the control file and they SHALL be in the order "H" and then "P".
  1022.  
  1023. IPP                           LPD function
  1024. name                  value   name  value         description
  1025.  
  1026. (in security layer)   h       H     gateway host  Originating Host
  1027. (in security layer)   u       P     u             User identification
  1028.  
  1029. A mapper SHALL sends its own host rather than the client's host, because
  1030. some LPD systems require that it be the same as the host from which the
  1031. remove-jobs command comes.  A mapper MAY send its own user name as user
  1032. identification rather than the client user. But in any case, the values
  1033. sent SHALL be compatible with the LPD remove-jobs operation.
  1034.  
  1035.  
  1036. Herriot, Hastings,           July 30, 1997,                    [Page 17]
  1037. Jacobs, Martin          Expires January 30, 1998
  1038.  
  1039.  
  1040. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  1041.  
  1042.  
  1043. 6.2 Optional Job Functions
  1044.  
  1045. The mapper MAY include the following LPD functions with each job. They
  1046. SHALL have the specified value if they are sent. These functions, if
  1047. present, SHALL follow the require job functions, and they SHALL precede
  1048. the required document functions.
  1049.  
  1050.  
  1051.  
  1052. IPP attribute                      LPD function
  1053. name           value               nam  value   description
  1054.                                    e
  1055.  
  1056. job-name       j                   J    j       Job name for banner
  1057.                                                 page
  1058. job-sheets     `standard'          L    u       Print banner page
  1059. job-sheets     `none'                           omit `L' function
  1060. notification-  `job-completion'         user    Mail When Printed
  1061.                           user`@'                                          M       events         `mailto://'
  1062. notification-  host
  1063. method
  1064. Note: `L' has special meaning when it is omitted.  If `M' is omitted,
  1065. there is no notification. If `J' is omitted, some undefined behavior
  1066. occurs with respect to the banner page.
  1067.  
  1068. Note: the `user' for the `M' function comes from a substring of the
  1069. notification-method's value.
  1070.  
  1071.  
  1072. 6.3 Required Document Functions
  1073.  
  1074. The mapper SHALL include one set of  the following LPD functions with
  1075. each document, and they SHALL have the specified values. For each
  1076. document, the order of the functions SHALL be `f', `U' and then `N',
  1077. where `f' is replicated once for each copy.
  1078.  
  1079.  
  1080.  
  1081. IPP attribute                  LPD function
  1082. name        value                   name  value  description
  1083.  
  1084. document-   `37'  (langAutomatic)   f     fff    Print formatted file
  1085. format      or `6'  (langPS).
  1086. copies      c                                    replicate `f' `c'
  1087.                                                  times
  1088. none                                U     fff    Unlink data file
  1089. document-   n                       N     n      Name of source file
  1090. name
  1091. Note: the value `fff' of the `f' and `U' functions is the name of the
  1092. data file as transferred, e.g. "dfA123woden".
  1093.  
  1094. Note: the mapper SHALL not send the `o' function
  1095.  
  1096. ISSUE: should we register DVI, troff or ditroff?
  1097. Herriot, Hastings,           July 30, 1997,                    [Page 18]
  1098. Jacobs, Martin          Expires January 30, 1998
  1099.  
  1100.  
  1101. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  1102.  
  1103.  
  1104. If the mapper receives no "best-effort" or it has a value of false, then
  1105. the mapper SHALL reject the job if it specifies attributes or attribute
  1106. values that are not among those supported in the above tables.
  1107.  
  1108. Below is an example of the minimal control file for a job with three
  1109. copies of two files `foo' and `bar':
  1110.  
  1111.   H tiger
  1112.   P jones
  1113.   f dfA123woden
  1114.   f dfA123woden
  1115.   f dfA123woden
  1116.   U dfA123woden
  1117.   N foo
  1118.   f dfB123woden
  1119.   f dfB123woden
  1120.   f dfB123woden
  1121.   U dfB123woden
  1122.   N bar
  1123.  
  1124. 7. References
  1125.  
  1126. [1] R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, "Internet
  1127. Printing Protocol/1.0: Model and Semantics", <draft-ietf-ipp-model-
  1128. 02.txt>, July 1997.
  1129.  
  1130. [2] R. Herriot, S. Butler, P. Moore, R. Turner, "Internet Printing
  1131. Protocol/1.0: Protocol specification", <draft-ietf-ipp-protocol-00.txt>,
  1132. July 1997.
  1133.  
  1134. [3] L. McLaughlin, "Line Printer Daemon Protocol", RFC 1179, August
  1135. 1990.
  1136.  
  1137. [4] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, J.,
  1138. "Printer MIB", RFC 1759, March 1995.
  1139.  
  1140. [5] S. Bradner, "Key words for use in RFCs to Indicate Requirement
  1141. Levels", RFC 2119 , March 1997
  1142.  
  1143. [6] D. Crocker et al., "Augmented BNF for Syntax Specifications: ABNF",
  1144. draft-ietf-drums-abnf-03.txt.
  1145.  
  1146.  
  1147. 8. Author's Addresses
  1148.  
  1149. Robert Herriot (editor)              Norm Jacobs
  1150. Sun Microsystems Inc.                Sun Microsystems Inc.
  1151. 901 San Antonio.Road., MPK-17        1430 Owl Ridge Rd.
  1152. Mountain View, CA 94043              Colorado Springs, CO 80919
  1153.  
  1154. Phone:  650-786-8995                 Phone:  719-532-9927
  1155. Fax: 650-786-7077                    Fax:   719-535-0956
  1156. Email:  robert.herriot@eng.sun.com   Email:
  1157.                                      Norm.Jacobs@Central.sun.com
  1158. Herriot, Hastings,           July 30, 1997,                    [Page 19]
  1159. Jacobs, Martin          Expires January 30, 1998
  1160.  
  1161.  
  1162. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  1163.  
  1164.  
  1165.  
  1166. Thomas N. Hastings                   Jay Martin
  1167. Xerox Corporation                    Underscore, Inc.
  1168. 701 S. Aviation Blvd., ESAE-231      41-C Sagamore Park Road
  1169. El Segundo, CA 90245                 Hudson, NH 03051-4915
  1170.  
  1171. Phone: 310-333-6413                  Phone:  603-889-7000
  1172. Fax:   310-333-5514                  Fax:  603-889-2699
  1173. EMail: hastings@cp10.es.xerox.com    Email:  jkm@underscore.com
  1174.  
  1175.  
  1176.  
  1177. 9. Appendix A: ABNF Syntax for response of Send-queue-state (short)
  1178.  
  1179. The syntax in ABNF for the response to the LPD command `send-queue-state
  1180. (long)' is:
  1181.  
  1182.   status-response = empty-queue / nonempty-queue
  1183.   empty-queue = "no-entries" LF
  1184.   nonempty-queue = printer-status LF heading LF *(job LF)
  1185.   printer-status =  OK-status / error-status
  1186.   OK-status = printer-name SP "ready and printing" LF
  1187.   error-status = < implementation dependent status information >
  1188.   heading = "Rank" 3SP  Owner  6SP "Job" 13SP "Files"
  1189.                   23SP "Total Size" LF
  1190.                      ; the column headings and their values below begin
  1191.   at the columns
  1192.                      ; 1, 8, 19, 35 and 63
  1193.   job = rank *SP owner *SP job *SP files *SP total-size "bytes"
  1194.                     ; jobs are in order of oldest to newest
  1195.   rank = "active" / "1st" / "2nd" / "3rd" / integer "th"
  1196.                     ; job that is printing is "active"
  1197.                     ; other values show position in the queue
  1198.   owner = <user name of person who submitted the job>
  1199.   job = 1*3DIGIT   ; job-number
  1200.   files = <file name> *( "," <file name>) ; truncated to 24 characters
  1201.   total-size = 1*DIGIT  ; combined size in bytes of all documents
  1202.  
  1203. 10. Appendix B: ABNF Syntax for response of Send-queue-state (long)
  1204.  
  1205. The syntax in ABNF for the response to the LPD command `send-queue-state
  1206. (long)' is:
  1207.  
  1208.   status-response = empty-queue / nonempty-queue
  1209.   empty-queue = "no-entries" LF
  1210.   nonempty-queue = printer-status LF  *job
  1211.   printer-status =  OK-status / error-status
  1212.   OK-status = printer-name SP "ready and printing" LF
  1213.   error-status = < implementation dependent status information >
  1214.   job = LF line-1 LF line-2 LF
  1215.   line-1 = owner ":" SP rank 1*SP "[job" job SP host "]"
  1216.   line-2 =  file-name 1*SP document-size "bytes"
  1217.         ; jobs are in order of oldest to newest
  1218.   rank = "active" / "1st" / "2nd" / "3rd" / integer "th"
  1219. Herriot, Hastings,           July 30, 1997,                    [Page 20]
  1220. Jacobs, Martin          Expires January 30, 1998
  1221.  
  1222.  
  1223. INTERNET DRAFT   Mapping between LPD and IPP Protocols     July 30, 1997
  1224.  
  1225.  
  1226.           ; job that is printing is "active"
  1227.           ; other values show position in the queue
  1228.   owner = <user name of person who submitted the job>
  1229.   job = 1*3DIGIT
  1230.   file-name = [ 1*DIGIT  "copies of" SP ] <file name>
  1231.                 ; truncated to 24 characters
  1232.   document-size = 1*DIGIT  ;size of single copy of the document.
  1233.  
  1234. 11. Appendix C: Unsupported LPD functions
  1235.  
  1236. The follow LPD functions have no IPP equivalent. The LPD-to-IPP mapper
  1237. ignores them and the IPP-to-LPD mapper does not send them.
  1238.  
  1239.      LPD command
  1240.      name   description
  1241.  
  1242.      C      Class for banner page
  1243.      I      Indent Printing
  1244.      S      Symbolic link data
  1245.      T      Title for pr
  1246.      W      Width of output
  1247.      1      troff R font
  1248.      2      troff I font
  1249.      3      troff B font
  1250.      4      troff S font
  1251.  
  1252. The follow LPD functions specify document-formats which have no IPP
  1253. equivalent, unless someone registers them. The LPD-to-IPP mapper rejects
  1254. jobs that request such a document format, and the IPP-to-LPD mapper does
  1255. not send them.
  1256.  
  1257.      LPD command
  1258.      name   description
  1259.  
  1260.      c      Plot CIF file
  1261.      d      Print DVI file
  1262.      g      Plot file
  1263.      k      reserved for Kerberized clients and servers
  1264.      n      Print ditroff output file
  1265.      p      Print file with 'pr' format
  1266.      r      File to print with FORTRAN carriage control
  1267.      t      Print troff output file
  1268.      v      Print raster file
  1269.      z      reserved for future use with the Palladium
  1270.             print system
  1271.  
  1272. ISSUE: we may move some of these to the supported list.
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280. Herriot, Hastings,           July 30, 1997,                    [Page 21]
  1281. Jacobs, Martin          Expires January 30, 1998
  1282.