() (****************************************************************) () (Copyright (c) 1992, Carnegie Mellon University) () (All Rights Reserved) () (Permission is hereby granted to use, copy, modify, and) (distribute this software provided that the above copyright) (notice appears in all copies and that any distribution be for) (noncommercial purposes.) () (Carnegie Mellon University disclaims all warranties with regard) (to this software. In no event shall Carnegie Mellon University) (be liable for any special, indirect, or consequential damages) (or any damages whatsoever resulting from loss of use, data, or) (profits arising out of or in connection with the use or) (performance of this software.) () (****************************************************************) () (This file processed with symbol generator: 27-MAY-1991 17:20:20.96.) (LPR\LPR_CHAPTER)

("Decisions of the judges will be final unless shouted down by a really overwhelming majority of the crowd present. Abusive and obscene language may not be used by contestants when addressing members of the judging panel, or, conversely, by members of the judging panel when addressing contestants (unless struck by a boomerang)."\ITALIC) (-- Mudgeeraba Creek Emu-Riding and Boomerang-Throwing Assoc.\BOLD)

("This would be fine if it weren't so moronic."\ITALIC) (-- Stephen R. Webster\BOLD) (Overview\CMUIP_LPR_1)

LPR offers many features to make printing files easy and efficient. These features include: (2\7) (LPRSMB\ LPRSMB is a VMS printer symbiont which implements the Un*x LPR (Line PRinter) protocol. It allows print jobs to be sent to other machines using the LPR protocol using the normal VMS queueing mechanism.) (LPD\ LPD is a server/daemon program which accepts incoming print requests, requests for queue information, and requests to remove jobs from queues. It allows other machines using the LPR protocol to send jobs to be printed on your VMS machine.) (LPQ\ LPQ is a user program which allows you to examine printer queues on the local machine and remote machines via the LPR protocol.) (LPRM\ LPRM is a user program which allows you to remove jobs which have been submitted to either local or remote queues via LPR.) (LPR - Print File Remotely\CMUIP_LPR_2)

This section describes how to use the LPR symbiont.

Unlike Unix, CMU-OpenVMS/IP does not have an explicit LPR command. Each remote printer that can be accessed by the local system is represented by a VMS Queue. Files are placed in the queue, with the DCL "PRINT" command, and removed from the queue and printed by the LPR symbiont. (LPD - Print Remote Files\CMUIP_LPR_3)

This section covers how to use the LPD (LPR demon).

The LPR demon (LPD) is another server process, like FTP_Server.EXE or Finger_Server.EXE which waits for requests to arrive from the network. In addition to servicing remote print jobs, it also responds to requests for information about local print queues. (LPRM - Delete Remote Print Jobs\CMUIP_LPR_4)

This section covers how to use the LPRM command (Using LPRM\\NEWPAGE) (LPRM\\CMUIP_LPR_5) Remove print jobs from a remote queue (LPRM) (Queue) (Command Qualifiers) (/ALL_ENTRIES\None.) (/ABORT\/ABORT) (/DEBUG\/None.) (/ENTRY=entry-list\None.) (/NODE=node\None.) (/OUTPUT=file-spec\/OUTPUT="LPRM.LIS") (/USER=user-list\None.) (LIST) /ABORT may not be used with /ALL_ENTRIES nor /ENTRY /ALL_ENTRIES.BYHOST may not be used with /ABORT, /ENTRY, or /USER (Queue:\A valid VMS queue name) (queue) Specifies the name of an LPR printer on a remote host. There should be a corresponding local VMS queue associated with that printer. (Command Qualifiers) (/ALL_ENTRIES) Specifies that all queue entries are to be removed. (/DEBUG) Produce debugging information. (/ENTRY=entry-list) Remove only the specified entries. (/NODE=node) The node which on which the local VMS queue resides. (/OUTPUT=file-spec) Redirect the command output to the specified file. (/USER=user-list) Remove only entries belonging to the specified users. To invoke the LPRM utility from the CLI prompt, type LPRM followed by a queue name. ($) ( LPRM Sweetgum /ALL) Here we attempt to delete all files in the SWEETGUM queue. (LPQ - Print File Remotely\CMUIP_LPR_6)

This section covers how to use the LPQ command (Using LPQ\\NEWPAGE) (LPQ\\CMUIP_LPR_7) Examine the print queue on a remote host. (LPQ) (Queue) (Command Qualifiers) (/ALL_ENTRIES\None.) (/BRIEF\/BRIEF) (/ENTRY=entry-list\None.) (/Full\None.) (/NODE=node\None.) (/OUTPUT=file-spec\/OUTPUT="LPQ.LIS") (/USER=user-list\None.) Neither the /USER nor the /ENTRY qualifier are not permitted at the same time as the /ALL_ENTRIES qualifier. (Queue:\A valid VMS queue name) (queue) Specifies the name of an LPR printer on a remote host. There should be a corresponding local VMS queue associated with that printer. (Command Qualifiers) (/ALL_ENTRIES) Specifies that all queue entries are to be displayed. (/BRIEF) Display only a brief summary of each entry. (/ENTRY=entry-list) Show only the specified entries. (/Full) Verbose description of entries displayed. (/NODE=node) The node which on which the local VMS queue resides. (/OUTPUT=file-spec) Redirect the command output to the specified file. (/USER=user-list) Display only entries belonging to the specified users. To invoke the LPQ utility from the CLI prompt, type LPQ followed by a queue name. ($) ( LPQ Sweetgum) Here we attempt to list files in the SWEETGUM queue. (LPR FILES & LOGICALS\CMUIP_LPR_8) (LPR Support procedures\CMUIP_LPR_9)

(UNNUMBERED) LPD_Hosts.COM

This command procedure allows you to add/delete/list hosts in the HOSTS.LPD file. This file contains a list of hosts which are permitted to access your host via LPR. You may enter hosts with either their name or IP number. Note that the host name must be fully qualified (ie, No1.Andrew.CMU.Edu). LPR_Startup.COM

This is the main startup file for all the LPR programs. It defines the required logical name tables, defines any remote queues which are to be serviced via LPRSMB, etc. It reads PRINTCAP.TXT to define queues which are to accessible for LPR services (including both local and remote queues). (Logical Names\CMUIP_LPR_10)

There are several logical names that are used by the LPR programs. (LPD$SPOOL_DIR\CMUIP_LPR_11)

Specifies the spool directory for incoming print jobs. By default, it is defined to be CMUIP_ROOT:[SYSMGR]. You may want to create a sub-directory under CMUIP_ROOT:[SYSMGR] for the LPD spool area (for example, CMUIP_ROOT:[SYSMGR.LPD_SPOOL]). LPD spool files have a filename format similar to: (DF) (seq,job-id,remote_host) where

(2\10) (seq\the job sequence id (A..Z)) (job-id\the remote job entry number) (remote_host\the name of the remote host from which the job originated) (lpd$log_dir\CMUIP_LPR_12)

Specifies the directory to be used to store the daily LPD log files. By default, it is defined to be CMUIP_ROOT:[SYSMGR]. Like LPD$SPOOL_DIR, you may wish to create a sub-directory under CMUIP_ROOT:[SYSMGR] for the LPD logs. To turn off the LPD logging feature, define LPD$LOG_DIR to be NL:. The file name format of the LPD log files is LPD-dd-mmm-yyyy.LOG. (LPRSMB$LOG_DIR\CMUIP_LPR_13)

Specifies the directory to be used to store the daily LPRSMB log files. By default, it is defined to be CMUIP_ROOT:[SYSMGR]. Like LPD$LOG_DIR, you may wish to create a sub-directory under CMUIP_ROOT:[SYSMGR] for the LPRSMB logs. To turn off the LPRSMB logging feature, define LPRSMB$LOG_DIR to be NL:. The file name format of the LPRSMB log files is LPRSMB-dd-mmm-yyyy.LOG. (INET$LPD_HOSTS\LPD_HOSTS)

Specifies the LPD host authorization file. By default, it is defined as part of the LPR_STARTUP.COM procedure to be CMUIP_ROOT:[SYSMGR]HOSTS.LPD. This file is NOT editable. You must use the LPD_HOSTS.COM procedure supplied to add and remove entries from this file. (INET$PRINTCAP\PRINTCAP)

Specifies the LPRSMB/LPD printcap file. By default, it is defined as part of the LPR_STARTUP.COM procedure to be CMUIP_ROOT:[SYSMGR]PRINTCAP.TXT. This file contains the definitions for all printers to be used with LPRSMB/LPD. This file may be edited with a normal editor. See the template definitions for more information on the format of entries. (Logical name tables\CMUIP_LPR_14)

There are several logical name tables that are used by the LPR programs. (CMUIP$CLUSTER_ALIASES\CMUIP_LPR_15)

This logical name table is used by LPD to determine which hosts are part of a specific cluster, for purposes of removing jobs. When a job is submitted by a cluster member to a LPRSMB queue, the host name that the remote host will see is the hostname of the host that is running the queue, which in a cluster, is not necessarily the same as the host which sent the job. By mapping cluster members' hostname's to the hostname of the cluster member actually running the LPRSMB queue, an alias for all members of the cluster is established. In a homogeneous cluster where the boot node is running all the LPRSMB queues, all the clients would map to the boot node's hostname. The format of entries in this table is: "member-host-name" "alias-node-host-name"

where "alias-node-host-name" would be the hostname of the node in the cluster running the LPRSMB queues. (CMUIP$LPD_TABLE\CMUIP_LPR_16)

This logical name table provides a mapping of 'global' printer names to local queue names. Usually, a global printer name maps to a local queue of of the same name, but it is possible using this table to map the global name to a local queue of another name. The format of the entries in this table is: "global-name" "local-name"

All names in this table should be defined with the /TRANSLATION=TERMINAL qualifier to make ensure that none of the names are translated past the local-name. By default, names in this table are set up by executing the LPR_STARTUP.COM procedure, which defines the names according to the printers defined in the PRINTCAP.TXT file. (CMUIP$LPQ_TABLE\CMUIP_LPR_17) (CMUIP$LPRM_TABLE\CMUIP_LPR_18)

These two logical name tables map a printer name to a host name which can supply queue information for the printer. Normally, the contents of these two tables is identical, and thus, one of the tables is defined as an alias for the other. The format for entries in these tables is: "printer" "host-name"

Since these tables are accessed by the client programs LPQ and LPRM, these tables need to be world-readable. By default, both tables are created and all definitions created by executing the LPR_STARTUP.COM procedure. Generally, printer entries in these tables map either to the local system or to the cluster member who actually is running the outgoing LPRSMB queue for the specific printer. This enables the local LPD to display its queue and allows for jobs to be removed from the local queue and the remote queue. To disable this feature, map the printer entries to the remote host which is hosting the printer (ie, the entries in these tables would then be identical to the entries in the CMUIP$LPRSMB_TABLE). (CMUIP$LPRSMB_TABLE\CMUIP_LPR_19)

This logical name table maps a printer name to a host which will accept files from the printer queue for printing or further processing. Entries in this table have the same format as entries in the CMUIP$LPQ_TABLE. The LPRSMB uses these entries to determine where to send files from its queues to be printed. (System resource requirements\CMUIP_LPR_20)

In order to support LPD, it is recommended that the SYSGEN parameter PQL_MASTLM be raised to 100 or more. This is required to support the LPQ functions of LPD. If it is not at 100 or more, it is possible that LPQ queries to LPD which generate long output reports may hang. (ie, lpq/all/full (queue))

If you notice this occurring, stop the LPD.xxx process that is hung and increase the parameter. {aside: this may be settable via the internet.config file also.} (PRINTCAP printer definitions\CMUIP_LPR_21)

Printcap file format: This file is a normal editable text file. Fields may be separated by any whitespace. Comment lines begin with "!" (queue)("remote_host","local_host",scs_node,default_form,flag) where:

(2\12) (queue\name of queue) (remote_host\quoted string containing remote host Internet Domain Name for this queue) (local_host\quoted string specifying the local host Internet Domain Name for this queue (in a cluster, this is the node where the queue is running). It is the same node as the scs node.) (scs_node\DECNet cluster node to host this queue) (default_form\default form for this queue (usually DEFAULT)) (flag\determines whether this queue should be started when initialized (start/stop) or if it defines a local device queue which only needs the necessary LPR logical names to be defined (DEFINE-LOGICALS)) (PRINTCAP ENTRIES\CMUIP_LPR_22) (Adding a printer entry:\CMUIP_LPR_23)

Once a new queue is entered into the PRINTCAP file, it can be defined by executing the LPR_STARTUP.COM procedure as follows: @CMUIP_ROOT:[SYSMGR]LPR_STARTUP queue (Changing an existing printer entry:\CMUIP_LPR_24)

When changing the entry for an existing running queue, use the LPR_STARTUP.COM procedure as follows: @CMUIP_ROOT:[SYSMGR]LPR_STARTUP queue RESTART to restart the queue with the new parameters. (Redefining logical names\CMUIP_LPR_25)

To redefine any logical names for a queue without reinitializing the queue:) @CMUIP_ROOT:[SYSMGR]LPR_STARTUP queue "" DEFINE-LOGICALS (Diagnosing LPR problems\CMUIP_LPR_26) (LPD\CMUIP_LPR_27)

(Problem) Jobs from remote system do not arrive in local queue / jobs hang trying to send to local host.

Reason(s): (NUMBERED) Remote host is not in hosts.lpd file. Verify this by running CMUIP_ROOT:[SYSMGR]LPD_HOSTS.COM. If it is not there, then add the remote's hostname. Make sure it is the full name and not an abbreviation. Try executing an LPQ from the remote system and verify what error (if any) it reports. If LPQ works, then the remote system has permission to send files also. Check the LPD log file on the local host. See what error (if any) the local LPD is reporting while trying to process incoming jobs. (Usually, most LPD problems can be found by checking the log files). LPD$SPOOL_DIR isn't defined correctly. Make sure that the logical name points to an existing/writable directory. The printer name isn't defined correctly or at all in the CMUIP$LPD_TABLE logical name table. Verify by: SHOW LOGICAL/TABLE=CMUIP$LPD_TABLE printer-name Quota exceeded. The spool directory for LPD is on a volume with quotas and the UIC running the LPD process has exhausted its disk quota. Either move the spool area to a volume without quotas or raise the quota for the owner UIC of LPD. Maximum process count on the local host is exceeded. Verify by SHOW MEMORY and note if there are free process entry slots. You may either have to raise the maximum process count via SYSGEN and reboot the system or there may a large number of hung processes clogging up your system. Insufficient disk space for a particular print file. The remote system may be trying to print a file that would exceed the disk space on the volume that LPD spools incoming files to. Verify this by executing a LPQ on the remote system and check the sizes of the jobs. Internal LPD errors. Submit an SPR (send your LPD log file as well as any other pertinent information). (Problem) LPQ of queue on local system shows no information or abbreviated information (as compared to SHOW QUEUE/ALL queue)

Reason(s): (NUMBERED) Check for the above symptoms for hung jobs. Check LPD log to verify that the local system is even seeing a connection being opened to it. If not, there may be a network problem. In the LPD log, is the connection closing with an error status? Is it showing an access violation termination? Gather any/all information and submit an SPR. (LPRSMB\CMUIP_LPR_28) (Problem) Jobs are not getting sent to the remote host.

Reason(s): (NUMBERED) Check the LPRSMB log file. Verify that the LPRSMB is seeing the correct remote host name for this queue. If not, check the printcap file for an error in the entry and restart the queue via LPR_STARTUP.COM. Check for other error status in the log file. Network problems -- the IPACP is dead/dying/hung, the remote system is not currently reachable (cannot telnet, FTP, ping remote host) See if LPQ of the queue works from the local host. If so, check the remote host administrator to check its lpd logs for errors. (LPRM\CMUIP_LPR_29) (Problem) Cannot remove job from queue.

Reason(s): (NUMBERED) Verify that the job originated from the local host or cluster (use LPQ/FULL). If the job in question did not originate from the local host or cluster, you cannot remove it, even if the username matches. If job is in local cluster queue and came from a local cluster member, verify that the hostname for this cluster member is in the CMUIP$CLUSTER_ALIASES logical name table and points to the node serving the queue. Verify that you own the job. Only users with OPER and WORLD privileges may remove jobs belonging to users other than themselves.