  Netware-HOWTO
  Lauri Tischler ltischler@fipower.pp.fi
  rev.0.2 30 Mar 1995
  updated for DOSEMU 1.2.0, 18 Jan 2004, Bart Oldeman -- contributions
  by Peter Eckhardt

  This document tryes to descibe how to connect to Novell Netware
  servers from Linux.

  1.  Introduction

  Due to the limited scope of this note, it is not a real HOWTO, not
  even a 'mini-HOWTO'.	You might call it a 'nano-HOWTO' if you like.

  In most sites the Netware is really just an extension to PC's running
  DOS and DOS applications (Windows is JUST another DOS-application),
  the Netware providing fileserver and printing support.

  I will concentrate on getting the connection via DOSEMU only.

  My everyday network is a Netware network with 3 servers and appr. 110
  PC's connected to it.	It is TOTALLY Dos/Windows environment, running
  Novell standard Ethernet_802.3 frames, very ordinary REAL LIFE setup.

  Tested Environment :

  o  LinuxBox 486DX2/66, 17Meg Ram + 20 Meg Swap,  two ESDI disks 340Mb
     and 320 Mb (Linux InSide), Netcard SMC Elite Ultra.

  o  Linux 1.2.2,  Dosemu pre0.53.55.

  o  Netware 3.11 on all servers,  SMC Elite 32 EISA on main server.

  The following may or may not work on Your pile of iron.


  2.  Netware Requirements.

  One of the main questions is What Is the Ethernet Frame Type your
  Netware uses.


  2.1.	Frametype Ethernet_II.

  For IP-connectivity Novell has always used Ethernet_II frametype.
  Some sites use Ethernet_II for IPX _and_ IP  (good for them).	This is
  also easiest case to connect to Netware, you also get IP-connectivity
  between your linuxboxes if/when they are located in separate segments.
  For IP-connectivity you need to load TCPIP.NLM in your server and
  define FORWARD=YES on loadline.  You also need to BIND the IP to your
  server networkcards with proper IP-address.  In general if you need
  any kind of IP-connection to Netware Server (NFS, BOOTPD, FTPD) you
  _must_ use Ethernet_II frame.


  2.2.	Frametype Ethernet_802.3.

  Traditionally Novell has used Ethernet_802.3 for IPX protocol. That is
  _before_ the Netvare 4.0x and various VLM stuff.   In this case you
  can't communicate with other linuxboxes if they are located on
  separate segments because Netware will not route IP-protocol on 802.3
  frames.  You can however connect to Netware server as an isolated
  workstation.





  2.3.	Frametype Ethernet_802.2.

  New Novell practice is to recommend the Ethernet_802.2 frame for IPX.
  The 802.2 is actually the default frametype unless otherwise declared
  (in server autoexec.ncf and workstation net.cfg files). This is also
  the worst case because the dosemu packetdrivers do not support this
  frametype.  You can still connect using direct-IPX approach.


  I would recommend that you load the Ethernet_II frame in your server
  in ANY CASE because that makes the care-and-feeding-and-development
  much easier in the longrun.

  There has been some worried noises about messing up the IP-traffic on
  Ethernet_II if you run IPX on Ethernet_II frames at the same time.
  There is no problem in running both protocols on same frame and cable,
  it is done all the time on many sites (RTFM - Novell TCP/IP Docs) 8-).

  This how I do both frames and protocols on single card and cable .

  load SMCE32 port=6810 Name=First  Frame=Ethernet_802.3  ; 'novell' frame
  load SMCE32 port=6810 Name=Second Frame=Ethernet_II	; 'normal' frame
  bind ipx to First Net=E1
  bind ipx to Second Net=E2


  So I actually run IPX on both frames, Ethernet_802.3 on logical net E1
  and Ethernet_II logical net E2.  All on one card and cable.


  3.  Making The Connection.

  There are basically two methods for making the connection between the
  Linuxbox and Netware server, The Direct-IPX or Packet Drivers. At
  the time of writing the Packet Driver method is the most reliable
  in particular if you combine it with DPMI programs. Direct-IPX may
  just work though (depending on the DOS program in question).


  3.1.	The Direct-IPX.

  Make sure that you have the IPX support compiled in to your kernel.

  Within DosEmu, in directory ipxutils, there are some utilities which
  are necessary.  At the time of this writing the compiling of those
  utilities was not automatic,	so it may be necessary to go to
  directory ipxutils and run 'make'.

  Check that in your 'dosemu.conf' file you have 'ipx_support' enabled.
  $_ipxsupport = (on)

  Now you need to enable the ipxinterface.  To do that you execute
  following command :

	  ipx_interface add -p eth0 802.3


  Instead of 'eth0' you can give some other Id in case your ethernetcard
  is somewhere else.

  The last parameter, ie. 802.3, depends on what type of ethernetframe
  runs on your network.	Possibe values are 802.2,  802.3  and EtherII.
  Check with your Netware Administrator if you are not sure.  You may
  wish to add the above mentioned command into your rc.local file.

  Now start the dosemu session and load the Netware shell, NETX.  The
  NETX is the only TSR necessary to run the connection, no LSL, no
  Packetdrivers nor IPXODI.


  Pros.

  o  Connection is reasonably fast,  about 2.41666.. times faster then
     packetdrivers.

  o  This is the ONLY way to connect if you are using Ethernet_802.2
     frame.

  Cons.

  o  SPX support is still missing, this means that some software will
     not run, like Intel LanDesk Inventory, Novell Remote Console,
     Netware Access Services,  I'm sure there are more	8=(

  o  The connection drops dead after about 15 min of idletime.	I
     suspect that it has something to do with 'watchdog packets' from
     the server not getting proper answer.  Maybe some IPX/SPX guru will
     look into this.
 
  o  DPMI in combination with direct IPX is broken as of DOSEMU 1.2.0.


  3.2.	The Packet Driver (IPX).

  As a driver you should use PDETHER which is an ipx-to-packet driver
  shim, but masquerading as an ODI compliant driver.  There also exists
  an older driver PDIPX, technology represented by PDIPX is no longer
  supported by Novell. A driver named IPXPD is more likely to work
  than PDIPX. PDETHER and IPXPD are using Ethernet_II frames, while
  PDIPX uses 802.3 frames.

  The Packet Driver uses build-in packetdriver interface which means
  that the IPX-SUPPORT in Kernel and in DOSEMU is NOT needed.  When
  configuring the Kernel you can define IPX-SUPPORT (n), this is
  actually the default case.

  Corresponding parameter for DOSEMU is found in the NETWORKING SUPPORT
  section of dosemu.conf/.dosemurc.  There you just leave the line
  $_ipxsupport = (off) commented out.	(see below)

  The use of the second configuration parameter $_novell_hack is
  explained in detail in later paragraphs.

  #************************* NETWORKING SUPPORT *****************************
  #
  #    Turn the following option 'on' if you require IPX/SPX emulation.
  #    Therefore, there is no need to load IPX.COM within the DOS session.
  #    The following option does not emulate LSL.COM, IPXODI.COM, etc.
  #    NOTE: MUST HAVE IPX PROTOCOL ENABLED IN KERNEL !!
  # $_ipxsupport = (off)
  #
  #    Enable Novell 8137->raw 802.3 translation hack in new packet
  #    driver.

  $_pktdriver = (on)
  # $_novell_hack = (off)

  Also set up a working packet driver (eg. TUN/TAP) connection; refer to
  README.txt for details. For example (with tunctl) set:

  $_netdev="tap0"
  $_vnet="tap"

  There are various versions of the packetdriver PDETHER floating around, but
  it is recommended to use version 1.05 or later. Those versions have
  support for a "raw packet send" interface, which allows to use the
  NDIS over the ODI shim with an odihlp.exe NDIS3/ODI mapper (the odinsup.com
  protocol mapper won't work with any version of PDETHER).

  PDETHER in its native mode understands only Ethernet_II frames, by
  enabling the dosemu.conf parameter pktdriver novell_hack it can be
  fooled to use Ethernet_802.3 frames instead.

  Because PDETHER is an ODI driver, you load..

      LSL (at least version 2.20; older versions may crash dosemu)
      PDETHER
      IPXODI
      NETX

  If you use IPXPD or PDIPX you just load

      IPXPD (for Ethernet_II frames) or PDIPX (for 802.3 frames)
      NETX

  Because PDETHER is an ODI driver, there must be corresponding section
  in your net.cfg file.	Here is a snippet of my NET.CFG

  Link Support
	  Buffers 4 1514
	  MemPool 2048

  Link Driver PDETHER
	  Int 60
	  FRAME Ethernet_II

  NetWare DOS Requester
	  FIRST NETWORK DRIVE	= F
	  SHOW DOTS		= ON
	  SET STATION TIME	= ON
	  PREFERRED SERVER	= HOME
	  FILE HANDLES		= 40
	  LOCAL PRINTERS	  = 1



  The packetdrivers support only Ethernet_802.3 and Ethernet_II frames.
  If you are unlucky enough to use Ethernet_802.2 frame, your only
  change is to use direct-IPX interface (unless you can persuade the
  system admin to add Ethernet_II frames to your network 8=)).

  Do NOT CHANGE line 'FRAME Ethernet_II' in Link Driver PDETHER section,
  instead enable or disable the 'pkdriver novell_hack' in 'dosemu.conf'

  $_pktdriver = (on)
  $_novell_hack = (on)            If you have Ethernet_802.3

  # $_novell_hack = (off)	  If you have Ethernet_II

  Read the PDETHER.DOC for further info.

  Example from Peter Eckhardt:

   Create a startnet.bat and net.cfg in dosemu

   CD C:\NWCLIENT
   edit ....

   - startnet.bat -

   SET NWLANGUAGE=DEUTSCH
   LH C:\NWCLIENT\LSL /c=C:\NWCLIENT\net.cfg
   C:\NWCLIENT\PDETHER.EXE
   LH C:\NWCLIENT\IPXODI.COM
   rem LH C:\NWCLIENT\NETX
   LH C:\NWCLIENT\VLM.EXE

   - net.cfg -

   Link Support
          Buffers 4 1514
          MemPool 2048

   Link Driver PDETHER
          Int 60
          FRAME Ethernet_II
          USE DEFAULTS=OFF
          VLM=CONN.VLM
          VLM=IPXNCP.VLM
          VLM=TRAN.VLM
          VLM=SECURITY.VLM
          VLM=NDS.VLM
          VLM=NWP.VLM
          VLM=FIO.VLM
          VLM=BIND.VLM
          VLM=PRINT.VLM
          VLM=GENERAL.VLM
          VLM=REDIR.VLM
          VLM=NETX.VLM

   NetWare DOS Requester
          FIRST NETWORK DRIVE   = F
          NETWORK PROTOCOL      = BIND
          SHOW DOTS             = ON
          SET STATION TIME      = ON
          PREFERRED SERVER      = EMK1
          FILE HANDLES          = 40
          LOCAL PRINTERS        = 1
          VLM                   = AUTO.VLM

  4.  Speed Of Connection

  Here is some benchmarking I did with testprogram TESTNET.EXE,
  available somewhere in NetWire.  It tests the network transfer speed.

  I can saturate my ethernet with two stations running at full tilt.
  Maximum aggregate speed is appr. 900 kilobytes/sec.

  I'm using SMC Elite 32 EISA board in Server and SMC Elite Ultra in
  workstation.

			  NETX
  Dos6.2		  620
  DosEmu (directIPX)	290
  DosEmu (pktdrv)	 120

  The figures denote transferspeed in kilobytes/second.

  Few months ago I had a NE2000 clone in my box, with DOS6.2/NETX it
  would run to appr. 460 kbs.  I could live with that.

  Note: Recently improvements were made that speed up the packet
  driver throughput more than twice. The above measurements are no longer
  valid. It is expected that the Packet Driver now has the same performance
  as the directIPX method, or even better, but no precise measurements
  were made.




  5.  NFS and Other Connectivity.

  It is possible to access Netware server and services from Linux
  directly by using various commercial supportpackages to get Unix
  filesystem and/or printing services.

  o  Netware-NFS.

  o  Netware Flex-IP.

  o  Nov*iX from FireFox.

  o  Charon, shareware SMTP-gateway and printservices.

  There also exists a freeware NFS connectivity using SOSS package,
  below is a contribution from a fellow netter, Andrew J. Anderson,
  andrew@db.erau.edu.

  --- message begins ---


  I am currently using a package called "soss" (Son of Stan's Server)
  that turns a DOS PC into an NFS server.  I am using this to export
  NetWare volumes to my Linux box so that I can have multi-user access
  to several CD-ROM packages.  I will continue using this until multiple
  logins from DOSEmu becomes a reality.	The speed of this setup depends
  on the speed of the PC that is running the NFS server package.
  Currently, I am using a 286 with 4 Megs of RAM being used as a disk
  cache.  If I remember correctly, I can get about 50K/s across this
  setup.  I tested a 486DX-33 with 8 megs and got about 250- 300K/s
  transfer.  I am hoping to get about 500K/s with a 486DX2-66 with 16
  megs of RAM.	Not blazingly fast, but good enough.

  So if you play with drive mappings under DOSEmu using LREDIR, you
  could setup a scheme where each user had a mapping to their home
  directory on the Novell side.	There is potential for security risk in
  doing that because SOSS doesn't have much in the way of security built
  in, but I am using part of my NetWare volumes as "overflow" space when
  my Linux drives fill up -- as they so often do! :)

  --- message ends ---	Thanks Andrew..

  I have no personal experience with any of the packages mentioned
  above, I'm sure that there are a lot of other useful packages
  floating around.  Please mail me, so I can add them to possible future
  incarnations of this note.


  6.  History.

  6.1.	Revision 0.1.

  Written with great haste and enthusiasm. Contained some mistakes for
  which I was promptly flamed 8:).  Some reports of success were also
  received.

  6.2.	Revision 0.2.

  Known errors corrected and new sections added.

  Any additions for this HOWTO are humbly accepted and if relevant to
  great cause will be added to later revisions.




  7.  Begin Legalese.

  Unless otherwise stated, Linux HOWTO documents are copyrighted by
  their respective authors. Linux HOWTO documents may be reproduced and
  distributed in whole or in part, in any medium physical or electronic,
  as long as this copyright notice is retained on all copies. Commercial
  redistribution is allowed and encouraged; however, the author would
  like to be notified of any such distributions.

  All translations, derivative works, or aggregate works incorporating
  any Linux HOWTO documents must be covered under this copyright notice.
  That is, you may not produce a derivative work from a HOWTO and impose
  additional restrictions on its distribution. Exceptions to these rules
  may be granted under certain conditions; please contact the Linux
  HOWTO coordinator at the address given below.

  In short, we wish to promote dissemination of this information through
  as many channels as possible. However, we do wish to retain copyright
  on the HOWTO documents, and would like to be notified of any plans to
  redistribute the HOWTOs.

  If you have questions, please contact Greg Hankings, the Linux HOWTO
  coordinator, at greg.hankings@cc.gatech.edu. You may finger this
  address for phone number and additional contact information.

  End Legalese.

  Happy Netting.  Lauri Tischler,  ltischler@fipower.pp.fi
