NDIS3PKT (c) Copyright Daniel D. Lanciani 1994-1996
All rights reserved.

NDIS3PKT is licensed free of charge for personal and internal
business use only.  NDIS3PKT may not be distributed for profit,
nor may it be included in products or otherwise distributed by
commercial entities to their clients or customers without the
prior written permission of the author.

TO THE EXTENT ALLOWED BY APPLICABLE LAW, NDIS3PKT IS PROVIDED
"AS IS", WITH NO EXPRESS OR IMPLIED WARRANTY, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL THE AUTHOR BE
LIABLE FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
USE NDIS3PKT EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY
OF SUCH DAMAGES.

These copyright, license, and disclaimer notices must be included
with all copies of NDIS3PKT.


Ndis3pkt.386 is a Windows VxD (Virtual Device) which provides a packet
driver interface on top of NDIS version 3.0 or 3.1.  It allows packet
driver applications to be used under WfWG 3.11 and Windows95 without
loading any real-mode software components.  Ndis3pkt performs all the
VM (virtual machine) switching required to insure that the correct
application receives packet upcalls, i.e., it includes the functionality
of winpkt.  (The WINPKT signature is also provided for applications
which check specifically.)  In addition, ndis3pkt is willing to deliver
the same packet type (and even the same packet) to multiple clients
in multiple VMs.

A tcp multiplexor option allows several packet driver tcp stacks to exist
on the same IP address under most conditions.  Note that it does NOT allow
MSTCP to coexist with one or more packet driver tcp stacks on the same IP
address as the MSTCP stack.  If you want to run MSTCP at the same time as
packet driver tcp stacks you must allocate a separate IP address for MSTCP.
(The packet driver tcp stacks can all share one other IP address.)

Ndis3pkt attempts to minimize the load on Windows by keeping at most
a single VM callback pending at any time.  This implies that a stalled
VM for which a callback is pending may prevent packet reception.  The
driver tries to avoid such a situation by refraining from delivering
packets to applications in VMs which are suspended; however, it may be
possible to fool the code by suspending a VM at the wrong moment.  In
such a case, resuming the VM in question will restart packet reception.


There are two ways to install ndis3pkt.  Manual installation is possible
with WfWG 3.11 and Windows95.  Plug-and-Play installation is possible
only with Windows95.


Manual Installation:

First, be certain that NDIS3 is loaded and running.

In system.ini, load ndis3pkt.386 from the [386Enh] section:

device=ndis3pkt.386

Add a new section to system.ini:

[ndis3pkt]
netcard0=ms$elnkii

where ms$elnkii should be replaced with the name of your local network
adapter card.  (A good place to find this name is the BINDINGS= line
of the [NETBEUI] section of the protocol.ini file--assuming netbeui is
installed.)  Windows95 generally uses simple numberic names for NDIS3
even if symbolic names are used in protocol.ini:

netcard0=0000

You can also specify the null string:

netcard0=

This reserves the packet driver interrupt slot for the specified card but
does not bind to the card at startup.  Late binding is used to support
Plug-and-Play under Windows95 and will not work without the Plug-and-Play
installation described below.

Additional options for [ndis3pkt] section (none required):

buffers=#
Allocate # buffers for packets (max 50, min 2, default 10).

v86stacksize=#
Set size of stack used on packet driver upcall (max 8192, min 64, default 128).

rif0=#
Set first default RIF byte for Ethernet over Token Ring (default 0xc2).

rif1=#
Set second default RIF byte for Ethernet over Token Ring (default 0x20).

alwayssched=true|false
Force schedule (not call) of initial VM on packet receive (default true).

tcpmux=true|false
Enable tcp multiplexor (default false).

ignorelocalbroadcast=true|false
Ignore broadcast packets that originate in the local machine (default true).

intvec0=#
Specify packet service interrupt (default 0x69).

net80230=true|false
Force 802.3 framing and packet class 11 (default false).  IT IS
EXTREMELY UNLIKELY THAT YOU WANT TO USE THIS OPTION.

fakeether0=true|false
Pretend to be an Ethernet device even on Token Ring (default false).

(It is possible to support more than one network card using additional
keys, e.g., netcard1=, intvec1=, net80231=, fakeether1=, etc.  The
default interrupt vectors continue from 0x6a.)

No further configuration should be necessary.  Once the driver is
loaded, packet driver applications should be usable from DOS boxes
and the system VM.


Plug-and-Play Installation (Windows95 only):

Place the ndis3pkt.386 and ndis3pkt.inf files in a directory or on a
floppy disk.  From the network control panel, select add-protocol and
indicate that you have a driver disk (the disk/directory with the
ndis3pkt files).  The network device installer should:

-Add necessary registry entries
-Copy ndis3pkt files to the Windows directories
-Add an [ndis3pkt] section to system.ini with a netcard0= line

If you have multiple network interface cards, be sure to examine their
bindings under ``properties'' to be sure only the one you want is attached
to ndis3pkt.

When Windows is restarted, the packet driver interface should be available.
The name of the network card is supplied by the configuration manager and
there is no need to edit the netcard0= line in system.ini.  You can, however,
add any of the other options described above to the [ndis3pkt] section.


Please send bug reports to ddl@harvard.edu or

Dan Lanciani
185 Atlantic Road
Gloucester, MA 01930
(508) 283-4974
