Movatterモバイル変換


[0]ホーム

URL:


[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Info page]

EXPERIMENTAL
Network Working Group                                         R. HerriotRequest For Comments: 2569                             Xerox CorporationCategory: Experimental                                         N. Jacobs                                                  Sun Microsystems, Inc.                                                             T. Hastings                                                       Xerox Corporation                                                               J. Martin                                                        Underscore, Inc.                                                              April 1999Mapping between LPD and IPP ProtocolsStatus of this Memo   This memo defines an Experimental Protocol for the Internet   community.  It does not specify an Internet standard of any kind.   Discussion and suggestions for improvement are requested.   Distribution of this memo is unlimited.Copyright Notice   Copyright (C) The Internet Society (1999).  All Rights Reserved.IESG Note   This document defines an Experimental protocol for the Internet   community.  The IESG expects that a revised version of this protocol   will be published as Proposed Standard protocol.  The Proposed   Standard, when published, is expected to change from the protocol   defined in this memo.  In particular, it is expected that the   standards-track version of the protocol will incorporate strong   authentication and privacy features, and that an "ipp:" URL type will   be defined which supports those security measures.  Other changes to   the protocol are also possible.  Implementors are warned that future   versions of this protocol may not interoperate with the version of   IPP defined in this document, or if they do interoperate, that some   protocol features may not be available.   The IESG encourages experimentation with this protocol, especially in   combination with Transport Layer Security (TLS) [RFC 2246], to help   determine how TLS may effectively be used as a security layer for   IPP.Herriot, et al.               Experimental                      [Page 1]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999Abstract   This document is one of a set of documents, which together describe   all aspects of a new Internet Printing Protocol (IPP). IPP is an   application level protocol that can be used for distributed printing   using Internet tools and technologies. This document gives some   advice to implementers of gateways between IPP and LPD (Line Printer   Daemon). This document describes the mapping between (1) the commands   and operands of the 'Line Printer Daemon (LPD) Protocol' specified inRFC 1179 and (2) the operations, operation attributes and job   template attributes of the Internet Printing Protocol/1.0 (IPP).  One   of the purposes of this document is to compare the functionality of   the two protocols.  Another purpose is to facilitate implementation   of gateways between LPD and IPP.   WARNING:RFC 1179 was not on the IETF standards track.  WhileRFC1179 was intended to record existing practice, it fell short in some   areas.  However, this specification maps between (1) the actual   current practice ofRFC 1179 and (2) IPP.  This document does not   attempt to map the numerous divergent extensions to the LPD protocol   that have been made by many implementers.   The full set of IPP documents includes:      Design Goals for an Internet Printing Protocol [RFC2567]      Rationale for the Structure and Model and Protocol for the      Internet Printing Protocol [RFC2568]      Internet Printing Protocol/1.0: Model and Semantics [RFC2566]      Internet Printing Protocol/1.0: Encoding and Transport [RFC2565]      Internet Printing Protocol/1.0: Implementors Guide [ipp-iig]      Mapping between LPD and IPP Protocols (this document)   The document, "Design Goals for an Internet Printing Protocol", takes   a broad look at distributed printing functionality, and it enumerates   real-life scenarios that help to clarify the features that need to be   included in a printing protocol for the Internet. It identifies   requirements for three types of users: end users, operators, and   administrators. It calls out a subset of end user requirements that   are satisfied in IPP/1.0. Operator and administrator requirements are   out of scope for version 1.0.   The document, "Rationale for the Structure and Model and Protocol for   the Internet Printing Protocol", describes IPP from a high level   view, defines a roadmap for the various documents that form the suite   of IPP specifications, and gives background and rationale for the   IETF working group's major decisions.Herriot, et al.               Experimental                      [Page 2]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   The document, "Internet Printing Protocol/1.0: Model and Semantics",   describes a simplified model with abstract objects, their attributes,   and their operations. It introduces a Printer and a Job object. The   Job object supports multiple documents per Job. It also addresses   security, internationalization, and directory issues.   The document, "Internet Printing Protocol/1.0: Encoding and   Transport", is a formal mapping of the abstract operations and   attributes defined in the model document onto HTTP/1.1. It defines   the encoding rules for a new Internet media type called '   application/ipp'.   This document "Internet Printing Protocol/1.0: Implementer's Guide",   gives advice to implementers of IPP clients and IPP objects.TABLE OF CONTENTS1. Introduction.....................................................42. Terminology......................................................53. Mapping from LPD Commands to IPP Operations......................53.1 Print any waiting jobs..........................................63.2 Receive a printer job...........................................63.2.1 Abort job.....................................................73.2.2 Receive control file..........................................73.2.3 Receive data file.............................................83.3 Send queue state (short)........................................83.4 Send queue state (long)........................................103.5 Remove jobs....................................................12   4. Mapping of LPD Control File Lines to IPP Operation and Job      Template Attributes.............................................134.1 Required Job Functions.........................................134.2 Optional Job Functions.........................................144.3 Required Document Functions....................................144.4 Recommended Document Functions.................................165. Mapping from IPP operations to LPD commands.....................165.1 Print-Job......................................................165.2 Print-URI......................................................185.3 Validate-Job...................................................185.4 Create-Job.....................................................185.5 Send-Document..................................................185.6 Send-URI.......................................................185.7 Cancel-Job.....................................................185.8 Get-Printer-Attributes.........................................195.9 Get-Job-Attributes.............................................195.10 Get-Jobs......................................................206. Mapping of IPP Attributes to LPD Control File Lines.............206.1 Required Job Functions.........................................216.2 Optional Job Functions.........................................21Herriot, et al.               Experimental                      [Page 3]

RFC 2569         Mapping between LPD and IPP Protocols        April 19996.3 Required Document Functions....................................227. Security Considerations.........................................238. References......................................................239. Authors' Addresses..............................................24   10.Appendix A: ABNF Syntax for response of Send-queue-state (short)25   11.Appendix B: ABNF Syntax for response of Send-queue-state (long) 26   12.Appendix C: Unsupported LPD functions...........................27   13.Full Copyright Statement........................................281. Introduction   The reader of this specification is expected to be familiar with the   IPP Model and Semantics specification [RFC2566], the IPP Encoding and   Transport [RF2565], and the Line Printer Daemon (LPD) protocol   specification [RFC1179] as described inRFC 1179.RFC 1179 was written in 1990 in an attempt to document existing LPD   protocol implementations.  Since then, a number of undocumented   extensions have been made by vendors to support functionality   specific to their printing solutions.  All of these extensions   consist of additional control file commands.  This document does not   address any of these vendor extensions.  Rather it addresses existing   practice within the context of the features described byRFC 1179.   Deviations of existing practice fromRFC 1179 are so indicated.   Other LPD control file commands inRFC 1179 are obsolete. They are   intended to work on "text" only formats and are inappropriate for   many contemporary document formats that completely specify each page.   This document does not address the support of these obsolete   features.   In the area of document formats, also known as page description   languages (PDL),RFC 1179 defines a fixed set with no capability for   extension.  Consequently, some new PDL's are not supported, and some   of those that are supported are sufficiently unimportant now that   they have not been registered for use with the Printer MIB [RFC1759]   and IPP [RFC2566] [RFC2565], though they could be registered if   desired.  See the Printer MIB specification [RFC1759] and/or the IPP   Model specification [RFC2566] for instructions for registration of   document-formats with IANA.  IANA lists the registered document-   formats as "printer languages".   This document addresses the protocol mapping for both directions:   mapping of the LPD protocol to the IPP protocol and mapping of the   IPP protocol to the LPD protocol. The former is called the "LPD-to-   IPP mapper" and the latter is called the "IPP-to-LPD mapper".Herriot, et al.               Experimental                      [Page 4]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   This document is an informational document that is not on the   standards track.  It is intended to help implementers of gateways   between IPP and LPD.  It also provides an example, which gives   additional insight into IPP.2. Terminology   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this   document are to be interpreted as described inRFC 2119 [RFC2119].RFC 1179 uses the word "command" in two contexts: for over-the-wire   operations and for command file functions. This document SHALL use   the word "command" for the former and the phrase "functions" for the   latter.  The syntax of the LPD commands is given using ABNF   [RFC2234].   The following tokens are used in order to make the syntax more   readable:      LF stands for %x0A (linefeed)      SP stands for %x20.  (space)      DIGIT stands for %x30-39 ("0" to "9")3. Mapping from LPD Commands to IPP Operations   This section describes the mapping from LPD commands to IPP   operations.  Each of the following sub-sections appear as sub-   sections ofsection 5 of RFC 1179.   The following table summarizes the IPP operation that the mapper uses   when it receives an LPD command. Each section below gives more   detail:      LPD command                IPP operation      print-any-waiting-jobs     ignore      receive-a-printer-job      Print-Job or Create-Job/Send-Document            send queue state       Get-Printer-Attributes and Get-Jobs              (short or long)            remove-jobs          Cancel-JobHerriot, et al.               Experimental                      [Page 5]

RFC 2569         Mapping between LPD and IPP Protocols        April 19993.1 Print any waiting jobs   Command syntax:     print-waiting-jobs = %x01 printer-name LF   This command causes the LPD daemon check its queue and print any   waiting jobs. An IPP printer handles waiting jobs without such a   nudge.   If the  mapper receives this LPD command, it SHALL ignore it and send   no IPP operation.3.2 Receive a printer job   Command syntax:     receive-job = %x02 printer-name LF   The control file and data files mentioned in the following paragraphs   are received via LPD sub-commands that follow this command. Their   mapping to IPP commands and attributes is described later in this   section.   The mapper maps the 'Receive a printer job' command to either:      - the Print-Job operation which includes a single data file or      - the Create-Job operation followed by one Send-Document operation        for each data file.   If the IPP printer supports both Create-Job and Send-Document, and if   a job consists of:      - a single data file, the mapper SHOULD use the Print-Job        operation, but MAY use the Create-Job and Send-Document        operations.      - more than one data file, the mapper SHALL use Create-Job        followed by one Send-Document for each received LPD data file.   If the IPP printer does not support both Create-Job and Send-   Document, and if a job consists of:      - a single data file, the mapper SHALL use the PrintJob        operation.      - more than one data file, the mapper SHALL submit each received        LPD data file as a separate Print-Job operation (thereby        converting a single LPD job into multiple IPP jobs).Herriot, et al.               Experimental                      [Page 6]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   If the mapper uses Create-Job and Send-Document, it MUST send the   Create-Job operation before it sends any Send-Document operations   whether the LPD control file, which supplies attributes for Create-   Job, arrives before or after all LPD data files.   NOTE: This specification does not specify how the mapper maps: the   LPD Printer-name operand to the IPP "printer-uri" operation   attribute.   The following three sub-sections gives further details about the   mapping from LPD receive-a-printer-job sub-commands.  Each of the   following subsections appear as sub-sections of section 6 ofRFC1179.3.2.1 Abort job   Sub-command syntax:      abort-job = %x1 LF   This sub-command of receive-a-printer-job is intended to abort any   job transfer in process.   If the mapper receives this sub-command, it SHALL cancel the job that   it is in the process of transmitting.   If the mapper is in the process of sending a Print-Job or Create-Job   operation, it terminates the job either by closing the connection, or   performing the Cancel-Job operation with the job-uri that it received   from the Print-Job or Create-Job operation.   NOTE: This sub-command is implied if at any time the connection   between the LPD client and server is terminated before an entire   print job has been transferred via an LPD Receive-a-printer-job   request.3.2.2 Receive control file   Sub-command syntax:   receive-control-file = %x2 number-of-bytes SP name-of-control-file LF   number-of-bytes = 1*DIGIT   name-of-control-file = "cfA" job-number client-host-name                          ; e.g. "cfA123woden"   job-number = 3DIGIT   client-host-name = <a host name>Herriot, et al.               Experimental                      [Page 7]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   This sub-command is roughly equivalent to the IPP Create-Job   operation.   The mapper SHALL use the contents of the received LPD control file to   create IPP operation attribute and job template attribute values to   transmit with the Print-Job or Create-Job operation.3.2.3 Receive data fileSub-command syntax:  %x3 number-of-bytes-in-data-file Name-of-data-file   receive-data-file = %x03 number-of-bytes SP name-of-data-file LF   number-of-bytes = 1*DIGIT   name-of-data-file = "df" letter job-number client-host-name               ; e.g. "dfA123woden for the first file   letter = %x41-5A /  %x61-7A    ;  "A" to "Z", "a" to "z"                                  ;  first file is "A",                                  ; second "B", and  52nd file is "z"   job-number = 3DIGIT   client-host-name = <a host name>   This sub-command is roughly equivalent to the IPP Send-Document   operation.   The mapper SHALL use the contents of the received LPD data file as   the data to transmit with the IPP Print-Job or Send-Document   operation.   AlthoughRFC 1179 alludes to a method for passing an unspecified   length data file by using an octet-count of zero, no implementations   support this feature. The mapper SHALL reject a job that has a value   of 0 in the number-of-bytes field.3.3 Send queue state (short)   Command syntax:send-queue-short  = %x03 printer-name *(SP(user-name / job-number)) LF   The mapper's response to this command includes information about the   printer and its jobs.RFC 1179 specifies neither the information nor   the format of its response. This document requires the mapper to   follow existing practice as specified in this document.   The mapper SHALL produce a response in the following format which   consists of a printer-status line optionally followed by a heading   line, and a list of jobs. This format is defined by examples below.Appendix A contains the ABNF syntax.Herriot, et al.               Experimental                      [Page 8]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   For an printer with no jobs, the response starts in column 1 and is:      no entries   For a printer with jobs, an example of the response is:     killtree is ready and printing     Rank   Owner      Job          Files             Total Size     active fred       123          stuff             1204 bytes     1st    smith      124          resume, foo       34576 bytes     2nd    fred       125          more              99 bytes     3rd    mary       126          mydoc             378 bytes     4th    jones      127          statistics.ps     4567 bytes     5th    fred       128          data.txt          9 bytes   The column numbers of above headings and job entries are:     |      |          |            |                 |     01     08         19           35                63   The mapper SHALL produce each field above from the following IPP   attribute:   LPD field IPP attribute          special conversion details   printer-  printer-state and      For a printer-state of idle or   status    printer-state-reasons  processing, the mapper SHALL use                                    the formats above.  For stopped,                                    the mapper SHALL use printer-                                    state-reasons to produce an                                    unspecified format for the error.   rank      number-of-             the mapper SHALL the format above             intervening-jobs   owner     job-originating-user-  unspecified conversion; job-             name                   originating-user-name may be the                                    mapper's user-name   job       job-id                 the mapper shall use the job-id   files     document-name          the mapper shall create a comma                                    separated list of the document-                                    names and then truncate this list                                    to the first 24 characters   total-    job-k-                 the mapper shall multiple the   size      octets*copies*1024     value of job-k-octets by 1024 and                                    by the value of the "copies"                                    attribute.Herriot, et al.               Experimental                      [Page 9]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   A mapper SHOULD use the job attribute number-of-intervening-jobs   rather than the job's position in a list of jobs to determine 'rank'   because a Printer may omit jobs that it wants to keep secret. If a   printer doesn't support the job attribute number-of-intervening-jobs,   a mapper MAY use the job's position.   Note: a Printer may set the value of job-originating-user-name to the   authenticated user or to the value of "requesting-user-name",   depending on the implementation and configuration. For a gateway, the   authenticated user is the user-id of the gateway, but the   "requesting-user-name" may contain the name of the user who is the   gateway's client.   In order to obtain the information specified above, The LPD-to-IPP   mapper SHALL use the Get-Printer-Attributes operation to get   printer-status and SHOULD use the Get-Jobs operation to get   information about all of the jobs. If the LPD command contains job-   numbers or user-names, the mapper MAY handle the filtering of the   response. If the LPD command contains job-numbers but no user-names,   the mapper MAY use Get-Job-Attributes on each converted job-number   rather than Get-Jobs. If the LPD command contains a single user-name   but no job-numbers, the mapper MAY use Get-Jobs with the my-jobs   option if the server supports this option and if the server allows   the client to be a proxy for the LPD user.   NOTE: This specification does not define how the mapper maps the LPD   Printer-name operand to the IPP "printer-uri" operation attribute.3.4 Send queue state (long)   Command syntax:   send-queue-long = %x04 printer-name *(SP(user-name / job-number)) LF   The mapper's response to this command includes information about the   printer and its jobs.RFC 1179 specifies neither the information nor   the format of its response. This document requires the mapper to   follow existing practice as specified in this document.   The mapper SHALL produce a response in the following format which   consists of a printer-status line optionally followed a list of jobs,   where each job consists of a blank line, a description line, and one   line for each file. The description line contains the user-name,   rank, job-number and host. This format is defined by examples below.Appendix B contain the ABNF syntax.Herriot, et al.               Experimental                     [Page 10]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   For an printer with no jobs the response is:      no entries   For a printer with jobs, an example of the response is:      killtree is ready and printing      fred: active                        [job 123 tiger]              2 copies of stuff           602 bytes      smith: 1st                          [job 124 snail]              2 copies of resume          7088 bytes              2 copies of foo             10200 bytes      fred: 2nd                           [job 125 tiger]              more                        99 bytes      The column numbers of above headings and job entries are:      |       |                           |      01      09                          41   Although the format of the long form is different from the format of   the short form, their fields are identical except for a) the copies   and host fields which are only in the long form, and b) the "size"   field contains the single copy size of each file.  Thus the sum of   the file sizes in the "size" field times the value of the "copies"   field produces the value for the "Total Size" field in the short   form. For fields other than the host and copies fields, see the   preceding section.  For the host field see the table below.      LPD field IPP attribute        special conversion details      host                           unspecified conversion; job-                                     originating-host may be the                                     mapper's host      copies    copies               the mapper shall assume the                                     value of copies precedes the                                     string "copies of "; otherwise,                                     the value of copies is 1.   NOTE: This specification does not define how the mapper maps the LPD   Printer-name operand to the IPP printer-uri operation attribute.Herriot, et al.               Experimental                     [Page 11]

RFC 2569         Mapping between LPD and IPP Protocols        April 19993.5 Remove jobs   Command syntax:      remove-jobs = %x05 printer-name SP agent                          *(SP(user-name / job-number)) LF   The agent operand is the user-name of the user initiating the   remove-jobs command. The special user-name 'root' indicates a   privileged user who can remove jobs whose user-name differs from the   agent.   The mapper SHALL issue one Cancel-Job operation for each job   referenced by the remove-jobs command. Each job-number in the   remove-jobs command references a single job. Each user-name in the   remove-jobs command implicitly references all jobs owned by the   specified user. The active job is implicitly referenced when the   remove-jobs command contains neither job-numbers nor user-names. The   mapper MAY use Get-Jobs to determine the job-uri of implicitly   referenced jobs.   The mapper SHALL not use the agent name of 'root' when end-users   cancel their own jobs.  Violation of this rule creates a potential   security violation, and it may cause the printer to issue a   notification that misleads a user into thinking that some other   person canceled the job.   If the agent of a remove-jobs command for a job J is the same as the   user name specified with the 'P' function in the control file for job   J, then the mapper SHALL ensure that the initiator of the Cancel-Job   command for job J is the same as job-originating-user for job J.   Note: This requirement means that a mapper must be consistent in who   the receiver perceives as the initiator of IPP operations. The mapper   either acts as itself or acts on behalf of another user. The latter   is preferable if it is possible. This consistency is necessary   between Print-Job/Create-Job and Cancel-Job in order for Cancel-Job   to work, but it is also desirable for other operations. For example,   Get-Jobs may give more information about job submitted by the   initiator of this operation.   NOTE: This specification does not define how the mapper maps: (1) the   LPD printer-name to the IPP "printer-uri" or (2) the LPD job-number   to the IPP "job-uri".   NOTE: This specification does not specify how the mapper maps the LPD   user-name to the IPP job-originating-user because the mapper may use   its own user-name with jobs.Herriot, et al.               Experimental                     [Page 12]

RFC 2569         Mapping between LPD and IPP Protocols        April 19994. Mapping of LPD Control File Lines to IPP Operation and Job Template   Attributes   This section describes the mapping from LPD control file lines   (called 'functions') to IPP operation attributes and job template   attributes.  The mapper receives the control file lines via the LPD   receive-control-file sub-command.  Each of the LPD functions appear   as sub-sections ofsection 7 of RFC 1179.   In LPD control file lines, the text operands have a maximum length of   31 or 99 while IPP operation attribute and job template attribute   values have a maximum of 255 or 1023 octets, depending on the   attribute syntax.  Therefore, no data is lost.   The mapper converts each supported LPD function to its corresponding   IPP operation or job template attribute as defined by tables in the   subsections that follow. These subsections group functions according   to whether they are:      - required with a job,      - optional with a job      - required with each document.   In the tables below, each LPD value is given a name, such as 'h'. If   an IPP value uses the LPD value, then the IPP value column contains   the LPD name, such as 'h' to denote this.  Otherwise, the IPP value   column specifies the literal value.4.1 Required Job Functions   The following LPD functions MUST be in a received LPD job. The mapper   SHALL receive each of the following LPD functions and SHALL include   the information as a operation or job template attribute with each   IPP job.  The functions SHOULD be in the order 'H', 'P' and they   SHOULD be the first two functions in the control file, but they MAY   be anywhere in the control file and in any order:   LPD function                     IPP   name value   description         name          value   H    h       Originating Host                  h (in security layer)   P    u       User identification requesting-   u (and in security                                    user-name     layer)                none                ipp-          'true'                                    attribute-                                    fidelityHerriot, et al.               Experimental                     [Page 13]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   A mapper MAY send its own host rather than the client's host, and a   mapper MAY send its own user-name as user identification rather than   the client user. But in any case, the values sent SHALL be compatible   with the Cancel-Job operation. The IPP operation MAY have no way to   specify an originating host-name.   The mapper SHALL include ipp-attribute-fidelity = true so that it   doesn't have to determine which attributes a printer supports.4.2 Optional Job Functions   The following LPD functions MAY be present in a received job. These   functions SHOULD follow the required job functions and precede the   document functions, but they MAY be anywhere in the control file.   If the mapper receives such an LPD function, the mapper SHALL include   the corresponding IPP attribute with the value converted as specified   in the table below.  If the mapper does not receive such an LPD   attribute, the mapper SHALL NOT include the corresponding IPP   attribute, except the 'L' LPD function whose absence has a special   meaning as noted in the table.   LPD function                  IPP   name value  description       name         value   J    j      Job name for      job-name     j               banner page   L    l      Print banner page job-sheets   'standard' if 'L' is                                              present                                              'none' if 'L' is present   M    m      Mail When Printed              IPP has no notification                                              mechanism. To support                                              this LPD feature, the                                              gateway must poll using                                              the Get-Job-Attributes                                              operation.4.3 Required Document Functions   The mapper SHALL receive one set of the required document functions   with each copy of a document, and SHALL include the converted   information as operation or job template attributes with each IPP   document.   If the control file contains required and recommended document   functions, the required functions SHOULD precede the recommended ones   and if the job contains multiple documents, all the functions forHerriot, et al.               Experimental                     [Page 14]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   each document are grouped together as shown in the example ofsection6.3 "Required Document Functions". However, the document functions   MAY be in any order.   LPD function                   IPP   name value description         name             value   f     fff  Print formatted     document-format  'application/octet-              file                                 stream'   l     fff  Print file leaving  document-format  'application/octet-              control characters                   stream'   o     fff  Print Postscript    document-format  'application/PostScri              output file                          pt'                                  copies           see note   Note: In practice, the 'f' LPD function is often overloaded. It is   often used with any format of document data including PostScript and   PCL data.   Note: In practice, the 'l' LPD function is often used as a rough   equivalent to the 'f' function.   Note: WhenRFC 1179 was written, no implementation supported the 'o'   function; instead 'f' was used for PostScript. Windows NT now sends '   o' function for a PostScript file.   Note: the value 'fff' of the 'f', 'l' and 'o' functions is the name   of the data file as transferred, e.g. "dfA123woden".   If the mapper receives any other lower case letter, the mapper SHALL   reject the job because the document contains a format that the mapper   does not support.   The mapper determines the number of copies by counting the number of   occurrences of each 'fff' file with one of the lower-case functions   above. For example, if 'f dfA123woden' occurs 4 times, then copies   has a value of 4. Although the LPD protocol allows the value of   copies to be different for each document, the commands and the   receiving print systems don't support this.Herriot, et al.               Experimental                     [Page 15]

RFC 2569         Mapping between LPD and IPP Protocols        April 19994.4 Recommended Document Functions   The mapper SHOULD receive one set of the recommended document   functions with each document, and SHOULD include the converted   information as an operation or job template attribute with each IPP   document. The functions SHOULD be received in the order 'U' and 'N',   but they MAY arrive in any order.   LPD function                       IPP   name  value   description          name              value   U     fff                          ignored   N     n       Name of source file  document-name     n   Note: the value 'fff' of the 'U' function is the name of the data   file as transferred, e.g. "dfA123woden".5. Mapping from IPP operations to LPD commands   If the IPP-to-LPD mapper receives an IPP operation, the following   table summarizes the LPD command that it uses. Each section below   gives the detail. Each of the following sub-sections appear as sub-   sections ofsection 3 in the document "Internet Printing   Protocol/1.0: Model and Semantics" [RFC2566].   IPP operation                     LPD command   Print-Job or Print-URI or         receive-a-printer-job   Create-Job/Send-Document/Send-URI and then print-any-waiting-jobs   Validate-Job                      implemented by the mapper   Cancel-Job                        remove-jobs   Get-Printer-Attributes, Get-Job-  send queue state (short or long)   Attributes or Get-Jobs5.1 Print-Job   The mapper SHALL send the following commands in the order listed   below:      - receive-a-printer-job command      - both receive-control-file sub-command and receive-data-file        sub-command (unspecified order, see Note below)      - print-any-waiting-jobs command, except that if the mapper is        sending a sequence of receive a printer-job commands, it MAY        omit sending print-any-waiting-jobs after any receive a        printer-job command that is neither the first nor last command        in this sequenceHerriot, et al.               Experimental                     [Page 16]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   Note: it is recommended that the order of the receive-control-file   subcommand and the receive-data-file sub-command be configurable   because either order fails for some print systems. Some print systems   assume that the control file follows all data files and start   printing immediately on receipt of the control file. When such a   print system tries to print a data file that has not arrived, it   produces an error.  Other print systems assume that the control file   arrives before the data files and start printing when the first data   file arrives. Such a system ignores the control information, such as   banner page or copies.   NOTE: This specification does not define the mapping between the IPP   printer-uri and the LPD printer-name.   The mapper SHALL send the IPP operation attributes and job template   attributes received from the operation to the LPD printer by using   the LPD receive-control-file sub-command. The mapper SHALL create the   LPD job-number for use in the control file name, but the receiving   printer MAY, in some circumstances, assign a different job-number to   the job.  The mapper SHALL create the IPP job-id and IPP job-uri   returned in the Print-Job response.   NOTE: This specification does not specify how the mapper determines   the LPD job-number, the IPP job-id or the IPP job-uri of a job that   it creates nor does it specify the relationship between the IPP job-   uri, IPP the job-id and the LPD job-number, both of which the mapper   creates.  However, it is likely that the mapper will use the same   integer value for both the LPD job-number and the IPP job-id, and   that the IPP Job-uri is the printer's URI with the job-id   concatenated on the end.   The mapper SHALL send data received in the IPP operation to the LPD   printer by using the LPD receive-data-file sub-command. The mapper   SHALL specify the exact number of bytes being transmitted in the   number-of-bytes field of the receive-data-file sub-command. It SHALL   NOT use a value of 0 in this field.   If the mapper, while it is transmitting a receive-a-printer-job   command or sub-command, either detects that its IPP connection has   closed or receives a Cancel-Job operation, the mapper SHALL terminate   the LPD job either with the abort sub-command or the remove-jobs   command.   This document does not address error code conversion.Herriot, et al.               Experimental                     [Page 17]

RFC 2569         Mapping between LPD and IPP Protocols        April 19995.2 Print-URI   The mapper SHALL handle this operation in the same way as a Print-Job   operation except that it SHALL obtain data referenced by the   "document-uri" operation attribute and SHALL then treat that data as   if it had been received via a Print-Job operation.5.3 Validate-Job   The mapper SHALL perform this operation directly. Because LPD   supports very few attributes, this operation doesn't have much to   check.5.4 Create-Job   The mapper SHALL handle this operation like Print-Job, except:      - the mapper SHALL send the control file after it has received the        last Send-Document or Send-URI operation because the control        file contains all the document-name and document-format values        specified in the Send-Document and Send-URI operations.      - the mapper SHALL perform one receive-data-file sub-command for        each Send-Document or Send-URI operation received and in the        same order received.      - the mapper SHALL send the control file either before all data        files or after all data files. (See the note in the section on        Print-Job about the dilemma of sending the control file either        before or after the data files.5.5 Send-Document   The mapper performs a receive-data-file sub-command on the received   data. See the precedingsection 5.4 "Create-Job" for the details.5.6 Send-URI   The mapper SHALL obtain the data referenced by the "document-uri"   operation attribute, and SHALL then treat that data as if it had been   received via a Send-Document operation. See the precedingsection 5.5   "Send-Document" for the details.5.7 Cancel-Job   The mapper SHALL perform a remove-jobs command with the following   operation attributes:Herriot, et al.               Experimental                     [Page 18]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999      - the printer is the one to which the job was submitted, that is        the IPP printer-uri is mapped to an LPD printer-name by the same        mechanism as for all commands      - the agent is the authenticated user-name of the IPP client      - the job-number is the job-id returned by the Print-Job command,        that is, the LPD job-number has the same value as the IPP job-id        for likely implementations5.8 Get-Printer-Attributes   LPD severely limits the set of attributes that the mapper is able to   return in its response for this operation. The mapper SHALL support,   at most, the following printer attributes:      - printer-state      - printer-state-reasons   The mapper uses either the long or short form of the "send queue   state" command.   The mapper SHALL assume that the LPD response that it receives has   the format and information specified insection 3.3 "Send queue state   (short)" andsection 3.4 "Send queue state (long)".  The mapper SHALL   determine the value of each requested attribute by using the inverse   of the mapping specified in the two aforementioned sections.   Note: the mapper can determine the response from the printer-status   line without examining the rest of the LPD response.5.9 Get-Job-Attributes   LPD severely limits the set of attributes that the mapper is able to   return in its response for this operation. The mapper SHALL support,   at most, the following job attributes:      - number-of-intervening-jobs      - job-originating-user-name      - job-id      - document-name      - job-k-octets      - copies   The mapper uses either the long or short form of the "send queue   state" command. If it receives a request for the "job-k-octets" or   "copies" and supports the attribute it SHALL use the long form;   otherwise, it SHALL use the short form.Herriot, et al.               Experimental                     [Page 19]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   Note: the value of job-k-octets is the value in the short form   divided by the number of "copies" which is on the long form only. Its   value can also be determined by adding the "size" field values for   each document in the job in the long form.   The mapper SHALL assume that the LPD response that it receives has   the format and information specified insection 3.3 "Send queue state   (short)" andsection 3.4 "Send queue state (long)".  The mapper SHALL   determine the value of each requested attribute by using the inverse   of the mapping specified in the two aforementioned sections.   Note: when the mapper uses the LPD short form, it can determine the   response from the single LPD line that pertains to the job specified   by the Get-Job-Attributes operation.   Note: the mapper can use its correspondence between the IPP job-id,   job-uri and the LPD job-number.5.10 Get-Jobs   The mapper SHALL perform this operation in the same way as Get-Job-   Attributes except that the mapper converts all the LPD job-lines, and   the IPP response contains one job object for each job-line in the LPD   response.6. Mapping of IPP Attributes to LPD Control File Lines   This section describes the mapping from IPP operation attributes and   job template attributes to LPD control file lines (called '   functions'). The mapper receives the IPP operation attributes and job   template atributes via the IPP operation.  Each of the IPP operation   attributes and job template attributes appear as sub-sections ofsection 3 and 4.2 in the IPP model document [RFC2566].   In the context of LPD control file lines, the text operands have a   maximum length of 31 or 99 while IPP operation attributes and job   template attributes have a maximum of 255 or 1023 octets, depending   on the attribute syntax.  Therefore, there may be some data loss if   the IPP operation attribute and job template attribute values exceed   the maximum length of the LPD equivalent operands.   The mapper converts each supported IPP operation attribute and job   template attribute to its corresponding LPD function as defined by   tables in the subsections that follow. These subsections group   functions according to whether they are:Herriot, et al.               Experimental                     [Page 20]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999      - required with a job,      - optional with a job      - required with each document.   In the tables below, each IPP value is given a name, such as 'h'. If   an LPD value uses the IPP value, then the LPD value column contains   the IPP name, such as 'h' to denote this.  Otherwise, the LPD value   column specifies the literal value.6.1 Required Job Functions   The mapper SHALL include the following LPD functions with each job,   and they SHALL have the specified value. They SHALL be the first   functions in the control file and they SHALL be in the order "H" and   then "P".   IPP                           LPD function   name                  value   name  value         description   (perhaps in security  h       H     gateway host  Originating Host   layer)   requesting-user-name  u       P     u             User identification   and in the security   layer   A mapper SHALL sends its own host rather than the client's host,   because some LPD systems require that it be the same as the host from   which the remove-jobs command comes.  A mapper MAY send its own user   name as user identification rather than the client user. But in any   case, the values sent SHALL be compatible with the LPD remove-jobs   operation.6.2 Optional Job Functions   The mapper MAY include the following LPD functions with each job.   They SHALL have the specified value if they are sent. These   functions, if present, SHALL follow the require job functions, and   they SHALL precede the required document functions.   IPP attribute                      LPD function   name           value               name value  description   job-name       j                   J    j      Job name for banner                                                  page   job-sheets     'standard'          L    u      Print banner page   job-sheets     'none'                          omit 'L' functionHerriot, et al.               Experimental                     [Page 21]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999   Note: 'L' has special meaning when it is omitted. If 'J' is omitted,   some undefined behavior occurs with respect to the banner page.6.3 Required Document Functions   The mapper SHALL include one set of the following LPD functions with   each document, and they SHALL have the specified values. For each   document, the order of the functions SHALL be 'f', 'U' and then 'N',   where 'f' is replicated once for each copy.   IPP attribute                      LPD function   name        value                  name value  description   document-   'application/octet-    f    fff    Print formatted file   format      stream' or               'application/PostScript'   copies      c                                  replicate 'f' 'c'                                                  times   none                               U    fff    Unlink data file   document-   n                      N    n      Name of source file   name   Note: the value 'fff' of the 'f' and 'U' functions is the name of the   data file as transferred, e.g. "dfA123woden".   Note: the mapper SHALL not send the 'o' function   ISSUE: should we register DVI, troff or ditroff?   If the mapper receives no "ipp-attribute-fidelitybest-effort" or it   has a value of false, then the mapper SHALL reject the job if it   specifies attributes or attribute values that are not among those   supported in the above tables.   Below is an example of the minimal control file for a job with three   copies of two files 'foo' and 'bar':      H tiger      P jones      f dfA123woden      f dfA123woden      f dfA123woden      U dfA123woden      N foo      f dfB123woden      f dfB123woden      f dfB123wodenHerriot, et al.               Experimental                     [Page 22]

RFC 2569         Mapping between LPD and IPP Protocols        April 1999      U dfB123woden      N bar7. Security Considerations   There are no security issues beyond those covered in the IPP Encoding   and Transport document [RFC2565], the IPP model document [RFC2566]   and the LPD document [RFC1179].8. References   [ipp-iig] Hasting, T., et al., "Internet Printing Protocol/1.0:             Implementer's Guide", Work in Progress.   [RFC1759] Smith, R., Wright, F., Hastings, T., Zilles, S., and J.             Gyllenskog, "Printer MIB",RFC 1759, March 1995.   [RFC1179] McLaughlin, L., "Line Printer Daemon Protocol",RFC 1179,             August 1990.   [RFC2119] Bradner, S. "Key words for use in RFCs to Indicate             Requirement Levels",BCP 14,RFC 2119, March 1997.   [RFC2234] D. Crocker et al., "Augmented BNF for Syntax             Specifications:  ABNF",RFC 2234, November 1997.   [RFC2565] Herriot, R., Butler, S., Moore, P. and R. Tuner, "Internet             Printing Protocol/1.0: Encoding and Transport",RFC 2565,             April 1999.   [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P.             Powell, "Internet Printing Protocol/1.0: Model and             Semantics",RFC 2566, April 1999.   [RFC2567] Wright, D., "Design Goals for an Internet Printing             Protocol",RFC 2567, April 1999.   [RFC2568] Zilles, S., "Rationale for the Structure and Model and             Protocol for the Internet Printing Protocol",RFC 2568,             April 1999.Herriot, et al.               Experimental                     [Page 23]

RFC 2569         Mapping between LPD and IPP Protocols        April 19999. Authors' Addresses   Robert Herriot (Editor)   Xerox Corporation   3400 Hillview Ave., Bldg #1   Palo Alto, CA 94304   Phone: 650-813-7696   Fax:  650-813-6860   EMail:  rherriot@pahv.xerox.com   Norm Jacobs   Sun Microsystems Inc.   1430 Owl Ridge Rd.   Colorado Springs, CO 80919   Phone:  719-532-9927   Fax:    719-535-0956   EMail:  Norm.Jacobs@Central.sun.com   Thomas N. Hastings   Xerox Corporation   701 S. Aviation Blvd., ESAE-231   El Segundo, CA 90245   Phone: 310-333-6413   Fax:   310-333-5514   EMail: hastings@cp10.es.xerox.com   Jay Martin   Underscore, Inc.   41-C Sagamore Park Road   Hudson, NH 03051-4915   Phone:  603-889-7000   Fax:  603-889-2699   EMail:  jkm@underscore.comHerriot, et al.               Experimental                     [Page 24]

RFC 2569         Mapping between LPD and IPP Protocols        April 199910.Appendix A: ABNF Syntax for response of Send-queue-state (short)   The syntax in ABNF for the response to the LPD command 'send-queue-   state (long)' is:    status-response = empty-queue / nonempty-queue    empty-queue = "no-entries" LF    nonempty-queue = printer-status LF heading LF *(job LF)    printer-status =  OK-status / error-status    OK-status = printer-name SP "ready and printing" LF    error-status = < implementation dependent status information >    heading = "Rank" 3SP "Owner" 6SP "Job" 13SP "Files"                    23SP "Total Size" LF                       ; the column headings and their values below begin    at the columns                       ; 1, 8, 19, 35 and 63    job = rank *SP owner *SP job *SP files *SP total-size "bytes"                      ; jobs are in order of oldest to newest    rank = "active" / "1st" / "2nd" / "3rd" / integer "th"                      ; job that is printing is "active"                      ; other values show position in the queue    owner = <user name of person who submitted the job>    job = 1*3DIGIT   ; job-number    files = <file name> *( "," <file name>) ; truncated to 24 characters    total-size = 1*DIGIT  ; combined size in bytes of all documentsHerriot, et al.               Experimental                     [Page 25]

RFC 2569         Mapping between LPD and IPP Protocols        April 199911.Appendix B: ABNF Syntax for response of Send-queue-state (long)   The syntax in ABNF for the response to the LPD command 'send-queue-   state (long)' is:    status-response = empty-queue / nonempty-queue    empty-queue = "no-entries" LF    nonempty-queue = printer-status LF  *job    printer-status =  OK-status / error-status    OK-status = printer-name SP "ready and printing" LF    error-status = < implementation dependent status information >    job = LF line-1 LF line-2 LF    line-1 = owner ":" SP rank 1*SP "[job" job SP host "]"    line-2 =  file-name 1*SP document-size "bytes"          ; jobs are in order of oldest to newest    rank = "active" / "1st" / "2nd" / "3rd" / integer "th"            ; job that is printing is "active"            ; other values show position in the queue    owner = <user name of person who submitted the job>    job = 1*3DIGIT    file-name = [ 1*DIGIT  "copies of" SP ] <file name>                  ; truncated to 24 characters    document-size = 1*DIGIT  ;size of single copy of the document.Herriot, et al.               Experimental                     [Page 26]

RFC 2569         Mapping between LPD and IPP Protocols        April 199912.Appendix C: Unsupported LPD functions   The follow LPD functions have no IPP equivalent. The LPD-to-IPP   mapper ignores them and the IPP-to-LPD mapper does not send them.    LPD command    name  description    C     Class for banner page    I     Indent Printing    H     Host of client    M     Mail when printed    S     Symbolic link data    T     Title for pr    W     Width of output    1     troff R font    2     troff I font    3     troff B font    4     troff S font   The follow LPD functions specify document-formats which have no IPP   equivalent, unless someone registers them. The LPD-to-IPP mapper   rejects jobs that request such a document format, and the IPP-to-LPD   mapper does not send them.    LPD command    name   description    c      Plot CIF file    d      Print DVI file    g      Plot file    k      reserved for Kerberized clients and servers    n      Print ditroff output file    p      Print file with 'pr' format    r      File to print with FORTRAN carriage control    t      Print troff output file    v      Print raster file    z      reserved for future use with the Palladium           print systemHerriot, et al.               Experimental                     [Page 27]

RFC 2569         Mapping between LPD and IPP Protocols        April 199913.  Full Copyright Statement   Copyright (C) The Internet Society (1999).  All Rights Reserved.   This document and translations of it may be copied and furnished to   others, and derivative works that comment on or otherwise explain it   or assist in its implementation may be prepared, copied, published   and distributed, in whole or in part, without restriction of any   kind, provided that the above copyright notice and this paragraph are   included on all such copies and derivative works.  However, this   document itself may not be modified in any way, such as by removing   the copyright notice or references to the Internet Society or other   Internet organizations, except as needed for the purpose of   developing Internet standards in which case the procedures for   copyrights defined in the Internet Standards process must be   followed, or as required to translate it into languages other than   English.   The limited permissions granted above are perpetual and will not be   revoked by the Internet Society or its successors or assigns.   This document and the information contained herein is provided on an   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.Herriot, et al.               Experimental                     [Page 28]

[8]ページ先頭

©2009-2026 Movatter.jp