HP TCP/IP Services for OpenVMS
HP TCP/IP Services for OpenVMS Management
25.5.1 Controlling the Print Stream
If a remote printer supports a raw network data connection rather than
the TELNET protocol, you can print to such a printer by suppressing all
TELNET modifications of the output stream with the following logical
names:
- TCPIP$TELNETSYM_RAW_TCP
Suppresses all TELNET type
modifications of the print output stream. This logical name also
prevents the TELNETSYM from doubling IAC characters and sending the
TELNET escape sequence to negotiate binary options for files printed
/PASSALL.
- TCPIP$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. For more information, see Section 25.6.4.1.
25.5.2 Setting Up Error Logging
OPCOM messages sent by TELNETSYM include the name of the execution
queue. In addition, each TELNETSYM queue has a log file named
TCPIP$TELNETSYM_queue-name.LOG.
By default, TELNETSYM sends messages to the operator and records error
and informational messages in the file
TCPIP$TELNETSYM_queue-name.LOG. This file is located in
SYS$SPECIFIC:[TCPIP$LPD].
You can use logical names 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.
Use the following logical names to modify error logging:
- TCPIP$TELNETSYM_VERBOSE
Turns on the logging of TELNETSYM
diagnostics to the file TCPIP$TELNETSYM.LOG. These diagnostics include
informational messages that indicate when links have come up or gone
down and error messages.
- TCPIP$TELNETSYM_NO_OPCOM
Stops TELNETSYM from sending messages
to the operator console.
- TCPIP$TELNETSYM_DEBUG
Used with TCPIP$TELNETSYM_VERBOSE, this
logical name tells TELNETSYM which diagnostic message types to log.
Specify a value for each bit. Each bit set in the value turns on a
particular logging function. The options are:
Bit 0
|
Tracks the flow of code. For example:
xyz-n-xyz-routine entered
|
Bit 1
|
Tracks the allocation of memory. For example:
just freed address 7F0000
|
Bit 2
|
Logs the bytes sent and received over TCP/IP link.
|
To set a bit, assign the value to the logical name whose binary
equivalent would have the bit set. For example, you can tell TELNETSYM
to log everything that it writes to and receives from the TCP/IP link
by entering:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_DEBUG 4
|
Decimal 4 is binary 100 with bit 2 set. Note that you can achieve
different combinations by setting more than one bit in the value. A
value of 3, for example, sets bits 0 and 1, causing logging of flow of
code and memory allocation diagnostics. If TCPIP$TELNETSYM_DEBUG is
undefined, TELNETSYM does not log these diagnostics. Bit 2 is
useful in unassisted problem solving. Be aware, however, that the log
file can become large because all the data sent over the link to the
printer is logged. Bits 0 and 1 are primarily for use by HP.
However, with knowledge of PSM$ symbionts, you might find all the
options useful.
- TCPIP$TELNETSYM_LOG_KEEP
By default, TELNETSYSM saves all log
files. Define this logical name to limit the number of log files saved.
The value assigned to this logical name is the number of versions of a
log file TELNETSYM will allow before it starts purging. When the number
of files reaches the number you specified, TELNETSYM starts purging
files. For example, to configure the queue to purge after more than
three copies of the same log file are created, define the logical name
as follows:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_LOG_KEEP 3
|
- TCPIP$TELNETSYM_SCRATCH
By default, TELNETSYM stores log files
and any temporary files created by relay queues in the directory
SYS$SPECIFIC:[TCPIP$LPD]. You can change the default directory for one
or all of your TELNETSYM queues. For example:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_SCRATCH device:[directory.path]
|
If you define the logical name TCPIP$TELNETSYM_SCRATCH, the log
files are stored in the TCPIP$TELNETSYM_SCRATCH directory. If you
do not define TCPIP$TELNETSYM_SCRATCH, the log files are stored in
TCPIP$LPD_ROOT.
25.5.3 Controlling Characteristics of the TCP/IP Link
The TELNETSYM configuration logical names allow you to set TELNETSYM
parameters. To see the default values for these parameters, enter the
following command:
TCPIP> SHOW PROTOCOL TCP /PARAMETER
TCP
Delay ACK: enabled
Window scale: enabled
Drop count: 8
Probe timer: 150
Receive Send
Push: disabled disabled
Quota: 61440 61440
|
The logicals that you can use to modify these parameters are:
- TCPIP$TELNETSYM_KEEPALIVE
Controls Keepalive processing.
The Keepalive timer is used to periodically test the other end of a
link that appears to be idle. Its purpose is to detect when a remote
host has failed or has been brought down, or when the logical
connection has been broken. For TELNETSYM, you control this timer
with the following command:
$ DEFINE/SYS TCPIP$TELNETSYM_KEEPALIVE 1
|
If you change this logical name, you must stop and restart the
TELNETSYM queue for the new setting to take effect. By default, the
Keepalive timer is disabled. Broken connections will be detected only
when the relevant application sends data.
- TCPIP$TELNETSYM_DROPTIME
The Drop timer indicates how long 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 Keepalive logical
is also defined. You control the Drop timer by entering the
following command:
$ DEFINE/SYS TCPIP$TELNETSYM_DROPTIME x
|
In this command, x specifies the number of seconds to hold
the connection before closing it. The default value for the Drop
timer is 300 seconds. Note that the value for the Drop timer must
be greater than the value for the Probe timer. When you define only one
of these TELNETSYM logical names, the default value will be used for
the other logical name.
- TCPIP$TELNETSYM_PROBETIME
This logical name allows you to
control the Probe timer. The Probe timer defines:
- When establishing an initial connection, the number of seconds
TCP/IP Services will wait for a response before a timeout occurs. You can
enable this function even if the Keepalive timer is disabled.
- The length of time allowed to pass before TCP/IP Services checks an
idle connection. This function requires that the Keepalive timer be
enabled.
You control the Probe timer by entering the following command:
$ DEFINE/SYS TCPIP$TELNETSYM_PROBETIME 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$TELNETSYM_SNDBUF
Specifies the size of the socket send
buffer that TELNETSYM uses.
25.5.4 Establishing a TELNETSYM Link
If a network link has not been established, the TELNET symbiont
attempts to establish one. Printing starts when the link is
successfully established. The TELNET symbiont continues to try to
establish a network link until it is successful or until a retry
interval you define has expired.
The logical name TCPIP$TELNETSYM_RETRY_INTERVAL defines the time for
TELNETSYM to wait between link-establishment retries when link
establishment has failed. The value for this logical name is an OpenVMS
delta time.
If this logical name is not defined, TELNETSYM defaults to a wait
period of 3 minutes between retries.
For example, to define a retry interval of 30 seconds, enter:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_RETRY_INTERVAL "0 00:00:30.00"
|
25.5.5 Releasing a TELNETSYM Link
By default, TELNETSYM releases an established link at the end of a
print job. This behavior is useful when multiple systems contend for
the same printer. Configuring TELNETSYM to release the link at the end
of a job allows other systems to print quickly. However, this behavior
can also be a disadvantage because of the overhead involved with link
creation for each print job.
When there is little or no contention for a printer, it is useful to
configure TELNETSYM to release the link only after a certain period of
idle time has passed. With this approach, TELNETSYM waits for the
configured idle time to elapse and then closes the link. This option
works well within batch printing applications.
Use the logical name TCPIP$TELNETSYM_IDLE_TIMEOUT to define the length
of time to wait before terminating an inactive link. Specify a value
that is an OpenVMS delta time.
For example, to define a link-idle-timeout of 10 minutes, enter:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_IDLE_TIMEOUT "0 00:10:00.00"
|
Idle time occurs during printing as well as between print jobs. Any
idle time on the link can cause a timeout. Therefore, it is important
to adjust the value of this logical carefully.
25.5.6 Setting the Number of Execution Queues
The logical name TCPIP$TELNETSYM_STREAMS defines the number of
execution queues handled by each TELNETSYM process. The value you enter
(a number from 1 through 32) when defining this logical name is passed
to the PSM$PRINT system routine. The default is a maximum of 32 queues
per symbiont process.
Use this logical to turn TELNETSYM into a single-threaded symbiont
(value=1) in which each queue runs its own process. This makes
diagnosing problems easier and lessens the consequences of a failure.
If you are defining this logical name, define it once. Do not define it
differently for each TELNETSYM print queue.
25.6 Solving TELNETSYM Problems
To avoid potential problems with TELNET printing, be aware of the
following guidelines and considerations.
25.6.1 Using TCPIP$TELNETSYM for the First Time
If you use the public domain TELNET symbiont and want to switch to the
TCP/IP Services TELNET symbiont, you must change the value of the
/PROCESSOR qualifier on the TELNET symbiont queues. When you do this,
include any command procedures that start up the queues. Change:
to:
/PROCESSOR=TCPIP$TELNETSYM
|
25.6.2 Printing to Terminal Servers
When you print to a terminal server system, ensure that:
- Input flow control is disabled for the port to which you are
printing.
Enter:
> CHANGE PORT port INPUT FLOW DISABLED
|
- The TELNET server for the terminal server port is set to recognize
a new line as a carriage-return character followed by a line feed
character.
Enter:
> CHANGE PORT port TELNET SERVER NEWLINE TO HOST
|
25.6.3 Stalled Print Queues
When you print a job to a TELNETSYM queue, a link must be established
between the queue and the printer. If there is high contention for the
printer, it might be busy, causing the first attempt to fail.
TELNETSYM continues to try to establish the link, according to the
retry interval logical name TCPIP$TELNETSYM_RETRY_INTERVAL. Until the
link is established, the execution queue stalls. When the link comes
up, the job prints. A stalled TELNETSYM queue is not necessarily an
error.
If the queue stalls while printing a job, the printer probably requires
human intervention; that is, the printer is out of paper or jammed.
25.6.4 Solving Formatting Problems
To track down problems with improper formatting on the printed page
(for example, "garbage" for a graphics file or unwanted blank
pages), use bit 2 of the TELNETSYM logical name TCPIP$TELNETSYM_DEBUG.
Defining this logical helps determine whether the source of the problem
is TELNETSYM. Follow these steps:
- Define the logical as 4 in the system table. Enter:
$ DEFINE /SYSTEM TCPIP$TELNETSYM_DEBUG 4
$ STOP /QUEUE /RESET TELNETSYM_queue-name
$ START /QUEUE TELNETSYM_queue-name
|
- Print the job that does not print properly.
- Look at the TELNETSYM log file for the queue.
This file has
messages that show you every byte sent over the link to the printer,
such as control characters and setup/reset modules. If the raw TCP
logical name is not defined, you will see doubled IAC characters
(hexadecimal FF). If you print /PASSALL with the raw TCP logical
name not defined, the job starts with the TELNET options negotiation
sequence "do binary, will binary."
- Identify the problem. Either fix it or report it to your
HP support representative. Keep in mind that the OpenVMS
print symbiont may be the cause of the problem. TELNETSYM only modifies
the output as described in Section 25.1.2.
- Turn off debug mode.
- Start the TELNETSYM queue.
25.6.4.1 Controlling Form Feed Suppression
Use the TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS logical to control the
suppression of form feeds. The bit settings you specify in the value
control the time of the operation and the type of form feed suppression
to perform:
- Bits 0 and 1 specify when to do form feed suppression. It can be
done at either job setup or job completion time, or both. At least one
of these bits must be set to enable form feed suppression.
- Bits 4 and 5 together specify how to perform form feed
suppression. With TCP/IP Services, you can set either of two levels of
form feed suppression. Both levels eliminate the form feed character
from the stream of output bytes that is sent when the queue is first
started.
- Level 1 form feed suppression operates similarly to form feed
suppression under previous versions of TCP/IP Services. It will not
eliminate subsequent form feed characters, but will instead substitute
a line feed character for the form feed character. As a result, what
would have been a carriage-return/form feed sequence in the output
stream becomes a carriage-return/linefeed sequence.
- Level 2 form feed suppression eliminates all form feed characters
and carriage-return/form feed sequences from the output stream.
The following examples show how to calculate the value for the logical
name:
- This example shows how to determine the value of the
TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS logical if you want level 2 form
feed suppression at both job setup and job completion times. The value
of the logical is determined by the bit settings shown in Figure 25-1.
Figure 25-1 TCPIP$TELNETSYM_SUPPRESS_FORMFEED Level 2
Setting
The binary value for level 2 form feed suppression at both job
setup and job completion time is 100011 (hexadecimal 23 or decimal 35).
Because the value of the logical is a decimal value, you define it as
follows:
$ DEFINE/SYSTEM TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS 35
|
- This example shows how to determine the value of the
TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS logical if you want level 1 form
feed suppression at job completion time only. The value of the logical
is determined by the following bit settings shown in Figure 25-2.
Figure 25-2 TCPIP$TELNETSYM_SUPPRESS_FORMFEED Level 1
Setting
The binary value for level 1 form feed suppression at job
completion time only is 010001 (hexadecimal 11 or decimal 17). Because
the value of the logical is a decimal value, you define it as follows:
$ DEFINE/SYSTEM TCPIP$TELNETSYM_SUPPRESS_FORMFEEDS 17
|
25.6.4.2 Buffer Dumps
TELNETSYM logs control characters and nonprinting characters by
preceding the hexadecimal value of the byte with a backslash. For
example, the following sequence:
Carriage Control
Form Feed
Carriage Control
Line Feed
Tab
the text "Use Your Screen Saver to Conserve Energy."
Carriage Return
Line Feed
|
is logged as:
\0D\0C\0D\0A\09Use Your Screen Saver to Conserve Energy.\0D\0A
|
The "do binary, will binary" sequence starting off a /PASSALL
job appears as:
|