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.