# DIGITAL TCP/IP Services for OpenVMS
Management

Previous | Contents

If you specify background mounting, you should also use the /RETRIES qualifier with a small non-zero number. This qualifier sets the number of of times the transaction itself should be retried. Specify background mounting, along with the desired delay time and retry count parameters, with the /BACKGROUND=[DELAY:OpenVMS_delta_time, RETRY:n qualifier. For example, the following command attempts to mount in background mode, on local device DNFS4:, the file system /flyer, which physically resides on host migration. If the mount fails, the NFS client waits 1 minute and retries the connection up to 20 times.

    UCX> MOUNT DNFS4: /HOST="migration" /PATH="/flyer" -
    _UCX> /BACKGROUND=(DELAY:00:01:00, RETRY:20)  /RETRIES=4

## 15.3.4 Overmounting

Overmounting allows you to mount another path onto an existing mount point. Specify overmounting with the /FORCE qualifier. The client dismounts the original mount point and replaces it with a new one.

Mounting a higher or lower directory level in a previously used path is also an overmount. For example, an overmount occurs when you execute two MOUNT commands in the following order:

    UCX> MOUNT DNFS123:[USERS.MNT] /HOST="robin" /PATH="/usr"
    %DNFS-S-MOUNTED, /usr mounted on _DNFS123:[USERS.MNT]
    UCX> MOUNT DNFS123:[USERS.MNT] /HOST="robin" -
    _UCX> /PATH="/usr/tern" /FORCE
    %DNFS-S-REMOUNTED, _DNFS123:[USERS.MNT] remounted as /usr/tern on ROBIN

The second MOUNT command specifies a lower level in the server path. This constitutes another path name and qualifies for an overmount.

## 15.3.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 subdirectory (or subdirectories) added to or dropped from the original mount specification when you perform a directory listing.

Specify an occluded mount with the /FORCE qualifier.

In the following example, the mount point specification was "backed up" one subdirectory from the previous one. If you issue the SHOW MOUNT command, both mounts are visible. However, if you issue 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].

    UCX> MOUNT DNFS2:[USERS.SPARROW.MNT] /HOST="birdy" /PATH="/usr"
    %DNFS-S-MOUNTED, /usr mounted on _DNFS2:[USERS.SPARROW.MNT]

    UCX> MOUNT DNFS2:[USERS.SPARROW] /HOST="birdy" /PATH="/usr" /FORCE
    %DNFS-S-MOUNTED, /usr mounted on _DNFS2:[USERS.SPARROW]
    -UCX-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 directing listing looks like this:

    unix% ls
    grebe wings pratincole

To do the mount, issue:

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

To check that the mount succeeded, issue:

    $ UCX 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.

## 15.3.6 Other Mount Options

Additional qualifiers to the MOUNT command are described in the DIGITAL TCP/IP Services for OpenVMS Management Command Reference manual.

# Part 5
Configuring Printing Services

Part 5 describes how to set up and manage the printing services available with DIGITAL TCP/IP Services for OpenVMS (UCX).

Chapter 16 describes how to set up LPR/LPD, providing access to local and remote print queues.

Chapter 17 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 18 describes how to set up and manage printing for PC-NFS client users.

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

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

The line printer daemon (LPD) controls all printers and handles the following tasks:

- Controls printer spooling, the mechanism by which a file is placed in a queue until the printer can print the file.
- Uses the listen and accept system calls to control printers and to ensure that the user who requested printing is allowed to use the printer.
- Scans the printcap database to determine printer characteristics.
- Uses specific print filters for print requests. Print filters translate an input format into a printer-specific output format.
- After a system reboot, prints any files that were not printed when the system stopped operating.

This chapter describes how to set up and manage the LPR/LPD printing service available with the DIGITAL TCP/IP Services for OpenVMS product. See the DIGITAL TCP/IP Services for OpenVMS User's Guide for general usage information and complete command descriptions.

# 16.1 Reviewing Key Concepts

The LPR/LPD service allows other network hosts to access queues on the server system and provides local access to queues on remote hosts. The line printer daemon (LPD) is activated when you enter a print or LPR command. The daemon copies the file to the printer's spool directory and prints requests in the order in which they entered the queue. A copy of the file to be printed remains in the queue until the printer is ready to print it; then the LPD daemon removes the file from the spooling queue and sends it to the printer.

LPD uses the printcap database to process print requests. The printcap database, located in SYS$SPECIFIC:[UCX_LPD]:UCX$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.

You configure printers by manually editing the printcap database and by creating the necessary spool directories and log files. Section 16.3.1 describes how to manually configure printers.

Alternately, you can 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 16.3.2 describes how to use the printer setup program to configure printers.

# 16.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 UCX_LPD account to the SYSUAF.DAT database
- Creates the directory SYS$SPECIFIC:[UCX_LPD] for the UCX_LPD account
- Defines the logical names described in Table 16-1

Table 16-1 LPD Logical Names
Logical Name | Description
--- | ---
UCX$LPD_PRINTCAP | Database that maps queues and makes queues available
UCX$LPD_SPOOL | Main spooling directory
UCX$LPD_RETRY_INTERVAL | For outbound print jobs, time period between retries to print
UCX$LPD_MAXIMUM_INTERVAL | For outbound print jobs, maximum time period that LPD retries to print if repeatedly unsuccessful
UCX$LPD_LOGFILE | Name of the log file for the UCX$LPD_QUEUE which precedes all inbound jobs
UCX$LPD_PS_EXT | Database that maps PS extensions Used to configure system wide PostScript options. Values for this logical name are as follows: non_PS --- The system does not implement PS extensions. LPS --- The system implements PS extensions.

# 16.3 Configuring Printers

LPD uses the printcap database to process print requests. The printcap database, located in SYS$SPECIFIC:[UCX_LPD]:UCX$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.

If you use the configuration procedure to configure LPD, this database is created for you. Unlike other UCX database files, you can manually edit the printcap database to add or modify printer entries. Section 16.3.1 describes how to edit the printcap database.

Alternately, you can use the printer setup program SYS$SYSTEM:UCX$LPRSETUP.EXE to configure or modify printers. This program creates all necessary files and directories for you. Section 16.3.2 describes how to use the printer setup program to configure printers.

## 16.3.1 Manual Configuration

Printcap database entries identify the incoming and outgoing LPD queues on the local system. Each entry provides:

- The printer queue name and all aliases
- The name and location of the spooling directory
- The name and location of the log file

Entries for outgoing jobs also identify the name of the remote host and the printer on the remote host.

Printer characteristics are specified by 2-character mnemonic symbols and values that define the printer's configuration. Table 16-2 describes the printcap symbols.

Table 16-2 Printcap Symbols
Symbol | Description
--- | ---
sd | Printer spool directory
lf | Specifies the error log file. 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
fm | Printer form field
pa | /PASSALL flag
nd | /NODELETE flag
cr | cr flag
p1-p8 | /PARAMETER=(p1,...,p8) field

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 following is a sample entry from the printcap database that identifies a local printer.

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

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

    #
    REMOTE1|remote1:\
            :lf=/SYS$SPECIFIC/UCX_LPD/REMOTE1.LOG :\
            :rp=REMOTE1 :\
            :rm=HERMES :\
            :sd=/SYS$SPECIFIC/UCX_LPD/ :\

### 16.3.1.1 Setting Up Print Spool Directories

Each printer must have its own spool directory located under the SYS$SPECIFIC:[UCX_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.

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/UCX_LPD/LOCAL1:\

### 16.3.1.2 Setting Up Error Logging

The LPD daemon records printer errors in a log file located in SYS$SPECIFIC:[UCX_LPD]. You can set up a separate log file for each printer or one to be shared by all local printers.

Specify the log file in the printcap database with the symbol lf. For example, to specify a log file for the print queue named LOCAL1, the printcap entry would be as follows:

    :lf=/SYS$SPECIFIC/UCX_LPD/LOCAL1.LOG:\

To specify a log file that can be shared by all printers, specify the same file for each printer entry. For example:

    :lp=LOCAL1:\
    :lf=/SYS$SPECIFIC/UCX_LPD/UCX_LPD_LOGFILE.LOG:\

    .
    .
    .

    :lp=LOCAL2"\
    :lf=/SYS$SPECIFIC/UCX_LPD/UCX_LPD_LOGFILE.LOG:\

### 16.3.1.3 Support for PostScript Extensions

You can configure LPD to support remote printing on a system that does not implement the DIGITAL PostScript extensions. You do this for individual queues by adding a ps field in the queue's printcap entry with a value of non_PS. The printcap entry looks as follows:

    :rm=Remote1
    :ps=non_PS

If you do not define a ps entry, LPD assumes the printer supports the DIGITAL PostScript extensions.

Note that you can also configure this option systemwide with the UCX$LPD_PS_EXT logical name. Values for this logical name are non_PS and LPS. See Table 16-1 for more information about the LPD logical names.

If a printcap entry does not have a ps field defined, LPD uses the value you assigned with the logical name. If the logical name is not defined, LPD uses PS extensions as the default.

## 16.3.2 Configuring Printers with LPRSETUP

This section describes how use the printer setup program, SYS$SYSTEM:UCX$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 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
- Printer device
- Spool directory
- Error log directory

The printer setup program performs the following:

- Creates or edits the exiting printcap database
- Creates a spooling directory
- Creates an error log file
- Creates the device special files
- Prompts you to modify previously selected symbols

Table 16-3 describes the LPRSETUP commands.

Table 16-3 LPRSETUP Commands
Command | Description
--- | ---
add | Adds a printer name by which you want to identify the printer through the LPR command, for example: LPR -P printername
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 | Exists from the LPRSETUP program

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

The following example illustrates how to use the printer setup program to configure a printer named LOCAL1.

    $ SYS$COMMON:[SYSEXE]UCX$LPRSETUP.EXE

    UCX 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 :

    Enter printer synonym:

    Enter full file specification for spool directory
    SPOOLER DIRECTORY 'sd' :  [SYS$SPECIFIC:[UCX_LPD.LPD_LOCAL1]] ? Y

    Enter full file specification for printer log file.
    printer error log file 'lf' [SYS$SPECIFIC:[UCX_LPD]LPD_LOCAL1.LOG] ?  Y

    Enter the name of the printcap symbol you wish to modify.  Other
    valid entry is :
            'q'     to quit (no more changes)

    The names of the printcap symbols are:

    Enter symbol name: q

                        Symbol  type  value
                        ------  ----  -----
    Error log file    :  lf     STR   /SYS$SPECIFIC/UCX_LPD/LOCAL1.LOG
    Printer Queue     :  lp     STR   LOCAL1
    Spool Directory   :  sd     STR   /SYS$SPECIFIC/UCX_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] ? : N

            ***********************************************
            * UCX$LPD_STARTUP.COM     UCX$LPD_PRINTCAP    *
            *    and   UCX$LPD_SHUTDOWN.COM               *
            *  have been updated for this printer         *
            *                                             *
            * Set up activity is complete for this printer*
            ***********************************************

    Command  < add delete view help exit >: exit

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

    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/UCX_LPD/LOCAL1.LOG
    Printer Queue     :  lp     STR   LOCAL1
    PS extensions flag:  ps     STR   non_ps
    Spool Directory   :  sd     STR   /SYS$SPECIFIC/UCX_LPD/LOCAL1

    Delete local1, are you sure? [n]  y

# 16.4 Starting and Stopping Print Queues

To start your print queues, issue the following command

    $ SYS$MANAGER:UCX$LPD_STARTUP.COM

To stop print queues, issue the following command:

    $ SYS$MANAGER:UCX$LPD_SHUTDOWN.COM

To display the status of a remote queue, issue the LPQ command at the DCL prompt. To remove jobs from a remote printer queue, issue the LPRM command at the DCL prompt. See DIGITAL TCP/IP Services for OpenVMS User's Guide for more information about these commands.

The following example deletes all the jobs on remote print queue EIDER_DOWN_Q:

    $ LPRM EIDER_DOWN_Q /ALL

# 16.5 Controlling Access to Local Queues

You can grant or deny access to remote users by issuing the command SET SERVICE LPD /FLAGS=APPLICATION_PROXY. This causes LPD to authenticate remote users through the proxy database. You identify the remote users by adding communication proxy entries in the proxy database, UCX$PROXY.DAT. Each remote user allowed to access your local queues must have an entry.

To add a proxy entry, issue:

    UCX> ADD PROXY user_name /HOST=host_name /REMOTE_USER=user_name

For each host, define both its host name and alias name. Use uppercase and lowercase consistently.

You may use wildcards when adding proxy entries for users on remote systems. For example, the following command allows any user on the remote host REMOTE1 to submit print jobs to the print queues on your system.

    UCX> ADD PROXY R_USERS /HOST=REMOTE1 /REMOTE_USER="*"

To disable authentication, use the /FLAG=NOAPPLICATION_PROXY option to the SET SERVICE LPD command. Use the /REJECT option to deny access from certain hosts. For example,

    UCX> SET SERVICE LPD /REJECT=HOSTS=(loon,ibis,tern)

# 16.6 Receiving LPR/LPD OPCOM Messages

The LPR/LPD spooler can notify you of selected events with OPCOM messages. To receive these notifications, issue:

    $ UCX SET SERVICE LPD /LOG=OPTION
    $ REPLY /ENABLE=OPCOM

The logging options defined are:

- LOGIN --- LPD receiver startup and exit
- LOGOUT --- Job completion
- ACTIVATE --- Queue startup

# 16.7 Using OpenVMS FLAG PAGE Options

LPD supports all OpenVMS FLAG PAGE print options, including:

- /FLAG qualifier of the DCL PRINT command
- /DEFAULT=FLAG setting on the LPD print queue
- /SEPARATE=FLAG setting on the LPD print queue

To turn on these features, define the system logical name UCX$LPD_VMS_FLAGPAGES. At queue startup time, issue:

    $ DEFINE /SYSTEM UCX$LPD_VMS_FLAGPAGES

When you define UCX$LPD_VMS_FLAGPAGES, LPD does the following:

- Honors what OpenVMS instructs regarding flag pages for outbound jobs.
- Submits inbound jobs with /FLAG or /NOFLAG, based on the presence of the L card in the control file.
  Inbound jobs with an L card are submitted to the destination print queue as PRINT /FLAG.
  Inbound jobs without an L card are submitted to the destination print queue as PRINT /NOFLAG.
- Renders meaningless the DCL PRINT /PARAM=NOFLAG command.

# Chapter 17
Setting Up and Managing the TELNETSYM

The TELNET print symbiont (TELNETSYM) provides remote printing services that enable the use of standard OpenVMS printing features not available with the LPR/LPD print service. With TELNETSYM configured on your system, you can set up and manage a remote printer attached to a remote terminal server as if it were directly connected to your system. The TELNET symbiont functions in a manner that is similar to that of LATSYM for DIGITAL's local area transport (LAT) software.

The TELNET symbiont performs the following functions:

- Transfers record-oriented data to and from disks and printers
- Configures printers attached to terminal servers that support TELNET
- Supports outbound print jobs and offers preformatting to outbound print jobs

This chapter reviews basic TELNETSYM concepts and describes how to set up and manage remote printers.

# 17.1 Reviewing Key Concepts

TELNETSYM transfers record-oriented data to and from disks and printers. Because TELNETSYM is a true OpenVMS print symbiont, it performs all print formatting functions, such as header and trailer page generation, pagination, queuing, and handling of multiple forms.

## 17.1.1 TELNETSYM Modifications to the Output Stream

TELNETSYM modifies the print output stream as follows:

- TELNETSYM doubles any TELNET IAC characters found in the byte stream unless UCX$TELNETSYM_RAW_TCP is defined for the queue. The IAC character is a hexadecimal FF.
- Because /PASSALL print jobs might contain 8-bit data, TELNETSYM sends the TELNET "do binary will binary" options-negotiation escape sequence before a print job that has been printed with /PASSALL.
  You can turn off this behavior by defining the logical name UCX$TELNETSYM_RAW_TCP for the queue. TELNETSYM does not send this sequence before printing a /PASSALL job.
  The "do binary will binary" sequence is 6 bytes, which are symbolically:
  IAC, DO, BINARY, IAC, WILL, BINARY
  In hexadecimal, this is:
  FF,FD,00,FF,FB,00
- TELNETSYM generates a form feed before the first job of a new print queue starts and at the end of every job. This is normal behavior for an OpenVMS print symbiont. To suppress this behavior, define UCX$TELNETSYM_SUPPRESS_FORMFEEDS for the queue.

TELNETSYM sets its process names to UCX$TNSYM1, UCX$TNSYM2, and so on.

# 17.2 Setting Up a Print Queue

Use the DCL command INITIALIZE/QUEUE to set up a TELNETSYM queue. Use the /PROCESSOR and /ON qualifiers as follows:

1. Specify the TELNETSYM image name in the /PROCESSOR qualifier:
   /PROCESSOR=UCX$TELNETSYM
2. Specify the host name and port number to which the queue sends the print data with the /ON qualifier:
   /ON="hostname:portnumber"

For example, to set up a TELNETSYM queue named xyz_q to print to host printserver.xyz.com at TCP port 4242, issue:

    $ INITIALIZE /QUEUE /PROCESSOR=UCX$TELNETSYM -
    _$ /ON="printserver.xyz.com:4242" xyz_q

# 17.3 Setting Up Relay Queues

You can redirect the output of TELNETSYM to another queue, rather than directly sending it to a remote printer. A queue with this setup is a relay queue. Use relay queues to funnel fully formatted output to an outbound LPD queue. LPD transfers jobs that are fully formatted on the sending side by OpenVMS.

TELNETSYM saves the output stream to a temporary file and then submits the file to the destination queue. TCP/IP is not used.

To set up a TELNETSYM relay queue, specify the /ON qualifier of the INITIALIZE/QUEUE command as follows, where qname is the name of the queue to which you want TELNETSYM to send its output.

    /ON="UCX$QUEUE:qname"

For example, to set up a TELNETSYM relay queue named RELAYQ_4 to send output to the queue named LPD_Q4, issue:

    $ INITIALIZE /QUEUE /ON="UCX$QUEUE:LPD_Q4" -
    _$ /PROCESS=UCX$TELNETSYM /DEVICE=PRINTER RELAYQ_4

# 17.4 Managing and Customizing Your Print Queues

You can manage and customize TELNETSYM for each print queue by defining logical names before you start the queue. Because the logical names are translated once at queue startup time, they can be defined differently for each TELNETSYM queue. Use the /SYSTEM qualifier when defining TELNETSYM logical names. This places the logical name in the system logical name table and makes it available to all users.

Some TELNETSYM configuration logical names are used to set a configuration option either ON or OFF. If the logical name is defined, the option is ON. If it is not defined, the option is OFF.

Other logical names require a specific value. The following sections describe TELNETSYM logical names. Descriptions indicate when a value is required.

## 17.4.1 Controlling Stream of Print Bytes Sent Over the Link

If a remote printer does not support the TELNET protocol, you can still print to such a printer by suppressing all TELNET modifications of the output stream with the logical names described below.

- UCX$TELNETSYM_RAW_TCP
  Suppresses all TELNET type modifications of the print output stream. This is for cases where the remote printer/terminal server does not implement the TELNET protocol and, instead, expects the raw data stream.
  This logical name also stops TELNETSYM from doubling IAC characters and sending the TELNET escape sequence to negotiate binary options for files printed /PASSALL.
- UCX$TELNETSYM_SUPPRESS_FORMFEEDS
  Suppresses form feeds between jobs. This includes the form feed that is normally sent before the first job printed to a print queue and the form feed sent at the end of every job.

## 17.4.2 Setting up Error Logging

By default, TELNETSYM sends messages to the operator and records error and informational messages in the file UCX$TELNETSYM.LOG. This file is located in SYS$SPECIFIC:[UCX_LPD]. Logical names are available to modify the way the TELNETSYM logs information and the type of information it reports. For example, TELNETSYM can log diagnostic messages that you can use when troubleshooting problems with a link.

Previous | Next | Contents