# Compaq TCP/IP Services for OpenVMS
Management

Previous | Contents | Index

## 21.4.5 Occluded Mounting

Occluded mounting allows you to mount a file system onto a client mount point that is higher or lower in the directory structure than an existing, active mount. This is different from overmounting because dismounting does not occur. Instead, the client occludes (hides from view) the subdirectories that are added to or dropped from the original mount specification when you perform a directory listing.

Specify the /FORCE qualifier with an occluded mount.

In the following example, the mount point specification was backed up one subdirectory from the previous one. If you enter the SHOW MOUNT command, both mounts are visible. However, if you enter DIRECTORY for DNFS2:[USERS.SPARROW], [.MNT] is no longer visible. To make this subdirectory visible again, issue the DISMOUNT command to dismount DNFS2:[USERS.SPARROW].

    TCPIP> MOUNT DNFS2:[USERS.SPARROW.MNT] /HOST="birdy" /PATH="/usr"

    %DNFS-S-MOUNTED, /usr mounted on _DNFS2:[USERS.SPARROW.MNT]

    TCPIP> MOUNT DNFS2:[USERS.SPARROW] /HOST="birdy" /PATH="/usr" /FORCE

    %DNFS-S-MOUNTED, /usr mounted on _DNFS2:[USERS.SPARROW]
    -TCPIP-I-OCCLUDED, previous contents of _DNFS2:[USERS.SPARROW] occluded

The following example shows a mount of UNIX directory `/usr` to the OpenVMS device and directory DNFS3:[0,0].

On the UNIX host, the directory listing looks like this:

    unix% ls
    grebe wings pratincole

To do the mount, enter:

    $ TCPIP MOUNT DNFS3: /HOST="unix" /PATH="/usr"

To check that the mount succeeded, enter:

    $ TCPIP SHOW MOUNT DNFS3: /FULL
    .
    .
    .

On the OpenVMS host, the directory listing looks like this:

    $ DIRECTORY [0,0]

    Directory DNFS3:[000,000]

    GREBE.DIR;1  WINGS.DIR;1   PRATINCOLE.DIR;1

    Total of 3 files.

# Part 6
Configuring Printing Services

Part 6 describes how to set up and manage the printing services available with TCP/IP Services, and includes the following chapters:

- Chapter 22, Setting Up and Managing the LPR/LPD Print Service, describes how to set up LPR/LPD, providing access to local and remote print queues.
- Chapter 23, Setting Up and Managing TELNETSYM, describes how to set up and manage the TELNET print symbiont (TELNETSYM). TELNETSYM provides remote print services that enable the use of standard OpenVMS printing features not available with LPR/LPD.
- Chapter 24, Setting Up PC-NFS, describes how to set up and manage printing for PC-NFS client users.

# Chapter 22
Setting Up and Managing the LPR/LPD Print Service

The LPR/LPD service allows other network hosts to access printers on the server system and provides local access to printers on remote hosts. Remote print server and the client hosts must run Version 4.2 or later of the Berkeley Software Distribution line printer spooler software ( `lpd` ) to interoperate with TCP/IP Services LPR/LPD.

This chapter reviews key concepts and describes:

- How to configure the LPR/LPD print service ( Section 22.2)
- How to configure printers ( Section 22.3)
- How to manage LPD server queues ( Section 22.4)
- How to control access to local LPD server queues ( Section 22.5)
- How to enable LPR/LPD OPCOM messages ( Section 22.6)
- How to use OpenVMS flag page options with LPR/LPD ( Section 22.7)
- How to solve LPR/LPD problems ( Section 22.8)

# 22.1 Key Concepts

The LPR/LPD service has both a client component (LPR) and a server component (LPD), both of which are partially included in an OpenVMS queue symbiont. The client is activated when you use one of the following commands:

- PRINT---to submit a print job to a remote printer whose queue is managed by the LPD symbiont.
- LPRM---to remove (cancel) a pending print job previously spooled.
- LPQ---to view the queue of pending jobs for a remote printer.

See the DIGITAL TCP/IP Services for OpenVMS User's Guide for general information about using these commands.

The server is activated when a remote user submits a print job to a printer configured on the OpenVMS server. The LPD server consists of two components:

- LPD receiver---a process that handles the incoming request from the remote system over the network. It copies the control file (CF) and data file (DF) representing the print job to the requested printer's LPD spool directory, and places the control file on the print queue for further processing. The receiver also handles LPQ and LPRM functions from remote clients.
- LPD symbiont---which parses the print job's control file and submits the data files to the designated local printer's print queue.

The same LPD symbiont image is used for both client and server. It acts as the client on queues set up for remote printers, and it acts as the server on the local LPD queue.

The LPD uses the printcap database to process print requests. The printcap database, located in SYS$SPECIFIC:[TCPIP$LPD]:TCPIP$PRINTCAP.DAT, is an ASCII file that defines the print queues. The printcap entries are similar in syntax to the entries in a UNIX `/etc/printcap` file.

Use the printer setup program LPRSETUP to configure or modify printers. The setup program creates spool directories and log files based on the information you supply. Section 22.3 describes how to use the printer setup program to configure printers.

# 22.2 Configuring LPR/LPD

If you use the configuration procedure to configure LPR/LPD, the procedure completes the following tasks:

- Adds the LPD service to the services database.
- Adds the TCPIP$LPD account to the SYSUAF.DAT database.
- Creates the directory SYS$SPECIFIC:[TCPIP$LPD] for the TCPIP$LPD account.
- Enables both client and server components.

After you start the service, the logical names listed in Table 22-1 are defined.

Table 22-1 LPD Logical Names
Logical Name | Description
--- | ---
TCPIP$LPD_CLIENT_ENABLE | Enables the LPD client.
TCPIP$LPD_PRINTCAP | Specifies the database that maps queues and makes queues available.
TCPIP$LPD_SPOOL | Specifies the main spooling directory.
TCPIP$LPD_LOGFILE | Specifies the name of the log file for the TCPIP$LPD_QUEUE, which precedes all inbound jobs.
TCPIP$LPD_STREAM_PASSALL | This version of TCP/IP Services adds extra line feed characters to files with embedded carriage control. This logical preserves the behavior of previous versions of TCP/IP Services and is useful when your users print from Compaq PATHWORKS Client software.
TCPIP$LPD_KEEPALIVE | The KEEPALIVE timer is used to periodically check the other end of a link that appears to be idle. The purpose of the time is to detect when a remote host has failed or has been brought down, or when the logical connection has been broken. Set this logical using the following command:
    $ DEFINE/SYSTEM TCPIP$LPD_KEEPALIVE
This logical name is not used by the server; it is used by LPD. If you are changing this logical name, there is no need to restart TCP/IP Services. If this logical is defined, the KEEPALIVE function is enabled. By default, the KEEPALIVE timer is disabled. Broken connections will be detected only if the relevant application sends data.
TCPIP$LPD_PROBETIME | The PROBE timer specifies: When establishing an initial connection, the number of seconds TCP/IP Services will wait for a response before a timeout occurs. The time is active regardless of whether the TCPIP$LPD_KEEPALIVE logical is set. The length of time (in seconds) allowed to pass before TCP/IP Services checks an idle connection. This requires that the TCPIP$LPD_KEEPALIVE logical be set. You control the PROBE timer using the following command:
    $ DEFINE/SYS TCPIP$LPD_PROBE
    x
In this command, x specifies the number of seconds to wait before timing out the connection. The value of the PROBE timer must always be less than or equal to the value of the DROP timer. The default value for the PROBE timer is 75 seconds.
TCPIP$LPD_DROPTIME | The DROP timer indicates how long (in seconds) that a connection should be maintained (after repeated timeouts) before closing the connection. The DROP timer is in effect only after the link has been established, and it takes effect only if the TCPIP$KEEPALIVE logical is set. You control the DROP timer using the following command:
    $ DEFINE/SYS TCPIP$LPD_DROP
    x
In this command, x specifies the number of seconds to maintain the connection before closing it. The default value for the DROP timer is 300 seconds.
TCPIP$LPD_1ST_VFC_PREFIX_SPECIAL | LPD can insert an extra line feed character at the beginning of print files. Set this logical to suppress this action.
TCPIP$LPD_VMS_FLAGPAGES | Enables the OpenVMS flag page print options, as described in Section 22.7.
TCPIP$LPD_PS_EXT | Control Compaq PrintServer extension support. By default, PrintServer extensions are supported by LPD. To disable PrintServer extension support on the system, enter the following command:
    $ DEFINE/SYSTEM TCPIP$LPD_PS_EXT NON_PS
To enable PostScript extensions, specify LPS as the value of this logical name. For more information about configuring PrintServer extension support for a printer, see Section 22.3.
TCPIP$LPD_DEBUG | Writes diagnostics to the LPD queue log file. Applies to outbound jobs (LPD client) and to inbound jobs (LPD server) that are processed by the LPD symbiont controlling the local print queue. See the description of the TCPIP$LPD_RCV logical for more information.
TCPIP$LPD_RCV | Writes diagnostics to the receiver log file TCPIP$LPD_RCV_LOGFILE.LOG. Applies to inbound jobs (LPD server) from the time they are received from the remote host over the network to the time they are queued to the local print queue for processing by the LPD print symbiont. TCPIP$LPD_DEBUG and TCPIP$LPD_RCV are bit-mapped values. The low-order three bits turn on all diagnostics generated by either the sender or the receiver. To define these logical names, set the following bits in the value: Bit 0 indicates minimal debugging information. Bit 1 indicates an intermediate amount of debugging information. Bit 2 indicates the full amount of debuggging information available. Bit 3 logs the actual data sent and received over the network. If you set the fourth bit, the LPD symbiont logs each buffer that it sends over the TCP/IP link, and the LPD receiver logs each buffer that it receives from the TCP/IP link. The log files let you see exactly what the LPD is sending (for outbound jobs) and receiving (for inbound jobs). To set the fourth bit, enter:
    $ DEFINE /SYSTEM LPD_RCV 8

    $ DEFINE /SYSTEM LPD_DEBUG 8
For more information about using these logical to solve printing problems, see Section 22.8.

## 22.2.1 LPD Server Startup and Shutdown

The LPD server can be shut down and started independently of TCP/IP Services. This is useful when you change parameters or logical names that require the service to be restarted.

The following files are provided:

- SYS$STARTUP:TCPIP$LPD_STARTUP.COM allows you to start up the LPD server independently.
- SYS$STARTUP:TCPIP$LPD_SHUTDOWN.COM allows you to shut down LPD server independently.

To preserve site-specific parameter settings and commands, create the following files. These files are not overwritten when you reinstall TCP/IP Services:

- SYS$STARTUP:TCPIP$LPD_SYSTARTUP.COM can be used as a repository for site-specific definitions and parameters to be invoked when the LPD server is started.
- SYS$STARTUP:TCPIP$LPD_SYSHUTDOWN.COM can be used as a repository for site-specific definitions and parameters to be invoked when the LPD server is shut down.

# 22.3 Configuring Printers

This section describes how use the printer setup program, SYS$SYSTEM:TCPIP$LPRSETUP.EXE, to configure a printer directly connected to your computer. Similar to the UNIX `/usr/sbin/lprsetup` utility, you can also use this program to modify a printer's configuration or to remove a printer.

Before running the printer setup program, you need the following information for each printer you want to configure:

- Printer name, including all synonyms (aliases)
- Printer type (local or remote)
- Host and printer name for the remote printer
- Spool directory
- Error log directory

The printer setup program performs the following:

- Creates or edits the existing printcap database.
- Creates a spooling directory.
- Creates an error log file.
- Prompts you to modify previously selected symbols.

Table 22-2 describes the LPRSETUP commands.

Table 22-2 LPRSETUP Commands
Command | Description
--- | ---
add | Adds a printer name. The printer name is the name of a LPD client print queue that users can specify in the /QUEUE qualifier to the PRINT command.
delete | Removes an existing printer from your configuration.
view | Displays the contents of the current printcap database.
help | Displays online help about the LPRSETUP program.
exit | Exits from the LPRSETUP program.

You can abbreviate any command option with its initial letter. Enter information at each prompt, or press Return (or Enter) to accept the default. Enter a question mark (?) to obtain a description of the information requested at each prompt.

The following example shows how to use the printer setup program to configure a printer named LOCAL1:

    $ RUN SYS$SYSTEM:TCPIP$LPRSETUP

    TCPIP Printer Setup Program

    Command  < add delete view help exit >: add
    Adding printer entry, type '?' for help.

    Enter printer name to add : LOCAL1
    Enter the FULL name of one of the following printer types:
    remote local : local
    Enter printer synonym:

    Enter full file specification for spool directory
    SPOOLER DIRECTORY 'sd' :  [SYS$SPECIFIC:[TCPIP$LPD.LOCAL1]] ?
    Enter full file specification for printer log file.
    printer error log file 'lf' [SYS$SPECIFIC:[TCPIP$LPD]LOCAL1.LOG] ?
    Enter the name of the printcap symbol you want to modify.  Other
    valid entry is :
            'q'     to quit (no more changes)

    The names of the printcap symbols are:

     sd for the printer spool directory
     lf for the printer error log file
     lp for the name of the local printer
     ps for the LPD PrintServer extensions flag
     rm for the name of the remote host
     rp for the name of the remote printer
     fm for the printer form field
     pa for the /PASSALL flag
     nd for the /NODELETE flag
     cr for the cr flag
     p1-p8 for the /PARAMETER=(p1,...,p8) field

    Enter symbol name: q

                        Symbol  type  value
                        ------  ----  -----
    Error log file    :  lf     STR   /SYS$SPECIFIC/TCPIP$LPD/LOCAL1.LOG
    Printer Queue     :  lp     STR   LOCAL1
    Spool Directory   :  sd     STR   /SYS$SPECIFIC/TCPIP$LPD/LOCAL1

    Are these the final values for printer LOCAL1 ? [y]

    Adding comments to printcap file for new printer, type '?' for help.
    Do you want to add comments to the printcap file [n] ? :

            ***********************************************
            * TCPIP$LPD_SYSTARTUP.COM   TCPIP$LPD_PRINTCAP*
            *    and TCPIP$LPD_SYSHUTDOWN.COM             *

            *  have been updated for this printer         *
            *                                             *
            * Set up activity is complete for this printer*
            ***********************************************

    Command  < add delete view help exit >: exit

The following example shows how to use the printer setup program to remove a printer from the printcap database:

    $ RUN SYS$SYSTEM:TCPIP$LPRSETUP

    Command  < add delete view help exit >: delete
    Deleting a printer entry, type '?' for help.

    Enter printer name to delete (or view to view printcap file): LOCAL1

                        Symbol  type  value
                        ------  ----  -----
    Error log file    :  lf     STR   /SYS$SPECIFIC/TCPIP$LPD/LOCAL1.LOG
    Printer Queue     :  lp     STR   LOCAL1
    Spool Directory   :  sd     STR   /SYS$SPECIFIC/TCPIP$LPD/LOCAL1

    Delete LOCAL1, are you sure? [n]  y

    Deleted file: /SYS$SPECIFIC/TCPIP$LPD/LOCAL1.LOG
    Deleted files from spooling directory: /SYS$SPECIFIC/TCPIP$LPD/LOCAL1
    Removed spooling directory: /SYS$SPECIFIC/TCPIP$LPD/LOCAL1.DIR

    Command  < add delete view help exit >: exit

## 22.3.1 Printer Characteristics

You can modify the printer configuration by specifying two-character `printcap` symbols and associated values. Table 22-3 describes the printcap symbols.

Table 22-3 Printcap Symbols
Symbol | Description
--- | ---
sd | Printer spool directory, specified as a UNIX path name.
lf | Error log file, specified as a UNIX path name. This is optional. If you do not specify an error log file, errors are logged to the operator console. An error log can be shared by all local printers if you specify the same file in each printcap printer entry.
lp | Name of the local printer.
ps | LPD PrintServer extensions flag.
rm | Name of the remote host.
rp | Name of the remote printer. The printer name is case sensitive. If you are configuring an LPD print queue to print ASCII text files to an HP LaserJet printer with a JetDirect network card, set the value of the `rp` printcap field to `text.` For example:
    :rp = text\
To configure this type of printer for printing PostScript or binary files, set this field to `raw.`
fm | Printer form field. This is equivalent to the OpenVMS command PRINT/FORM. For example, `:fm=CENTER:\` allows the job to print as if the following command were entered:
    $ PRINT
    file-name/FORM=CENTER
Forms have attributes like print image width and length, or paper stock, which are associated with the print queue when it starts up. To see which forms have been defined for your system, use the DCL command SHOW QUEUE/FORM. To see which form is currently the default for the print queue, enter SHOW QUEUE/FULL.
pa | /PASSALL flag. Tells the print symbiont to ignore any formatting and to send the file to the printer with its format suppressed.
nd | /NODELETE flag. Specifies that the temporary file created in TCPIP$LPD for an inbound print job will not be deleted after printing. By default, these temporary files are deleted after printing.
cr | Not supported by TCP/IP Services.
p1-p8 | Equivalent to the PRINT/PARAMETER qualifier on the DCL command line. You can specify up to eight optional parameters that are unique to the print symbiont. If the DECprint Supervisor software is running on the system, enter HELP PRINT_PARAMETER for information about the available parameters.

To make the printcap entries easier to read, use one symbol per line, placing a colon (:) at the start of each line and a colon and backslash (:\) at the end of the line to separate the symbols. The last printcap entry ends with a colon (:).

The following sample is an entry from the printcap database that identifies a local printer.

    #
    LOCAL1|local1:\
    :lf=/SYS$SPECIFIC/TCPIP$LPD/LOCAL1.LOG:\
    :lp=LOCAL1:\
    :sd=/SYS$SPECIFIC/TCPIP$LPD/LOCAL1:\
    :nd:

The following sample is a printcap entry that identifies a remote printer:

    #
    REMOTE1|remote1:\
    :lf=/SYS$SPECIFIC/TCPIP$LPD/REMOTE1.LOG :\
    :rp=REMOTE1 :\
    :rm=hermes :\
    :sd=/SYS$SPECIFIC/TCPIP$LPD/ :

### 22.3.1.1 Setting Up Print Spool Directories

Each printer must have its own spool directory located under the SYS$SPECIFIC:[TCPIP$LPD] directory. The spool directory acts as a printer's spooling queue; it contains the files that are queued for printing on that particular printer. A printer spool directory should have the same name as the printer reference name and must be located on the machine to which the printer is attached. Specify the directory using a UNIX-style path name.

Each printer should specify a spool directory even if the printer is connected to another machine or is on another network. You specify a spooling directory in the printcap database with the `sd` symbol. For example:

    :sd=/SYS$SPECIFIC/TCPIP$LPD/LOCAL1:\

Previous | Next | Contents | Index