Commit Graph
31 Commits
Author SHA1 Message Date
basil00 1789526ecf Bump version to 2.2.2 & other fixups 2022-09-17 10:32:57 +08:00
basil00 65bb889c79 Bump version and copyright years 2022-07-30 11:34:25 +08:00
basil00 317e6f1099 Implement new packet parser(s) for WinDivert.
The new parser should better handle fragments
as well as be consistent with the kernel-mode
parser.  The new parser can also handle truncated
packets.
2019-08-12 07:50:49 +08:00
basil00 194d9afa1e Towards WinDivert version 2.1 release.
- inbounds/outbound now work for SOCKET layer.
- passthru.exe now uses MTU_MAX to prevent 122
  errors.
- Further header parsing code hardening.
- Fix bug where Reserved2 was not zeroed.
2019-08-04 08:11:43 +08:00
basil00 6eb82d08e0 Fix WinDivert 2.0 driver bugs.
- BSOD for incomplete transport headers (#202).
- Fix enforcement of wrong MTU.
- Fix missing endpoint handles for IPV6 flow
  layer.
2019-07-31 08:46:01 +08:00
basil00 02541ce1da WinDivert 2.0.1-rc bugfix release. 2019-07-06 08:23:06 +08:00
basil00 81ce9b7f87 Build script fixes. 2019-03-05 08:46:14 +08:00
basil00 6250568974 Add a new FLOW layer into WinDivert.
Adds a new WINDIVERT_LAYER_FLOW layer that can:
- Track when flows are established
- Track when existing flows are deleted
2018-09-30 09:07:16 +08:00
basil00 e82552153b Optimize pseudo checksum "calculation"
Since pseudo checksums can now be arbitrary
values, the WinDivertHelperCalcChecksums function
no longer attempts to calculate the pseudo-
header checksum.
2018-07-19 09:16:15 +08:00
basil00 061535f7a3 Remove the WinDivert.dll dependency on MSVCRT*.dll
The MSVCRT*.dll dependency has been removed by:
(1) using Win32 API equivalents where possible,
and (2) re-implementing some basic C runtime
functions.  This prevents multiple MSVCRTs from
being loaded at runtime (if the application uses
a different version than the DLL).  The new
WinDivert.dll only depends on KERNEL32.dll and
ADVAPI32.dll.

Furthermore, the MINGW build has been extended
to generate a WinDivert.lib import library file.
This means that the MINGW DLL can now be used
directly by Visual Studio (any version).
2018-07-01 15:06:35 +08:00
basil00 4ba359c86f Add workaround for #134
For some reason pseudo checksums do not work on
some systems.  The workaround is to modify
WinDivertSend() so that it calculates the full
checksums before forwarding the packet to the
driver.
2018-06-13 17:35:59 +08:00
basil00 1543e958e6 Dual-license WinDivert under the LGPLv3 and GPLv2.
This allows projects that are strictly "GPLv2
only" to use WinDivert without licensing issues.
See the FSF's compatibility matrix here:
https://www.gnu.org/licenses/gpl-faq.en.html

This change does not affect existing projects
that can continue to use the LGPLv3 as before.

Also, bump the WinDivert version to 1.4.1.
2018-04-04 18:41:45 +08:00
basil00 fb68612176 Cleanup protocol header definitions.
Now use a single version.
Also prepare for 1.4.0-rc release.
2017-11-21 09:16:06 +08:00
basil00 b2fd7eb891 Bump version to 1.4 2017-10-22 21:07:06 +08:00
basil00 7b7d92cd26 Bump version to WinDivert 1.3.0
This prevents the old 1.2 driver from being used by new 1.3 software.

Also, clean up the driver code.
2017-09-24 15:48:38 +08:00
basil00 c13a27bb4f Update CHANGELOG and VERSION 2017-09-23 16:54:58 +08:00
basil00 bac03085ee Bump version to 1.2.1 2016-01-14 18:36:49 +08:00
basil00 fdd5825f5d Bump version to WinDivert 1.2
Bump version and change magic numbers to make the driver incompatible with
older versions.  Also cleanup some driver checksum code missed by previous
commit.
2015-07-17 18:24:30 +08:00
basil00 7952724127 - Driver now calculates checksums for IPv6 packets (fix issue #28).
- Bump version to 1.1.7
2014-11-09 12:44:21 +08:00
basil00 50aecbda75 - Towards version 1.1.6 2014-09-05 12:36:55 +08:00
basil00 5e706931f0 - New version 1.1.5 2014-05-25 11:54:13 +08:00
basil00 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
2014-04-02 19:40:54 +08:00
basil00 d5d8e163e3 - Towards version 1.1.3 2014-03-24 18:07:00 +08:00
basil00 33f6bec1e5 - Refactor driver unload functions.
- Packet direction fix for netfilter example.
- Bump version to 1.1.2-rc.
2013-12-25 11:28:01 +08:00
basil00 8c48b0f1dd - Fix issue #8 by replacing incorrect function call NdisFreeNetBufferPool()
with NdisAllocateNetBufferListPool().
- Removed some dead code.
- Cleanup handles if DriverEntry() fails.
- Bump version.
2013-12-03 08:11:19 +08:00
basil00 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.
2013-06-30 15:58:21 +08:00
basil00 5481e6edd5 - New version 1.0.5 2013-06-25 19:58:13 +08:00
basil00 eb667e4c32 - New version 1.0.4
- Documentation tweaks
- Use a newer version of MinGW
- Use signed driver in release.
2013-06-03 18:32:30 +08:00
basil00 59ef023fb1 - New version 1.0.3 2013-04-07 17:53:29 +08:00
basil00 89bf2fb622 - New VERSION 1.0.2
- Add a CHANGELOG
- Add note to webfilter.c
- CHANGELOG and VERSION now included in release packages.
2012-12-25 18:26:23 +08:00
basil00 a0e50dfd79 - add a VERSION file 2012-10-26 14:12:34 +08:00