Name and version:
* Now officially called 'WinDivert'
* Now officially working towards a version 1.0 release
New features:
* WinDivert now supports a packet-sniffing mode. This mode merely
copies packets, and does not drop the original.
* WinDivert now also supports a packet-dropping mode.
* WinDivert now supports filter priorities.
* WinDivert now supports a forwarded packet layer (WARNING: untested).
* WinDivert now supports get/set parameters such as packet queue length and
time.
* WinDivert now supports larger filters (but use at own risk).
* WinDivert now uninstalls the driver on program exit/library unload
* Different versions of WinDivert can co-exist on the same machine
(WARNING: untested, as there is currently only one version).
New License:
* WinDivert is now LGPL. This is less restrictive than the GPL so WinDivert
can be linked to by commercial software (under the terms of the LGPL
license).
Technical:
* Cleaner IOCTL interface.
* Cleaner driver implementation.
* Thread local events in WinDivert.dll
* Many minor tweaks and fixes.
includes making the driver handle I/O requests in parallel, and changing
the library such that it uses overlapped I/O. Overall the package is
now significantly faster.
- The divert driver now only adds WFP callouts when a filter is set,
instead of when a handle is created.
- The divert driver now attempts to avoid adding WFP callouts that are
superfluous with respect to the filter.
- The divert driver now explicitly deletes filters and callouts during
cleanup. This appears to resolve a bug where network connectivity is
sometimes lost.
- Added a new sample program: passthru.exe. This example doesn't do anything
interesting but is useful for speed testing.
- Rename build.sh to mingw-build.sh to avoid confusion.
context, resulting in an occasional BSOD.
- Fix bug where the driver rejects the "false" filter.
- Update documentation to reflect that the "false" filter is still useful
for packet injection.
- Make the pAddr arg for DivertRecv() optional
- Make the i386 user binaries compatible with an amd64 driver.
(useful for projects not yet ported to amd64)
data itself. This makes for a much cleaner interface.
sys/divert.c
dll/divert.c
include/*.h
DivertRecv and DivertSend now use IOCTLs instead of reads/writes.
The 'address' parameter is passed by pointer to the driver, which
writes directly to it (after sanity checks).
This means that the data buffer now only contains the packet, which
help to avoid some messy code.
examples/*/*.c
Update the examples to reflect the new API.
doc/divert.html
Update the documentation to reflect the new API.