0a70d4120d
- Remove duplicate code from last commit.
basil002014-11-13 18:52:16 +08:00
4edd82f55f
- Ignore the checksum info for loopback packets. This info seems to be unreliable for whatever reason, so better to ignore until a better solution is found.
basil002014-11-13 18:47:46 +08:00
7952724127
- Driver now calculates checksums for IPv6 packets (fix issue #28). - Bump version to 1.1.7
basil002014-11-09 12:44:21 +08:00
d46a902c90
- Fix issue #29 found by MarlosChida: the IPv6 pseudo-header definition was incorrect leading to invalid checksums.
basil002014-11-08 15:15:54 +08:00
9a13606030
- Insert WinDivert as the highest weighted sublayer.
basil002014-05-19 19:18:10 +08:00
98c4a51fad
- Fix issue #18 that causes a BSOD when a NULL pointer is passed as an address parameter to either WinDivertRecv or WinDivertSend. - Use better NT_STATUS codes for some errors. - Bump the version number to WinDivert 1.1.4
v1.1.4
basil002014-04-02 19:40:54 +08:00
874d147b9b
- Update copyright year. - Use exact version number in driver binary.
v1.1.3
basil002014-03-24 18:15:05 +08:00
d5d8e163e3
- Towards version 1.1.3
basil002014-03-24 18:07:00 +08:00
4b708f0c16
- Wrap the sublayer/filter/callout setup in transactions. This appears to make it less likely to break networking if something goes wrong. It may also solve issue #15. - Fix bug in last commit.
basil002014-03-23 22:33:46 +08:00
7f0e697092
- Fix bug (see issue #14) where some outbound TCP packets were never handled by the classify function and silently dropped. This can degrade outbound speed significantly, as it forces the Windows TCP/IP stack to re-send the missing data. Thanks to GhalemB who found the bug & fix.
basil002014-03-23 11:18:05 +08:00
33f6bec1e5
- Refactor driver unload functions. - Packet direction fix for netfilter example. - Bump version to 1.1.2-rc.
v1.1.2-rc
basil002013-12-25 11:28:01 +08:00
57934712c6
- Refactor the WFP interface: * WinDivert sublayers are created and inserted when the driver is loaded. * All WinDivert callouts are installed at the same sublayer. - Clean-up the implementation of priorities. - Re-introduce deep copying for SNIFF mode. This avoids referencing the sniffed packets. - Fix-up the netfilter example: * Don't send RSTs to RST/FINs, this can start a RST war. * Don't inject ICMP outbound - this may not be a problem despite 1233 errors.
basil002013-12-23 11:03:02 +08:00
4f81c315d6
- Use FwpsAllocateCloneNetBufferList0 for the packet queue, as opposed to copying the data.
basil002013-12-18 16:28:58 +08:00
76459ac3fe
- Use WDF work items instead of threads. Also use multiple work items so that read_service() can be run in parallel.
basil002013-12-18 09:54:01 +08:00
6ac77a644b
- Fix some bugs introduced by recent commits.
basil002013-12-13 17:09:37 +08:00
08fef993ba
- Update documentation to reflect the new installation instructions.
basil002013-12-12 22:55:19 +08:00
f21217fdb1
- Slim down the MINGW version of WinDivert.dll (>60KB -> ~15KB) - Remove some WinDivert.dll dependencies.
basil002013-12-12 17:45:48 +08:00
8c2bb01565
- Several changes to simplify the WinDivert Driver installation: 1) Remove the dependency on the WdfCoInstaller*.dll file. This file appears to be unnecessary for Windows 7 and up, and for patched Vista+2008. 2) Remove the WinDivert.inf file (only used by the co-installer). 3) 32/64-bit versions of the driver are now explicitly named, meaning that the two can co-exist in the same directory. 4) The 32-bit WinDivert.dll can now automatically load the 64-bit driver on 64-bit Windows. This means it is possible to write 32-bit WinDivert applications that automatically work on 64-bit windows. 5) WinDivert.dll now schedules the WinDivert service to be deleted right away. This should fix some cases where the service is never deleted, even during reboot. 6) Updated build scripts to reflect the changes.
basil002013-12-10 22:48:11 +08:00
3f7e289c95
- Update changelog for version 1.1.1
basil002013-12-03 08:53:35 +08:00
7f3bbe94ee
- Copy most of the packet after error checking.
basil002013-12-03 08:43:05 +08:00
8c48b0f1dd
- Fix issue #8 by replacing incorrect function call NdisFreeNetBufferPool() with NdisAllocateNetBufferListPool(). - Removed some dead code. - Cleanup handles if DriverEntry() fails. - Bump version.
basil002013-12-03 08:11:19 +08:00
4b7e6a08bb
- Simplify the WinDivert callout code: no longer handles multiple NET_BUFFERs in a single NET_BUFFER_LIST. Apparently this should only ever occur in the FORWARD layer in certain circumstances, and even then each fragment should be indicated individually anyway. This change removes a lot of needless complexity.
basil002013-10-07 22:57:16 +08:00
dce8ebd459
- If driver installation fails, then also attempt to delete the service. This should fix some confusing errors caused by a zombie WinDivert service.
basil002013-10-06 15:15:59 +08:00
8ecfc1e52b
- Add documentation for WinDivertRecvEx() and WinDivertSendEx().
basil002013-10-05 13:03:33 +08:00
3eed5aca39
- Writes (via WinDivertSend()) are now copied before being injected. This ensures that the user program does not clobber the buffer before the injection is complete. - Update the changelog.
basil002013-09-28 23:25:51 +08:00
63b72288d5
- Fix function names in README.
basil002013-09-24 14:29:40 +08:00
fd9d8eb0c3
- Documentation tweaks, including comments in (1275) errors.
basil002013-09-24 14:15:28 +08:00
a59c70ae0a
- WinDivert now queues copies of packets, rather than simply referencing the original packet. The former turns out to be problematic, since there is no guarantee that something else (e.g. another callout driver) modifies/overwrites the packet data whilst it is in the queue. Copying the data is not ideal either, but seems to be the only way to ensure the packet is not changed later.
basil002013-09-21 10:43:42 +08:00
0b15b26d45
- (Missing from last commit) remove the PASSTHRU flag from windivert_device.h
basil002013-09-10 17:58:08 +08:00
835d604d4e
- Remove the PASSTHRU flag; The same result can be achieved with a "false" filter.
basil002013-09-10 17:52:43 +08:00
bbd3b0e9e9
- Update documentation to version 1.1 API
basil002013-08-16 22:50:00 +08:00
09b7cd45a2
- Add support for the legacy WinDivert API.
basil002013-07-26 18:01:49 +08:00
38f1f3a16d
- Towards WinDivert 1.1: * Re-brand "DIVERT" to "WINDIVERT" throughout the code-base. * New flags: > WINDIVERT_FLAG_PASSTHRU: Do not drop nor capture packets. Useful for injection-only handles. > WINDIVERT_FLAG_NO_CHECKSUM: Do not guarantee that diverted packets have a correct checksum. NOTE: Not yet tested! * New default values and limits for various WinDivert parameters, including WINDIVERT_PARAM_QUEUE_LEN, WINDIVERT_PARAM_QUEUE_TIME, and the maximum filter length. * New extended WinDivert functions that support asynchronous I/O: > WinDivertRecvEx(..) > WinDivertSendEx(..) NOTE: Not yet tested! * The WinDivert driver now services reads (receives) out-of-band. The motivation is because WFP callouts are run at DISPATCH_LEVEL, so we should not be doing expensive work in the ClassifyFn. This is also the same reason why the filter length has been restricted.
basil002013-06-30 15:58:21 +08:00
7f70f9a575
- Fix FwpsInjectionHandleCreate flags for NETWORK and FORWARD layers. - Strip debug symbols from WinDivert.dll for MinGW builds.
basil002013-06-26 13:44:56 +08:00
e0e1feabad
- Update support to Visual Studio 2012.
basil002013-06-25 23:22:41 +08:00
ed56b1871b
- Change filter action type from UNKNOWN to TERMINATING.
basil002013-06-13 13:02:34 +08:00
437d64d9e3
- Fix issue #6: * Use type 0 for FwpsInjectionHandleCreate0 for the FORWARD layer. * Use FWPS_FIELD_IPFORWARD_V{4|6}_DESTINATION_INTERFACE_INDEX to get addr->IfIdx * Replace FWP_ACTION_CONTINUE with FWP_ACTION_PERMIT.
basil002013-06-13 12:57:59 +08:00
6d8d0b3134
- Improved version stamping.
basil002013-04-07 11:27:21 +08:00
3b486d49af
- Code clean up [credit: GliderPro]
basil002013-04-07 10:42:08 +08:00
3d881423d6
- Replace (110) errors with more meaningful error codes. - Add two new helper API functions: DivertHelperParseIPv?Addr(..) - Document these new features.
basil002013-04-06 23:41:00 +08:00
e34a69abc6
Merge branch 'master' of github.com:basil00/Divert
basil002013-04-02 12:21:31 +08:00
6b6901278e
Merge pull request #3 from azerton/master
basil002013-03-07 19:20:58 -08:00
0266a1048f
Type error compiling examples on VS2012
Daan Raman2013-03-07 11:40:13 +01:00
d9e1d687cc
- Fix the implementation of DivertParseIPv6Address()
basil002013-01-31 23:48:19 +08:00
89bf2fb622
- New VERSION 1.0.2 - Add a CHANGELOG - Add note to webfilter.c - CHANGELOG and VERSION now included in release packages.
basil002012-12-25 18:26:23 +08:00
934019aec5
- In divert_filter_compile(), do not use the stack for filter0; instead allocate from the heap. Stacks are small (12Kb on x86).
basil002012-10-24 21:30:27 +08:00
5ce2f868d6
- Expand documentation regarding test signing the WinDivert driver. (this was causing some confusion).
basil002012-06-01 23:14:46 +08:00
498fbaab98
- MSVC build system now supports x64 - passthru.c now compiles on all 3 compilers.
basil002012-03-31 18:32:01 +08:00
53b45c4e8c
- Complete build-system revamp. * Updated sources files to target install\WDDK * Remove wdfinstaller.h dependency from dll/divert.dll * Fix passthru error in newer compilers.
basil002012-03-27 17:39:46 +08:00
9b132946de
- Add WDDK build script. - Add documentation for new build system.
basil002012-03-26 22:28:48 +08:00
6dfed99c28
Build system revamp: - VS2010 support added via msvc-build.bat and *.vcxproj files - MinGW now also builds example programs - Documentation and examples are now included in the binary packages
basil002012-03-26 21:55:55 +08:00
f9b1619adb
- Fix bad priority in the webfilter sample. - Minor comments tweaks.
basil002012-02-22 11:00:05 +08:00
a205259bec
- Divert driver and library now fully support multi-threaded code. This 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.
basil002011-11-08 23:54:01 +08:00
5dce077e86
- Fix bug where WdfRequestProbeAndLockUserBufferFor* was not in the caller 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.
basil002011-10-19 20:53:49 +08:00
f1b7ead828
The divert.dll library can now be build with MinGW Linux cross-compilation.
basil002011-10-15 17:40:18 +08:00
8906eaa02c
- Move some mis-placed text
basil002011-08-23 23:37:41 +08:00
0ff63cda99
- Make the package compile for i386 - 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)
basil002011-08-23 22:18:02 +08:00
ee386df032
Figured out a way to split the "address" part of the buffer from the packet data itself. This makes for a much cleaner interface.
basil002011-08-21 17:59:13 +08:00