home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / l / lpr / doc / RFC1179 < prev   
Text File  |  1996-11-15  |  24KB  |  789 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Printing Working Group                 L. McLaughlin III, Editor
  8. Request for Comments:  1179                         The Wollongong Group
  9.                                                              August 1990
  10.  
  11.  
  12.                       Line Printer Daemon Protocol
  13.  
  14. Status of this Memo
  15.  
  16.    This RFC describes an existing print server protocol widely used on
  17.    the Internet for communicating between line printer daemons (both
  18.    clients and servers).  This memo is for informational purposes only,
  19.    and does not specify an Internet standard.  Please refer to the
  20.    current edition of the "IAB Official Protocol Standards" for the
  21.    standardization state and status of this protocol.  Distribution of
  22.    this memo is unlimited.
  23.  
  24. 1. Introduction
  25.  
  26.    The Berkeley versions of the Unix(tm) operating system provide line
  27.    printer spooling with a collection of programs: lpr (assign to
  28.    queue), lpq (display the queue), lprm (remove from queue), and lpc
  29.    (control the queue).  These programs interact with an autonomous
  30.    process called the line printer daemon.  This RFC describes the
  31.    protocols with which a line printer daemon client may control
  32.    printing.
  33.  
  34.    This memo is based almost entirely on the work of Robert Knight at
  35.    Princeton University.  I gratefully acknowledge his efforts in
  36.    deciphering the UNIX lpr protocol and producing earlier versions of
  37.    this document.
  38.  
  39. 2. Model of Printing Environment
  40.  
  41.    A group of hosts request services from a line printer daemon process
  42.    running on a host.  The services provided by the process are related
  43.    to printing jobs.  A printing job produces output from one file.
  44.    Each job will have a unique job number which is between 0 and 999,
  45.    inclusive.  The jobs are requested by users which have names.  These
  46.    user names may not start with a digit.
  47.  
  48. 3. Specification of the Protocol
  49.  
  50.    The specification includes file formats for the control and data
  51.    files as well as messages used by the protocol.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. McLaughlin                                                      [Page 1]
  59.  
  60. RFC 1179                          LPR                        August 1990
  61.  
  62.  
  63. 3.1 Message formats
  64.  
  65.    LPR is a a TCP-based protocol.  The port on which a line printer
  66.    daemon listens is 515.  The source port must be in the range 721 to
  67.    731, inclusive.  A line printer daemon responds to commands send to
  68.    its port.  All commands begin with a single octet code, which is a
  69.    binary number which represents the requested function.  The code is
  70.    immediately followed by the ASCII name of the printer queue name on
  71.    which the function is to be performed.  If there are other operands
  72.    to the command, they are separated from the printer queue name with
  73.    white space (ASCII space, horizontal tab, vertical tab, and form
  74.    feed).  The end of the command is indicated with an ASCII line feed
  75.    character.
  76.  
  77. 4. Diagram Conventions
  78.  
  79.    The diagrams in the rest of this RFC use these conventions.  These
  80.    diagrams show the format of an octet stream sent to the server.  The
  81.    outermost box represents this stream.  Each box within the outermost
  82.    one shows one portion of the stream.  If the contents of the box is
  83.    two decimal digits, this indicates that the binary 8 bit value is to
  84.    be used.  If the contents is two uppercase letters, this indicates
  85.    that the corresponding ASCII control character is to be used.  An
  86.    exception to this is that the character SP can be interpreted as
  87.    white space.  (See the preceding section for a definition.)  If the
  88.    contents is a single letter, the ASCII code for this letter must be
  89.    sent.  Otherwise, the contents are intended to be mnemonic of the
  90.    contents of the field which is a sequence of octets.
  91.  
  92. 5. Daemon commands
  93.  
  94.    The verbs in the command names should be interpreted as statements
  95.    made to the daemon.  Thus, the command "Print any waiting jobs" is an
  96.    imperative to the line printer daemon to which it is sent.  A new
  97.    connection must be made for each command to be given to the daemon.
  98.  
  99. 5.1 01 - Print any waiting jobs
  100.  
  101.       +----+-------+----+
  102.       | 01 | Queue | LF |
  103.       +----+-------+----+
  104.       Command code - 1
  105.       Operand - Printer queue name
  106.  
  107.    This command starts the printing process if it not already running.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. McLaughlin                                                      [Page 2]
  115.  
  116. RFC 1179                          LPR                        August 1990
  117.  
  118.  
  119. 5.2 02 - Receive a printer job
  120.  
  121.       +----+-------+----+
  122.       | 02 | Queue | LF |
  123.       +----+-------+----+
  124.       Command code - 2
  125.       Operand - Printer queue name
  126.  
  127.    Receiving a job is controlled by a second level of commands.  The
  128.    daemon is given commands by sending them over the same connection.
  129.    The commands are described in the next section (6).
  130.  
  131.    After this command is sent, the client must read an acknowledgement
  132.    octet from the daemon.  A positive acknowledgement is an octet of
  133.    zero bits.  A negative acknowledgement is an octet of any other
  134.    pattern.
  135.  
  136. 5.3 03 - Send queue state (short)
  137.  
  138.       +----+-------+----+------+----+
  139.       | 03 | Queue | SP | List | LF |
  140.       +----+-------+----+------+----+
  141.       Command code - 3
  142.       Operand 1 - Printer queue name
  143.       Other operands - User names or job numbers
  144.  
  145.    If the user names or job numbers or both are supplied then only those
  146.    jobs for those users or with those numbers will be sent.
  147.  
  148.    The response is an ASCII stream which describes the printer queue.
  149.    The stream continues until the connection closes.  Ends of lines are
  150.    indicated with ASCII LF control characters.  The lines may also
  151.    contain ASCII HT control characters.
  152.  
  153. 5.4 04 - Send queue state (long)
  154.  
  155.       +----+-------+----+------+----+
  156.       | 04 | Queue | SP | List | LF |
  157.       +----+-------+----+------+----+
  158.       Command code - 4
  159.       Operand 1 - Printer queue name
  160.       Other operands - User names or job numbers
  161.  
  162.    If the user names or job numbers or both are supplied then only those
  163.    jobs for those users or with those numbers will be sent.
  164.  
  165.    The response is an ASCII stream which describes the printer queue.
  166.    The stream continues until the connection closes.  Ends of lines are
  167.  
  168.  
  169.  
  170. McLaughlin                                                      [Page 3]
  171.  
  172. RFC 1179                          LPR                        August 1990
  173.  
  174.  
  175.    indicated with ASCII LF control characters.  The lines may also
  176.    contain ASCII HT control characters.
  177.  
  178. 5.5 05 - Remove jobs
  179.  
  180.       +----+-------+----+-------+----+------+----+
  181.       | 05 | Queue | SP | Agent | SP | List | LF |
  182.       +----+-------+----+-------+----+------+----+
  183.       Command code - 5
  184.       Operand 1 - Printer queue name
  185.       Operand 2 - User name making request (the agent)
  186.       Other operands - User names or job numbers
  187.  
  188.    This command deletes the print jobs from the specified queue which
  189.    are listed as the other operands.  If only the agent is given, the
  190.    command is to delete the currently active job.  Unless the agent is
  191.    "root", it is not possible to delete a job which is not owned by the
  192.    user.  This is also the case for specifying user names instead of
  193.    numbers.  That is, agent "root" can delete jobs by user name but no
  194.    other agents can.
  195.  
  196. 6. Receive job subcommands
  197.  
  198.    These commands  are processed when  the line printer  daemon  has
  199.    been given the  receive job command.  The  daemon will continue  to
  200.    process commands until the connection is closed.
  201.  
  202.    After a subcommand is sent, the client must wait for an
  203.    acknowledgement from the daemon.  A positive acknowledgement is an
  204.    octet of zero bits.  A negative acknowledgement is an octet of any
  205.    other pattern.
  206.  
  207.    LPR clients SHOULD be able to sent the receive data file and receive
  208.    control file subcommands in either order.  LPR servers MUST be able
  209.    to receive the control file subcommand first and SHOULD be able to
  210.    receive the data file subcommand first.
  211.  
  212. 6.1 01 - Abort job
  213.  
  214.       Command code - 1
  215.       +----+----+
  216.       | 01 | LF |
  217.       +----+----+
  218.  
  219.    No operands should be supplied.  This subcommand will remove any
  220.    files which have been created during this "Receive job" command.
  221.  
  222.  
  223.  
  224.  
  225.  
  226. McLa