# Networking FreeDOS - ODI driver installation

## Overview

      (Picture of the ODI model)

      "Open Datalink Interface" (ODI) drivers were originally needed for
      Novell NetWare. But that doesn't mean they can not be used for packet-
      driver-based TCP/IP applications. In fact, they were used for this
      since they were invented.
      An ODI driver is a good choice, if you cannot get a packet driver for
      your NIC. Because NetWare was a popular system during the eighties
      and nineties of the last century, there is quite a good chance that
      the manufacturer of your network card included such an ODI driver.

#### [Main menu] [top] [Where to find] [How they work] [Converter] [Config] [Install]

## Where to find them

      Look for a directory called "netware", "nwclient", "ODI" or "VLM" on
      the installation floppy or CD-ROM of your card. The drivers are
      executables, their names look like "3C574.COM" or "DFE670.COM".

#### [Main menu] [top] (Where to find) [How they work] [Converter] [Config] [Install]

## How they work

      In the language of the ODI specification (see: http://developer.
      novell.com/ndk/doc/lancomp/dos_psta/dos_pstack.pdf) these drivers of
      the network card are called "Multiple Link Interface Driver" (MLID).
      As you see in the figure above, the MLID communicates directly with
      the hardware of the network interface card. The MLID receives packets
      for different protocol stacks (kernels) in the system and passes these
      packets to a second piece of software, the "Link Support Layer" (LSL).
      The LSL then determines which protocol stack is to receive the packet.
      Both, MLID and LSL form the ODI architecture.
      So we need an additional file to get ODI working: The LSL, which is
      a file called "LSL.COM". This file is part of the "DOS NetWare Client",
      which can be downloaded at Novell (see: http://www.novell.com/
      coolsolutions/tools/downloads/dw271e.zip). Novell's download site
      (see: http://www.novell.com/coolsolutions/tools/13555.html) explicitly
      remarks "LICENSE: FREE" for it. After download and extraction, the file
      "LSL.COM" can be found in the folder "NIOS".

#### [Main menu] [top] [Where to find] (How they work) [Converter] [Config] [Install]

## The converter/shim

      (Picture of Webspyder)

      As we want to use ODI with packet driver based TCP/IP applications,
      we have to download another piece of software, a "Packet Driver to
      ODI Converter". Converters are also called "wrappers" or a "shim".
      We have three options:
        * ODIPKT.COM v3.1 by Dan Lanciani (see: http://www.danlan.com) at
          Harvard University. The software is public domain; its license
          allows free redistribution of binary and source and the modifica-
          tion of the source (assembler). ODIPKT.COM is part of FreeDOS 1.0.
          If you installed the network apps from the FullCD distribution, it
          can be located in C:\FDOS\BIN. This is the software most users
          will choose.
        * PKT2ODI.EXE by Caldera. This file is part of the DR "WebSpyder"
          software, a graphical DOS browser, that Caldera released in 1998.
          WebSpyder was licensed from xChaos/Arachne. The software can be
          downloaded here (see: http://lazybrowndog.net/webspyder).
          It's license allows it to be evaluated and freely redistributed
          for non-commercial purposes.
        * If you are already running full NetWare, you can use IPXPKT.COM
          to run a packetdriver over IPX.COM. IPXPKT.COM is free software
          by Crynwr and is a part of their packet driver collection PKTD11.ZIP
          (see: http://www.crynwr.com/drivers/pktd11.zip). This is a special
          case and will not be further investigated in this document.
      With the MLID, the LSL and the converter we have most of the files
      needed. The only one missing is the configuration file "NET.CFG". An
      example file with settings supposed for your card may be found on the
      CD or floppy that came with it and should be located in the same
      directory as the ODI driver.

#### [Main menu] [top] [Where to find] [How they work] (Converter) [Config] [Install]

## Configuration of NET.CFG

      Now, let's edit our main configuration file NET.CFG. If it doesn't
      exist, create it. You have to choose a directory - default locations
      of NET.CFG seem to be C:\NWCLIENT or C:\NET. Anyway, the location
      should be in the same directory, where LSL.COM and the driver can be
      found. An example NET.CFG (see below) which came with the 3Com 3C574
      PC Card shows a lot of configuration settings, that are needed for
      Novell NetWare and other software. For using packet driver based
      TCP/IP applications the following four lines in NET.CFG are enough:
          --- NET.CFG ---
          Link Support
            buffers 8 1600
          Link Driver 3C574
            Frame Ethernet_II
      Explanation of the parameters:
          link support
      The line "Link Support" configures the LSL. Options are: "buffers",
      "max boards", "max stacks" and "mempool". We only need to set:
          buffers 8 1600
      This determines the number and size of the receive buffers of the LSL.
      The default communication number for TCP/IP is 8. The author of ODIPKT,
      Dan Lanciani recommends to use a buffer size of 1600 bytes for ODIPKT.
      (see: http://groups.google.de/group/comp.protocols.tcp-ip/msg/
      b8ba79ab39cacc4f/)
          Link Driver 3C574
      The line "Link Driver" configures the MLID (the driver of your network
      card). First of all, the name of the driver is specified. Above you see
      the example of a 3Com 3C574 PC Card. Change this to the name of your
      network card.
      Then we configure the "frame" or "envelope type" (both declarations work
      and mean the same thing) used by this driver:
          Frame Ethernet_II
      It is possible to define more than one frame type here: We already heard
      that ODI is a multiprotocol driver, so the MLID is able to use more than
      one frame and protocol with the same hardware network board. For this
      purpose it defines logical boards for each defined frame. Possible
      frames are for instance "ETHERNET_II" (IP protocol), "ETHERNET_802.2"
      or "ETHERNET_802.3" (both IPX/SPX protocol).
      For the packet driver converter, that we want to start later, it is
      mandatory to define at least the Ethernet II frame here. You also have
      to inform ODIPKT in a command line parameter to use the board with the
      ETHERNET_II frame (see below).
      For a full documentation of the parameters in NET.CFG see the "NetWare
      Client for DOS and MS Windows Technical Reference"
      (see: http://www.docs.hp.com/en/J2771-90016/index.html).

#### [Main menu] [top] [Where to find] [How they work] [Converter] (Config) [Install]

## Installation

      After we have configured NET.CFG we may start the ODI drivers in
      AUTOEXEC.BAT at boot.
      The first thing we have to start is the Link Support Layer:
          LH C:\NETWORK\NWCLIENT\LSL.COM /C C:\NETWORK\NET\NET.CFG
      Please change the paths to the ones you use on your system. The "/C"
      option tells the LSL where to find NET.CFG. This option is only
      necessary, if NET.CFG is not in the same directory as LSL.COM.
      Now we start the MLID:
          LH C:\NETWORK\PCMCIA\3C574\ODI\3C574.COM
      As a last step we have to install the Packet Driver to ODI Converter.
      Here we can choose between ODIPKT or the more exotic PKT2ODI.
      Most people will use the free converter ODIPKT.COM by Dan Lanciani,
      which can be downloaded here: http://danlan.com/pdr_shim/odipkt/
      odipkt.zip. Extract the zip file and load ODIPKT.COM with a command
      like this in AUTOEXEC.BAT:
        LH C:\NETWORK\NWCLIENT\ODIPKT.COM 0 96
      The first number of the parameters above ("0") determines the board
      that uses the ETHERNET_II frame. The following example assumes you
      defined different frames (also known as "envelope types") in NET.CFG:
          --- NET.CFG ---
          Link Driver 3C574
            FRAME ETHERNET_II
            FRAME ETHERNET_802.2
            FRAME ETHERNET_802.3
            FRAME ETHERNET_SNAP
      Then you have to tell ODIPKT the index number of the logical board
      that supports the Ethernet II frame. Just count the frames in NET.CFG:
      Ethernet II is the first one, the frame 802.2 is the second, the frame
      802.3 is the third, snap is fourth.
      To make things a bit tricky, ODIPKT starts counting with "0" (like
      programmers do). That means, according to the example above:
          ODIPKT.COM 0 | board with ETHERNET_II
          ODIPKT.COM 1 | ETHERNET_802.2 (won't work)
          ODIPKT.COM 2 | ETHERNET_802.3 (won't work)
          ODIPKT.COM 3 | ETHERNET_SNAP (won't work)
      The only option that works for ODIPKT is the number that defines the
      logical board with the frame Ethernet II, which is "0" in our example.
      Now we look at the second parameter ("96") that we use to start ODIPKT.
      This parameter defines the software interrupt (vector) used by the
      driver. As we already heard when configuring a packet driver, the most
      frequently used packet driver software interrupt number is 0x60, which
      is the hexadecimal value 60 (the "0x" just tells us it is hex format).
      Unfortunately ODIPKT doesn't understand hex values, so you have to
      translate this parameter to a decimal number - which is 96.
      If you want to use other values and you are not used to hex, you may
      try a hex-dec calculator (see: http://www.langeneggers.ch/Nuetzliches/
      Hex_Dez.htm) or see the following list:
            0x60 = 96
            0x61 = 97
            0x62 = 98
             ...
            0x69 = 105
            0x6A = 106
             ...
            0x7D = 125
            0x7E = 126

      Example NET.CFG
        ; version 2.0
        ; max tasks = 60
        ; show dots = on
        link support
        buffers 8 1514
        ; mempool 4096
        ; THIS SECTION IS FOR CONFIGURATION OF LINKWATCH MANAGEABLE END NODES
        ;
        Protocol DME
        BIND #1
        ; replace with your specific information for LinkWatch
        USER_NAME "Your Name"
        NODE_NAME "Your Node Name"
        NODE_LOCATION "Your Node Location"
        ; set password according to your network administrator's instructions
        ; NODE_PASSWORD "ABCDEFGH"
        PHONE_NUMBER "Your Phone Number"
        NOTES "Miscellaneous text"
        NOTES "and more text"
        LINK DRIVER 3C574
        INT 10
        ; PORT 300
        NO_AMP
        FRAME ETHERNET_802.2
        FRAME ETHERNET_802.3
        ; PROTOCOL IPX 0 ETHERNET_802.3
        FRAME ETHERNET_II
        FRAME ETHERNET_SNAP
        Netware DOS Requester
        FIRST NETWORK DRIVE = F
        NETWARE PROTOCOL = NDS BIND

## Reboot

      After a reboot the packet driver is installed and ready. You may use
      an application to test if it works, for instance the command "ping"
      from the WATTCP package.
      Good luck!

      (Picture: boot messages)

#### [Main menu] [top] [Where to find] [How they work] [Converter] [Config] (Install)

      Copyright © 2007 Ulrich Hansen, Mainz (Germany), modified 2010
      by W.Spiegl.
      For more information see here.

      Permission is granted to copy, distribute and/or modify this document
      under the terms of the GNU Free Documentation License, Version 1.1 or
      any later version published by the Free Software Foundation.
      A copy of the license is included in the section entitled
      "GNU Free Documentation License"