NDIS3PKT (c) Copyright Daniel D. Lanciani 1994
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.  It allows packet
driver applications to be used in a WfWG 3.11 (and, theoretically,
Chicago) 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.  In addition, ndis3pkt is willing to deliver
the same packet type (and even the same packet) to multiple clients
in multiple VMs.  An optional tcp multiplexor allow several tcp stacks
to exist on the same IP address under certain circumstances.

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.


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.)

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 false).

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

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.


Please send bug reports to ddl@harvard.edu or

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