     
     
     
     
     
     
                                         SDLPD
     
     
                          LPR/LPD print software for NetWare
     
                                       Version 1.1
     
     












































     Page - 1
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     Copyright  (c)  1995-1997  by  Secure Design
     
     Other brand and product names are trademarks or registered trademarks
     of their respective holders.
     
     U.S. Government Restricted Rights:   Use, duplication or disclosure by
     the Government is subject to restrictions set fourth in subparagraph
     (a) through (d) of the Commercial Computer Restricted Rights clause
     at FAR 52.227-19 when applicable, or subparagraph (c) (1) (ii) of the
     Rights in Technical Data and Computer Software clause at DFARS
     252.227-7013, and in similar clauses in the NASA FAR Supplement.
     
     License Agreement:    Each copy of this product is provided with a
     serial number.  One serial number is required for each file server
     which this product is to be used on.  One serial number may not be
     used on more than one file server.  This serial number may not be
     exchanged, sold, or otherwise distributed.
     
     An evaluation copy of this product is available.  While the purchased
     version of this software may not be copied, the evaluation version
     may be distributed freely.  Please contact us if you would like a
     demonstration copy of our products.
     
     Warranty:   This  software  is sold on an as-is basis.  Secure Design
     specifically disclaims all warranties, expressed or implied.  In no
     event shall Secure Design be liable for any loss of profit or any
     other damage including but not limited to special, incidental,
     consequential or other damages including damages to a third party.
     By using this software you are agreeing to these terms.  If these
     terms are not agreeable, please return this software for a refund
     within 10 days of purchase.










     Page - 2
     Table Of Contents
     
     Table Of Contents                                              3
     Overview                                                       4
     System Requirements                                            4
     Quick Install                                                  5
     Transferring Print Jobs To UNIX Systems                        7
     Receiving Print Jobs From UNIX Systems                         10
            Options for /etc/printcap on UNIX systems:              12
            LPD control codes supported by SDLPD for incoming jobs: 13
            UNIX host functions                                     13
     Transferring Print Jobs Between NetWare Servers                14
     Troubleshooting                                                15
     About Secure Design                                            16
     For Further Reading                                            16











































     Page - 3
     Overview
     
     SDLPD is a NetWare Loadable Module (NLM)  that provides the ability
     to transfer print jobs between NetWare print queues and UNIX print
     queues.  SDLPD acts as a print server/client that implements the
     LPR/LPD protocol as described in RFC 1179.   The following is a
     list of features:
     
     SDLPD Provides:
     *     Compatibility with most LPR/LPD software for UNIX systems.
     *     Bidirectional transfer of print jobs between NetWare and UNIX
     *     User notification after a print job has been transferred.
     *     Configuration from NetWare server console.
     *     Service for multiple queues on a file server.
     *     Automatic text translations with CR and LF characters.
     *     Host access control for incoming print jobs.
     
     
     System Requirements

     SDLPD will work with NetWare 3.x or NetWare 4.x with Bindery Emulation.
     The following is a list of system modules that you will need to load
     SDLPD.

     *     TCPIP.NLM     v2.02m  (or later)
     *     NWSNUT.NLM    v4.10g  (or later)
     *     CLIB.NLM      v3.12h  (or later)
     
     To find the version number of the NLMs you currently have loaded, type
     "modules"  on your file server console.  A list will be displayed for you.
     
     The NWSNUT.NLM and CLIB.NLM files are provided in the archive LIBUP4.EXE
     or LIBUP5.EXE.  The TCPIP.NLM is provided in the archive TCP188.EXE
     
     These update files are available from Novell on CompuServe,
     ftp.novell.com, and www.novell.com.  You may also obtain them from
     your Novell Authorized Service Center.
     
     These files are also available from Secure Design by BBS or e-mail
     server.  See the section About Secure Design for details.
     

















     Page - 4
     Quick Install
     
     This section gives the basic steps to install the SDLPD software on
     your server.  You must follow these steps before proceeding to the
     remainder of the manual.  After installation, you will need to
     configure SDLPD for incoming or outgoing print jobs.
     
     1)   Install the NetWare TCPIP.NLM.  Refer to the TCP/IP Transport
           Supervisor Guide for details on installing the TCPIP.NLM.  You can
          verify that TCPIP is working correctly by using the ping program
          from a UNIX host and pinging your NetWare server.
     
     2)   Copy SDLPD.NLM and SDLPDCON.NLM into your SYS:SYSTEM directory.
     
     3)   From the File Server console, type "load sdlpdcon" to load the
          configuration program.
     
          A menu will be displayed.  Select the Install option.  The
          following dialog will be displayed.
     

                          Installation
     
             Installed:        Wed Mar 22   15:10:50  1995
     
             Serial Number:    XXXXX
             Your Name:        John Doe, System Admin.
             Company Name:     Secure Design
             Company Info:     Corvallis, OR
     
     
           Enter the serial number provided on the software disk.  If you are
           installing the demo version, leave the serial number blank.  The
           demo will expire in 60 days after installation.
     
           To personalize your copy of SDLPD, complete the fields for your
           name, company and any further information you wish to enter.
     
           Press <ESC> when you have completed the information in this screen,
           and you will be presented with the main menu again.


















     Page - 5
     
     4)   Select Miscellaneous Options from the main menu.  The dialog shown
          below will be presented.
     
                    Miscellaneous Options
     
            Log Shows Date:                NO
            Log Shows Time:                YES
            Log Shows Level:               YES
            Log To File SDLPD.LOG          NO
            Log Level:                     4) Noise
            LPR Low Port Range:            721
            LPR High Port Range:           731
            Max Concurrent Incoming Jobs   10
     
          When SDLPD is running, a screen will be presented with information
          about print jobs as they are processed. You can choose to have each
          entry in the log screen show the date, time, or severity (level) of
          the message.
     
          Log To File saves all log screen output to SYS:SYSTEM\SDLPD.LOG.
	  SDLPD will keep this file open while loaded.  You must unload SDLPD
          to access this file.
     
          The Log Level option sets what level of severity will be displayed.
          The options are for Error, Warning, Message, and Noise.   The
          option for Noise is only useful for debugging any problems you
          may have.  The default option is a Log Level of Message.
     
          LPR Low & High Port Range:  See the section titled Transferring Print
          Jobs to UNIX Systems.
     
          Max Concurrent Incoming Jobs:  See the section titled Receiving
          Print Jobs From UNIX Systems.
     
     5)   Before proceeding, please review the chapters titled Transferring
          Print Jobs to UNIX Systems and Receiving Print jobs From UNIX Systems.
          You will need to configure SDLPD depending on the services you wish
          to have performed.
     
     6)   Last when configuration is complete,  quit the SDLPDCON.NLM.

          From the File Server console, type "load sdlpd" and press enter.
          SDLPD will be loaded and it should begin servicing jobs.
     
          You should add the line "load sdlpd" to your sys:system\autoexec.ncf
          to allow SDLPD to be loaded automatically when the server is booted.











     Page - 6
     Transferring Print Jobs To UNIX Systems
     
     SDLPD can transfer print jobs from a NetWare print queue to a remote
     LPD host.  Jobs are serviced by a configured print server, and removed
     from the queue when a successful transfer occurs.  Several options
     can be set to modify the way SDLPD sends jobs to a remote host.  The
     following instructions cover setting up SDLPD to send jobs to a
     remote host.
     
     Use PCONSOLE.EXE from a DOS workstation.  Create a new print server to
     be used to service outgoing print jobs.  For the purpose of example,
     the manual will use SDLPD_PSERVER as the print server name.  Do not
     give the print server a password.
     
     Create any print queues that you may need, if you are not using existing
     print queues.
     
     Edit the file SYS:ETC\HOSTS.  You will need to add the host name of
     each host that you wish to send jobs to.  For further assistance,
     please read Novell's "TCP/IP Transport Supervisor Guide" for details
     on the format of the HOSTS file.
     
     From the server console, load SDLPDCON.NLM if it is not currently
     loaded.  Select the option for Job Print Server.   A dialog will be
     shown, press enter to change the print server.  A list of print servers
     will be displayed.  Select the print server you created, such as
     SDLPD_PSERVER, and press enter. The name of the print server should
     now be displayed in the Outgoing Job Print Server dialog box.
     Press <ESC> to return to the main menu.
     
     Select the menu option for Outgoing Queues.  A list will be shown.
     To configure a previously installed queue, select the queue and
     press enter.  To configure a new queue, press <INS>, and a list of
     queues will be displayed.  Select one and press enter.  The dialog
     shown below will be displayed.
     
     
                      Outgoing Queue Options
     
           Data Translation:        Automatic
           Banner Name For User:    YES
           Fix CTRL-D:              YES
	   Retry Rejected Jobs:     YES
           Target Host:             odell.sdesign.com
           Target Queue:            lp
     












     Page - 7
     Data Translation:  This option controls any text translations needed
     between DOS and UNIX systems.  Options are
     
	  Binary:      No translations
          CR/LF->LF:   Always translate all jobs.
          Automatic:   Uses CR/LF->LF only when job type is TEXT
     
     In the capture command, you can specify this setting.  "Capture -NT"
     will cause jobs to be spooled as BINARY,  omitting this option causes
     jobs to be submitted as TEXT.  This option can also be set with
     PRINTCON.EXE for print job definitions.
     
     Banner Name For User:  When sending a print job to a LPD host, the
     source user is specified as the print job client.  If Banner Name
     For User is set to YES, the banner name will be used for the user
     name rather than the client name of the print job.  Use PCONSOLE.EXE
     to view a print job information screen to see the client name and
     banner name of a print job. This feature is useful in a situation
     where a Macintosh submits a job to a queue without being logged
     into the file server.  The client name will be ATPS_QUSER however
     the banner name will reflect the computer that sent the print job.
     
     Fix CTRL-D:  Some print drivers place an ASCII 0x04 character (CTRL-D)
     on the beginning of a postscript print job.  Postscript interpreters
     often use this to mark the end of a file.  When Fix CTRL-D is set
     to YES, SDLPD will remove the CTRL-D character at the beginning of
     a print job when it is immediately followed by the character
     string "%!PS-Adobe"
     
     Retry Rejected Jobs:  When set to YES, if the remote host rejects
     the print job, the job will be moved to the end of the queue and
     attempted again later.  If set to NO, the job will be removed from
     the queue.  Jobs may be rejected because the NetWare server or user
     do not have access to the remote queue, or because the remote host
     is out of disk space.  (If the flag for Service-Restart is not set
     for a print job, the job is purged regardless of the Retry Rejected
     Jobs option.  Default options for print jobs set the Service-Restart
     flag however)
     
     Target Host:  Enter the name of the target machine.  This name must
     be in the file SYS:ETC\HOSTS on the NetWare server.
     
     Target Queue:   Set this to the print queue on the remote system.

     Port Numbers:  In the main menu, under Miscellaneous Options, there
     are settings for LPR Low Port and LPR High Port.  LPR Low Port and
     LPR High Port sets the range of TCP ports used for communicating
     with the UNIX host when sending outgoing print jobs.  (Incoming
     jobs always use port 515)   RFC 1179 specifies that the source
     port must be from 721 to 731 inclusive.  Many UNIX lpd daemons
     will accept connections from any port under 1024.







     Page - 8
     If you receive errors concerning "a local port is already in use,"
     try adjusting the High and Low Port settings to allow for a wider range
     of ports to use while sending jobs.  e.g., try a range of 700 to 900.
     
     The Netware TCP software seems to take an inordinate amount of time
     to dispose of ports after a connection has terminated.  (ports that
     are in a  2MSL timeWait  state)  SDLPD will cycle through the ports
     specified by the LPR Low & High port settings when connecting to
     remote hosts.  If many print jobs are being transferred, it is
     possible that all 10 ports will be in a timeWait state.  This problem
     is corrected by expanding the range of source ports to accomodate
     this itmeout.  See Stevens, 1994, Pp 242-243 for more information.
     
     hosts.lpd:  On your target host system, you will need to edit the
     hosts.lpd file.  Many systems keep this file in the /etc directory.
     Add the full host name of the NetWare file server to this file.
     Please consult your documentation for your UNIX system for details
     on the /etc/hosts.lpd file.
     







































     Page - 9
     Receiving Print Jobs From UNIX Systems
     
     SDLPD can receive print jobs from remote hosts.  Incoming  jobs are
     received on TCP socket 515, and a NetWare thread is created to handle
     the connection.  Data is queued into a temporary file in the NetWare
     queue's directory, and placed into a NetWare print job when the
     transfer is complete.
     
     Use PCONSOLE.EXE from a DOS workstation.  Create any print queues that
     you may need if you are not using existing print queues.
     
     Edit the file SYS:ETC\HOSTS.  You will need to add the host name of
     each host that you wish to receive jobs from.  For further assistance,
     read Novell's "TCP/IP Transport Supervisor Guide" for details on
     the format of the file.
     
     From the server console, load the SDLPDCON.NLM if it is not currently
     loaded.  Select the menu option for Incoming Queues.  A list will be
     shown.  To configure a previously installed queue, select the queue
     name and press enter.  To configure a new queue, press INS, and a
     list of  queues will be displayed.  Select one and press enter.  The
     dialog shown below will be displayed.
     
                        Incoming Queue Options
     
            Data Translation:                 Automatic
            Suppress Form Feed:               YES
            Suppress Banners:                 YES
            Host Access Control:              NO
            Host Access List:                 < Edit List >
            PostScript Job Form Number:       0
            PostScript Job Prefix File:       PS-HEAD.DAT
            PostScript Job Suffix File:       HP-RESET.DAT
            Binary Job Form Number:           0
            Binary Job Prefix File:           PCL-HEAD.DAT
            Binary Job Suffix File:           HP-RESET.DAT
            Text Job Form Number:             0
            Text Job Prefix File:             PCL-HEAD.DAT
            Text Job Suffix File:             HP-RESET.DAT
            Other Job Form Number:            0
            Other Job Prefix File:
            Other Job Suffix File:
     
     Data Translation:  This option controls any text translations needed
     between DOS and UNIX systems.  Options are
     
           Binary:      No translations
           LF->CR/LF:   Always translate all jobs.
           Automatic:   Uses LF to CR/LF only when job type is TEXT









     Page - 10
     Suppress Form Feed:  This option sets or disables the print job flag
     to suppress from feeds after the print job has finished printing.
     
     Suppress Banners:  If this option is set to YES, no banner pages will
     be printed.  If set to NO, banner pages will be printed if requested
     by the incoming print job.  UNIX print jobs usually request banners
     unless lpr is used with the -h option.  A job submitted as PostScript
     will have the banner suppressed regardless of the Suppress Banners
     option setting.
     
     Host Access Control:  If set to NO, all hosts will be allowed to
     print to configured print queues.  If set to YES, the host name
     will be checked with the list configured in the Host Access List
     option.  If the host does not exist in the list, the connection will
     be closed and the job will be rejected.  To add hosts to the list,
     select the Host Access List and press <Enter>.  A list will be
     displayed.  Press <Ins> to add a host name, or <DEL> to remove a
     host name.
     
     Form Numbers:  Four options for controlling the NetWare print job
     form types are provided for different types of print jobs.  Most
     UNIX implementations will send jobs in text format by default.  UNIX
     users can use the lpr option -l to print binary.  Care should be
     taken when changing the form number from the default.  Print servers
     can be configured to service only one form type, and will prompt a
     system administrator for form changes when the print server encounters
     a different form type.  The default is to set all form types to 0.
     
     Prefix and Suffix files:  Four options for adding data to the beginning
     or the end of an incoming print job are provided.  This is useful
     for queues serviced by language switching printers.  With this option,
     you can specify a file name, or leave the option blank.  All files
     used for this option must be placed in the SYS:SYSTEM\SDLPDFLT\
     directory.  Several sample files are provided for your reference.
     The file LINEPRT.PS can be added as a prefix to text files when the
     queue is serviced by a PostScript printer.  Please read the LINEPRT.PS
     file for further details.  The sample file PS-HEAD.DAT will switch a
     HP3si into PostScript mode, PCL-HEAD.DAT will switch a HP3si printer
     to PCl mode.  HP-RESET.DAT will switch a HP3si printer back to the
     default printer mode.
     
     In the Miscellaneous Options in the main menu, a setting for Max
     Concurrent Incoming Jobs can be set.  This sets a limit to the number
     of print jobs SDLPD will accept at once.  Each incoming print job
     will create a process (and consume processor time)  on the NetWare file
     server.  System Administrators may wish to limit the number of processes
     that SDLPD can create with this option on slower systems.











     Page - 11
     Options for /etc/printcap on UNIX systems:
     
     The following list is a partial listing of options for the UNIX lpd
     software.  You should consult your documentation for a complete listing
     of features.  Note that the \ character is used to note that the
     printcap entry continues on the next line. Each option is separated
     by a : character.
     
     An example entry on a UNIX system might resemble the following:
     
     lp|printq_0:\
          :sd=/usr/spool/lp:\
          :sh:\
          :mx#0:\
          :lp=:\
          :rm=odell.sdesign.com:\
          :rp=printq_0:\
          :lf=/var/adm/lp.log:
     
     
     
     lp   (or printq_0)  Identifies the print queue to the lpd software.
          Multiple names for the queue may be listed, each separated by a |
          character.  The : character ends the print queue name field.  The
          remaining fields are options for the print queue
     
     sd   Directory where the UNIX system stores the queue files.
     
     sh   Suppress printing of banner page.
     
     mx   Maximum file size (in blocks)  zero=unlimited.
     
     rm   Host name for remote printer.  (For use with SDLPD, this should be
          the host name of your NetWare server)
     
     lp   Device to send print output.  For remote hosts, this should be left
          blank or omitted.
     
     rp   Print queue name on remote host.  (For use with SDLPD, this should
          be the print queue name on the NetWare file server)
     
     lf   Log file name.
     
     Most LPD software packages will only transfer jobs to remote hosts
     when configured with a remote printer.  This will cause options such
     as input and output filters to be ignored for remote printers.  For
     more information, consult the documentation on your LPR/LPD software
     for your UNIX host.










     Page - 12
     LPD control codes supported by SDLPD for incoming jobs:
     
     The following is a list of printer command codes supported by SDLPD.
     This is provided as a reference to system programmers.
     
     H     Host name where the job was printed.
     L     User name of  the job.  This specifies the job requests a banner page.
     N     Full path name of the source file.
     P     Login name of the job owner.  The "banner name" field will reflect
           this if the L option was not used.
     J     Job description for the print job.
     
     File control codes supported by SDLPD:
     
     f     Print file as TEXT
     l     Print file including control characters.  (BINARY)
     o     Print file as PostScript   (Banner page is always suppressed)
     c     Print CIF file, submitted as Other job type.
     d     Print DVI file, submitted as Other job type.
     g     PLOT file, submitted as Other job type.
     n     Print ditrof file, submitted as Other job type.
     p     Print PR format file, submitted as Other job type.
     r     Print Fortran file, submitted as Other job type.
     t     Print troff file, submitted as Other job type.
     v     Print raster file, submitted as Other job type.
     
     UNIX host functions
     
     Support for remote queue inquiries is supported by SDLPD.  From a UNIX
     host, you may use the lpq program to check the status and contents of
     a queue.
     
     Support for lprm is not provided.
     
     For specific lpr options, consult your UNIX system software documentation.
     Some lpr options that may be useful include:
     
     -h    Suppress banner pages
     
     -l    Print with control characters.  (Send job as binary)
     
     -J    Add job description.  Example:  lpr -J"My Print File"  /tmp/text.file
           This option is usually suppressed by the -h option.
     
     -P    Specify the UNIX print queue.  lpr -Pprintq_0 /tmp/text.file
     












     Page - 13
     Transferring Print Jobs 
     Between NetWare Servers
     
     One use for SDLPD is in systems that distribute servers at multiple
     offices on a wide area TCP/IP network, such as the Internet.  SDLPD
     can be configured to transfer print jobs to and from NetWare servers
     on each site.
     
     In such a setup, users at each site can print to printers at remote
     sites without having to login or attach to file servers across a
     potentially slow link.  Print jobs could be queued on local servers
     even when the wide area network is not functioning.  Transfers to
     remote sites would begin as soon as the wide area network becomes
     operational again.
     
     Below is an illustration of this setup:
     
     
                < picture available in PostScript document >
     
     
     In this example, a NetWare server in New York and a NetWare server in
     Los Angles are using SDLPD to transfer print jobs to each other.
     Each server has a local print queue and printer.  In addition, each
     server has a local print queue that is serviced by SDLPD.  On the
     file server LA_SERVER, the NY_QUEUE is serviced by SDLPD and the
     print jobs are transferred to the server in New York.  SDLPD on the
     server NY_SERVER is configured to receive jobs and place them in
     the queue NY_QUEUE.  In the same manner, the file server in New York
     transfers print jobs from one of its' print queues to the LA_SERVER.
     SDLPD is configured on each server to receive print jobs for the local
     print queues that are attached to local printers.
     
     This configuration allows a user attached only to the server in Los
     Angles to print to a local printer, or print to the queue NY_QUEUE
     and have the print job transferred to New York for printing there.






















     Page - 14
     Troubleshooting
     
     Before installing SDLPD, you should upgrade your file server's
     TCPIP.NLM to v2.02m.  This includes several bug fixes that are
     outlined in the upgrade software.
     
     If SDLPD.NLM or SDLPDCON.NLM fail to load and symbol not found errors
     are reported, you may need to upgrade some of the file server's
     NLMs.  See the section on System Requirements for details on the
     specific versions required.
     
     If errors are reported that a host name can not be found, you may
     need to add the complete host name to the SYS:ETC\HOSTS file.
     
     If SDLPD or the UNIX system attempts to connect and is not successful,
     it is possible that the TCPIP.NLM is not configured correctly.  Check
     to see if a user on another workstation or UNIX host can ping the
     NetWare server by IP address AND by host name.
     
     Jobs transferred to UNIX hosts to be printed appear to be double
     spaced:  This is often caused by not removing the CR/LF markers
     from DOS text files.  Make sure the outgoing job translation is set
     to Automatic or Translate CR/LF->LF and that the print job is
     submitted to the queue as TEXT.  If the job is submitted as BINARY
     to the NetWare queue configured for Automatic translation, you will
     need to set the job type to TEXT in your print job definition.
     
     Print jobs sent from UNIX hosts print with a stair step effect.
     Each line of  text is vertically below the line above however the
     text does not begin at the left margin.   This is often caused by
     not translating the UNIX LF (line feed) character into a CR/LF pair.
     Check to make sure the incoming queue translation is set to Automatic
     or LF->CR/LF.  Text jobs should not be sent from the UNIX lpr
     program with the -l option.
     
     If SDLPD takes a long time to unload while a connection to a remote
     machine is waiting to time out, you may need to upgrade to v2.02m
     of the TCPIP.NLM.  In some of our test it took as long as 20 minutes
     for a connection to time-out while connecting to a nonexistent remote
     host with TCPIP.NLM v1.00.  With the newer TCPIP.NLM, this has been
     reduced to about 45 seconds.
     
     If you are unable to determine the source of a problem with SDLPD,
     set the log level to NOISE in the SDLPDCON.NLM (in the Miscellaneous
     options menu)  This will give many more error and notice messages
     while processing print jobs.
     











     Page - 15
     About Secure Design
     
     If you would like information about our products, please contact us
     at the following address.

	  Secure Design
	  PO Box 1066
	  Beaverton, OR 97075  USA

	  Internet:     support@sdesign.com
	  Mail Server:  autohelp@sdesign.com
	  Phone:        +1-503-690-1819
	  Fax/BBS:      +1-503-690-3037
	  WWW:          http://www.peak.org/~sdesign




     Demo products and software updates can be obtained by Internet e-mail
     by sending a message to autohelp@sdesign.com with a subject of "help",
     by calling the BBS , or by accessing our Internet World Wide Web page
     with the address listed above.

     For complete ordering and address information, use the ORDER.FRM
     file provided with this software.


     For Further Reading

     McLaughlin III, 1990. "Line Printer Daemon Protocol,"  RFC 1179,
	  14 pages  (Aug.)
     
     Novell, Inc.,  TCP/IP Transport Supervisor's Guide.  Novell, Inc.  
	  (available by FTP from ftp.novell.com)
     
     Stevens, W. R. 1994.  TCP/IP Illustrated Volume 1.  Addison-Wesley,
          Reading, Massachusetts
     
     Stevens, W. R. 1990.  UNIX Network Programming.  Prentice Hall,
          Englewood Cliffs, New Jersey.
































     Page - 16
