iQueue
LPD/LPR printing connectivity for
Novell NetWare 3.1x & 4.0x
August 1994
The information in this document is subject to
change without notice and should not be construed
as a commitment by Smart Systems. Smart Systems
assumes no responsibility for any errors that may
appear in this document.
DEC, VMS, DECnet are registered trademarks of
Digital Equipment Corporation.
UNIX is a registered trademark of AT&T.
MS-DOS is a registered trademark of Microsoft
Corporation.
NetWare and Novell are registered trademarks of
Novell Inc.
All other brand and product names are trademarks
or registered trademarks of their respective
companies.
Copyright ©1992-1994 Quentin Smart, SMART SYSTEMS.
1.1 Introduction
iQueue provides a pair of NetWare Loadable
Modules (NLM) which implement the Berkeley Line
Printer Daemon (RFC1179, LPD) protocol. This is
the de facto standard remote printing protocol
for UNIX. The LPD protocol that layers on top
of TCP/IP is also supported by many other
operating systems.
The LPD NLM allows a NetWare file server to
accept print jobs from systems supporting the
LPD protocol. NetWare queue inquiry and job
deletion are supported by the UNIX LPQ and LPRM
commands. The LPR NLM allows a NetWare file
server to service local NetWare print-queues
for transmission via the LPD protocol to remote
hosts.
If you have not been supplied with
authorisation keys this software will run in
demonstration mode (except for un-keyed
versions of the software). The implication of
this is that the NLMs will terminate and unload
after one hour. Please see the file order.inf
for further information.
The configuration of the UNIX (or other) host
is not addressed here. You will need to consult
with the system administrator responsible for
the remote host.
1.2 Prerequisites
Ensure the TCPIP.NLM is loaded and configured
correctly on your NetWare server. Refer to the
TCP/IP Transport Supervisors Guide included
with your NetWare documentation set, or the
Novell technical note NetWare TCP/IP
Installation and Configuration on a NetWare
3.11 Fileserver available as NWTCP.TXT from any
Novell FTP mirror in NOVLIB 8.
It is strongly recomended that TCPIP.NLM be
version 2.02m or later, this is found on a
NetWare archive as TCP188.EXE.
If you are running NetWare 3.11 you may not
have the required support NLM NWSNUT, without
this LPDSET.NLM will report missing symbols.
NWSNUT can be obtained as part of the Novell
update LIBUP4.EXE. This file can be obtained
from ftp.novell.com or Netwire on CompuServe.
Enter the names and addresses of the remote
TCP/IP hosts that you wish to print to and from
into the sys:\etc\hosts file on the NetWare
server.
Check that the TCP/IP connection is working by
PINGing the NetWare server from the remote
host.
NetWare 4.xx environments require that Bindery
Emulation is enabled.
2.0 UNIX-to-NetWare Printing
2.1 Installing the NetWare NLM
Copy the LPD.NLM, LPD.PS and LPDSET.NLM from
the distribution directory to the sys:\system
directory on your target server.
On the File Server Console type
load LPD <auth_key> [verbose] [text]
[threads=x]
This will load and start the LPD server
software, presenting the status screen. To
switch between console screens type Ctrl-ESC.
The command line options for LPD are:
auth_key The required server
specific authorisation key. Note site
licence versions of the software will
not require a key.
verbose The status screen will
display debugging information.
text All the inward queues are text
queues and will have the CR to CR/LF
filter applied.
threads= Allows performance tuning
by increasing or decreasing the
number of LPD server threads, this
could be reduced on small servers to
lower memory overhead or increased in
high volume environments. Idle
threads use no CPU resource. The
range is 1 through 10 with the
default being 5.
To ensure that the printer daemon NLM is loaded
each time your file server starts, edit with a
text editor or the INSTALL NLM
sys:\system\autoexec.ncf , adding the load
command to the end of script.
e.g. load LPD abb543e text threads=3
2.2 Configuring Queues for LPD
Once the LPD NLM is loaded all print queues on
the NetWare server are available to receive LPD
print jobs.
Configuration of individual queue options is
done with the LPDSET.NLM, at the console prompt
enter load LPDSET.
Select the queue to configure by pressing
enter, the screen shown below is displayed.
Secure:
By default (No) any remote user may print to
a NetWare queue via the LPD NLM.
Setting a queue to secure causes the NLM to
attempt a match between the remote userid
and a local NetWare user. If the match or
NetWare security fails the job is discarded.
Secure queues require that the NetWare user
has a valid account (e.g. not disabled or
expired) and is a user of the queue as
defined in PCONSOLE.
Care must be taken when limiting concurrent
NetWare logins for users as a count against
this restriction is used when a print job is
being received. This option is useful in
environments where printer accounting is
used.
Filter:
Converts the incoming data, the currently
available filters are:
Binary Passes data without change
(default).
Text Converts CR to CR/LF characters.
Fortran Converts print jobs with
fortran carriage control characters
into formatted form.
Text -> Postscript
Converts plain text files into the
Postscript printer language. If the
inward job is already in Postscript
form no conversion is performed.
Different character mapping (for
Scandinavian countries) can be
configured by editing the file LPD.PS
with a text editor.
When the 'text' option is used with
the LPD load command the filter is
Text for every queue regardless of
this setting.
Configure Filter:
This option is only available for the
Postscript filter. Selection presents a form
for setting paper size, margins and font.
Measurements are in points, 72 points = 1
inch, 28.35 points = 1 cm.
Suppress Banner:
Disables the printer banner page for all
inward jobs on this queue. Banners should be
suppressed for Postscript print queues
unless the NetWare print server is
"Postscript aware" (e.g. ATPS).
Suppress Form Feed:
Sets the 'suppress form feed at end of
job' flag in the NetWare print entry. This
instructs the print server not to print a
blank page at the end of the print job.
Form Number:
Will set the form number on print job
entries.
Printer Init:
Enable the sending of data before each
print job. This is used to set such options
as font and orientation with printer
specific control codes. Selecting 'file'
indicates the initialisation information is
held in a binary file that you specify,
selecting 'string' indicates that you will
directly specify the control characters. The
latter is a more efficient method.
Enter Data:
Select this to enter the init sequence
data or filename. File names must include
the NetWare volume name, e.g.
sys:\etc\hpinit
Strings are typed directly, control
characters are entered as their ascii value
enclosed in <> e.g. <026>, entering a less
than symbol is done as <<
Printer Reset:
As for init except the data is sent
after the print job.
2.3 LPR Options
Several job options can be controlled from the
sending end of the printing operation. All of
the following options are case sensitive. If
any option is to be permanent, using LPDSET NLM
configuration tool is the preferred method.
2.3.1 Banner Pages
If the remote LPR software is fully Berkeley
LPD compatible then suppression on a job by job
basis can be achieved with the command:
lpr -sh filename
The permanent version of this is to add the :sh
command to the printcap file. (Refer Appendix
B)
If the sh option does not work with your LPR
then the following can be used:
lpr -J/nb filename
2.3.2 Form Feed Suppression
If you require Form Feeds to be filtered by the
LPD NLM the /nff switch may be used with the
LPR command. As with all /J modifiers a
combination is acceptable:
lpr -J/nff filename or lpr -J/nff/nb filename
2.3.3 Form Number
If you require a particular NetWare form number
for a print job this can be set with the /f:x
option. For form number 10 the following would
be used:
lpr -J/f:10 filename
2.4 Remote Host Configuration
This will mainly depend on the LPR software
your remote host is using. You should refer to
the documentation supplied with the system.
Information you will need however is the IP
address (or name) of the NetWare file server
and the destination print queue name, this is
what the remote queue is to be "pointed" at.
Not all LPD software adheres to the RFC.
Appendix A lists the LPD control file entries
recognised by the LPD NLM.
2.5 Privileged Hosts
By default any foreign host can print to your
NetWare server. Limiting which hosts can access
queues on a server is done by creating the text
file sys:\etc\hosts.lpd, place the names of
authorised hosts (from those defined in
sys:\etc\hosts) one per line.
e.g. alpha.foo.bar.com
beta.foo.bar.com
2.6 Queue Job Ownership
If a queue is defined as 'secure', the local
user with the same userid as the remote job
submitter will own the job. If a queue is not
'secure' queue entries spooled from a remote
host will be entered into NetWare queues with
the owner being the same name as your
fileserver. The implication of this is any
printing accounting done by the NetWare print
server may be incorrect. However remote user
identification is provided for banner printing
and PCONSOLE inquiry.
2.7 LPQ and LPRM Commands
The remote host can query all your NetWare
queues with the lpq command. The lprm command
allows the removal of print jobs. The security
applying to this command follows the UNIX
standard with a user able to delete only their
own jobs and the 'root' user all jobs. When a
queue is defined as secure this is enhanced by
supporting NetWare queue operator rights.
3.0 NetWare-to-UNIX Printing
3.1 Installing the NetWare NLM
Copy the LPR.NLM from the distribution
directory to the SYS:SYSTEM directory on your
target server.
Once the PRINTCAP file has been created (see
below), on the File Server Console type:
load LPR <auth_key> [verbose] [threads=x]
[StripCtrlD] [BadResp] [dbu] [nam]
auth_key The required server
specific authorisation key. Note
site license versions of the
software will not require a key.
verbose The status screen will display
debugging information.
threads= Allows performance tuning
by increasing or decreasing the
number of LPR server threads, this
could be reduced on small servers
to lower memory overhead or
increased in high volume
environments. Idle threads use no
CPU resource. The range is 1
through 10 with the default being
5.
StripCtrlD When enabled the LPR
NLM will check for and strip Ctrl-D
characters from the start of
Postscript printjobs. UNIX
connected Postscript printers or
filters often read a Ctrl-D as an
end of job indicator and discard
the Postscript data.
BadResp This is a special
flag,see the troubleshooting
section below.
dbu Drop bad jobs. With this
switch is on jobs rejected by the
remote host when the control file
is sent will be deleted from the
queue. This option is useful when
userid mapping is enabled at the
remote end and you wish to drop
jobs from invalid users.
nam This will force LPR to use the
Name Field from the capture command
rather than the NetWare login ID as
the owner of the printjob. This may
be useful for accounting purposes.
The capture name field is set with
the capture /nam= parameter.
To ensure that the printer server NLM is loaded
each time your file server starts, edit with a
text editor or the INSTALL NLM
sys:\system\autoexec.ncf , adding the load
command to the end of script.
e.g. load LPR ae550034 verbose threads=3
This will load and start the LPR software. The
software presents the status screen, this
screen is used to monitor the operation of the
software. To switch between console screens
type CTRL-ESC.
3.2 Print Queue Configuration
Using PCONSOLE create a new print server called
LPR_DAEMON. Note do not assign a password to
it. Create the print queues that are to be
served by remote hosts, making LPR_DAEMON their
print server.
3.3 Queue Types
DOS uses the control character pair Carriage
Return/Line Feed (CR/LF) to mark the end of a
line in a text file. UNIX however uses only the
Line Feed (LF) to mark the end of a line.
NetWare has two types of print job, TEXT and
BINARY. If the job is flagged as TEXT the LPR
NLM strips all CR/LF pairs to the LF character.
The NetWare CAPTURE command defaults to TEXT
mode, if you need to send a binary file (e.g.
to an IBM graphics printer) you should use the
capture /NT switch to force the new queue
entries to BINARY mode.
The "Print Banner" flag of a NetWare print
queue entry is also respected and this
information is passed to the remote LPD daemon
enabling or suppressing banners as required.
3.4 LPR Transfer Notification
The NetWare CAPTURE command provides a NOTIFY
switch. Enabling this switch causes the LPR NLM
to send a broadcast message to the submitting
workstation when a print job is successfully
transferred to the remote host.
3.5 Printcap File
To define outward queues you must create the
text file PRINTCAP in the sys:\etc directory,
the format of this file is:
netware_queue remote_host
remote_queue
netware_queue remote_host
remote_queue
...
For example to redirect the local NetWare queue
LASER to the remote host foo.bar.com, and the
remote queue name is HP_LASER, the following
entry would be made:
LASER FOO.BAR.COM HP_LASER
If you change the PRINTCAP file the LPR NLM
must be reloaded before any changes will take
effect.
4.1 Troubleshooting
If you are having problems then you should
check the following:
- The LPD or LPR NLM fails to load with symbol
not found errors. You must upgrade to a newer
version of CLIB (see the prerequisites section
of this manual).
- LPDSET fails to load with symbol not found
errors. You must upgrade to a newer version of
CLIB that supports the NWSNUT.NLM
- Is the remote host defined in the
SYS:ETC/HOSTS file?
- Can you ping from the foreign host to your
Novell server?
- The UNIX hosts rejects your print job. Does
your host exist in the remote hosts
/etc/hosts.lpd or /etc/hosts.equiv file?
- Reload the NLM with the verbose parameter to
produce further information on the NLM status
screen.
- If the inward printout appears to have the
next line run-on instead of start from the
margin then the print queue type should be set
to TEXT.
- If jobs received for a Postscript printer do
not work, ensure that the banner is being
suppressed. Use PCONSOLE to examine a print job
to ensure NetWare banners are switched off.
- Printing from MS-Windows to a queue re-
directed to a Postscript printer either fails
to print or prints as text. MS Windows precedes
print jobs with a Ctrl-D. Reload the LPR NLM
with the StripCtrlD flag.
- The printjob sent by LPR is printed by the
remote printer but remains in the NetWare
queue. The LPR NLM may be receiving what it
thinks is an error. Reload the LPR NLM with the
BadResp flag.
Appendix A - LPD control code interpretation
Any LPD control file codes not interpreted are
ignored.
H "host name" of machine where lpr was done.
J "job name" on banner page. If this contains /NB
then the NetWare banner is suppressed.
L "literal" user's name to print on banner, a
NetWare banner is produced if this control code
is present.
N "name" of file, split into directory, file name
for banner header.
P "person" remote user sending print job.
S this command followed by an X is generated by
PLP (Lantronix) printer software to suppress
banner pages.
f this is a text file. (LPR sends this type for
TEXT job entries),
l this is file contains control characters. (LPR
sends this type for BINARY job entries)
Appendix B - UNIX Printcap Entries
Below are detailed some of the possible UNIX
printcap file entries.
printer_name1|printer_name2|printer_nameN|printer_
description:\
:lp=print_device_name:rm=netware_server_name:\
:rp=netware_print_queue_name:sd=local_spool_dir
ectory:\
:mx#file_size:rs:sh:
printer_name1..printer_nameN
These are the names available for UNIX users to
access this queue
printer_description
This is an informational description of the
printer
print_device_name
The name of the print device on the local
machine. (e.g. "lp=/dev/matrix")
When printing to a remote machine this should
be set to nothing (e.g. "lp=").
netware_server_name
The name of the NetWare server on which the
destination queue resides. This name should
exist in the /etc/hosts file on the UNIX host.
netware_print_queue_name
The NetWare print queue.
local_spool_directory
This is the name of the local spool directory
(e.g. "/usr/spool/netware_print_queue_name")
printjobs are temporarily stored here before
printing. This directory must be manually
created.
file_size
The maximum file size in blocks that can be
spooled to this printer. Omit or set this to 0
for unlimited file size.
rs
Restricts remote users to requiring an account
on this system before they can access the
printer. If this entry is omitted any user on a
"trusted host" may access this printer.
sh
This will suppress the LPR header (banner)
page.