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