DMUX Passthru

This is DMUX version of NDIS IM driver for Windows CE & it is based on original Passthru sample code shipped at public\COMMON\oak\drivers\netsamp\passthru. Windows CE does not have concept of DMUX IM driver like desktop OS (Windows XP & onwards) has. This DMUX IM driver can layer over any miniport driver which exports 802.3 based interface on its upper layer (except WiFi miniport driver). Also this DMUX IM driver can instantiate as many virtual network instances as one want. All this is registry configurable.
Design:
This DMUX IM driver
<1> exports "N" number of virtual instances for one real miniport driver instance.
<2> sets random/local mac address on those exported virtual instances.
<3> by default puts real miniport driver to PROMISCUOUS mode
<4> For send coming down from any virtual dmux instance, it passes to below real miniport instance.
<5> filters the received packets & pass the packets to appropriate DMUX virtual instance based on destination Mac address defined in the packet.
<6> by defaults indicates all broadcast & multicast packets to all dmux virtual instances
DMUX IM Files :
DMUXMini.dll
dmuxmini.bat
Ndisconfigx.exe (This is modified version of original ndisconfig.exe. The original ndisconfig uses 256 Wchar multiSzBuffer buffer which is not sufficient for 16 interfaces. This exe file is not shipped herewith but one can just modify ndisconfig.c under public\COMMON\oak\drivers\netsamp\ndisconfig & can generate the updated version of exe with larger multiSzBuffer size.)
How to use.
<1> Copy above files to release folder
<2> Run following commands in Platform Builder.
>run dmuxmini.bat
>s ndisconfig miniport add dmuxmini
This will show up 16 interfaces (DMUXMini\<original adapter instance>XX) where XX range from 0 to 16
<3> Use “ndisconfigx.exe” which will show the binding. The original ndisconfig.exe will not show adapters & binding because of buffer constrain.
How to configure:
Look in dmuxmini.bat batch file. It is self explanatory. Right now there is no control to have specific Mac addresses for DMUX virtual interfaces. These interfaces will have random, unicast (LSB bit 0) & local (next LSB bit 1) mac addresses. But one can control to which real adapter DMUXMINI should bind & how many virtual interfaces DMUXMINI should instantiate.
Known issues:
This version is tested on CEPC & Emulator using NE2000 (PCI,PCMCIA), E100BEX (PCI) & DC21x4 (on Emualtor) with 1,2,4,9 & 16 virtual interfaces.
<1> Not all the interfaces will be shown up in system tray in GUI on CE device, even though all the virtual interfaces are bound to TCP/IP & have got IP addresses from DHCP server.
Following are limitations of current version of DMUX IM.
<2> Power management events are not handled by this DMUXMINI version.
<3> DMUXMINI is tested when it has bound to only one adapter & has exported any number of virtual interfaces (1 to 16). Currently Max =16.
<5> When DMUXMINI is bound do not insert/remove or add/delete real adapter. One can play (bind/unbind etc.) with virtual interfaces without any problem.
Eg. If DMUXMINI is made to bind to NE2000 PCMCIA card do not remove NE2000 PCMCIA card. These things are not handled right now.
<6> DMUXMINI currently does not honor filter setting per virtual interface. But it will show all the packets up & thus rely on filtering done by NDIS & upper protocol layers.