Commit Graph
56 Commits
Author SHA1 Message Date
basil00 42bf883096 Update WinDivert documentation.
- Also partly modernize the html.
2019-02-17 09:22:08 +08:00
basil00 ed90600d1d Update WinDivert documentation. 2019-02-16 09:47:04 +08:00
basil00 805661d6f3 Update WinDivert documentation. 2019-02-15 08:48:14 +08:00
basil00 8601f07ce1 Update WinDivert documentation. 2019-02-14 09:16:41 +08:00
basil00 ea366e80c2 Update WinDivert documentation. 2019-02-13 09:06:07 +08:00
basil00 6a0dd00e39 Update WinDivert documentation. 2019-02-12 08:14:00 +08:00
basil00 1496a0fe06 Document WinDivert layers 2019-02-11 10:13:52 +08:00
basil00 5c9b473873 Document WinDivert filter language fields. 2019-01-29 08:36:45 +08:00
basil00 fa9229820c Document WinDivertHelperCompileFilter(). 2019-01-27 08:50:41 +08:00
basil00 74b806d042 Document WinDivertShutdown() 2019-01-25 10:06:10 +08:00
basil00 8ff3c86330 Version tweaks. 2018-11-15 08:24:46 +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 6ac22c1650 Retire MSVC-2012 and (non-driver) WDDK builds.
The new MINGW build should be compatible with all
major compilers, including Visual Studio 201X.
2018-07-02 19:23:49 +08:00
basil00 ae25f27469 Fix #131 2018-05-23 18:14:36 +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 af5cd69883 Document the 1753 error. 2017-11-27 06:45:18 +08:00
basil00 884622c5c7 Update documentation. 2017-11-18 15:38:15 +08:00
basil00 bbf6a34aa6 Add Loopback and Timestamp fields to addresses.
- Loopback=1 for loopback packets, 0 otherwise.
- Timestamp is the time when packet captured.
2017-11-05 12:12:19 +08:00
basil00 60c3a26e1c Documentation improvements. 2017-11-01 20:56:51 +08:00
basil00 4c4f586f4d Add WINDIVERT_FLAG_DEBUG for WinDivertOpen() 2017-10-31 10:53:06 +08:00
basil00 b2fd7eb891 Bump version to 1.4 2017-10-22 21:07:06 +08:00
basil00 bd4265897a Increase packet queue limits.
Queued packets use PagedPool, so increase limits:
- Queue length (min=16,max=16384,default=2048)
- Queue time (min=20,max=8000,default=1000ms)
2017-10-21 18:13:58 +08:00
clmul 751ed975e3 Fix documentation, the default packet queue length is 1024 2017-10-19 10:41:23 +08:00
basil00 910a2e3050 Add new WINDIVERT_PARAM_QUEUE_SIZE parameter.
Controls the number of bytes used by the packet queue.
2017-10-01 15:33:58 +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 7cfc3e2e72 Further integrate the streamdump sample.
Untested.
2016-01-19 10:57:47 +08:00
basil00 609ab63594 Add a NO_REPLACE for WinDivertHelperCalcChecksums
The WINDIVERT_HELPER_NO_REPLACE flag tells WinDivertHelperCalcChecksums not to
recalculate and replace non-zero checksum fields.  This is useful for
reconstructing the checksums for packets returned by WinDivertRecv(), where
all non-zero checksum fields are already valid.  This allows WinDivert1.2
to achieve similar efficiency as WinDivert1.1, where checksums were calculated
by the driver.

Note that for modified packets, the WINDIVERT_HELPER_NO_REPLACE flag should
not be used, as all checksums need to be recalculated from scratch anyway.
2015-07-25 13:24:28 +08:00
basil00 82fb0e704c Update documentation.
Add notes about zero-checksums and known issues.
2015-07-25 12:40:03 +08:00
basil00 7666386af2 Update the WinDivert documentation for version 1.2 2015-07-18 10:46:20 +08:00
basil00 90da7a92c7 - Fix documentation; ipv6 extension headers are now supported. 2014-11-29 13:22:52 +08:00
basil00 232459cc11 - Document the WinDivertHelperParseIPvXAddress() byte/word orderings. 2014-11-18 00:02:47 +08:00
basil00 08fef993ba - Update documentation to reflect the new installation instructions. 2013-12-12 22:55:19 +08:00
basil00 f9f11c0e23 - Documentation tweaks and improvements. 2013-11-27 23:49:00 +08:00
basil00 8ecfc1e52b - Add documentation for WinDivertRecvEx() and WinDivertSendEx(). 2013-10-05 13:03:33 +08:00
basil00 fd9d8eb0c3 - Documentation tweaks, including comments in (1275) errors. 2013-09-24 14:15:28 +08:00
basil00 835d604d4e - Remove the PASSTHRU flag; The same result can be achieved with a "false"
filter.
2013-09-10 17:52:43 +08:00
basil00 bbd3b0e9e9 - Update documentation to version 1.1 API 2013-08-16 22:50:00 +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 e0e1feabad - Update support to Visual Studio 2012. 2013-06-25 23:22:41 +08:00
basil00 3d7d3e4fd4 - Documentation improvements. 2013-06-20 18:31:32 +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 6ef0028edd - Fix stray `;' in code sample (issue #5). 2013-05-02 11:09:00 +08:00
basil00 3d881423d6 - Replace (110) errors with more meaningful error codes.
- Add two new helper API functions: DivertHelperParseIPv?Addr(..)
- Document these new features.
2013-04-06 23:41:00 +08:00
basil00 898ea780e2 - Fix typo 2012-10-24 21:58:43 +08:00
basil00 5ce2f868d6 - Expand documentation regarding test signing the WinDivert driver.
(this was causing some confusion).
2012-06-01 23:14:46 +08:00
basil00 7cb25b8a1e - Added build-system documentation 2012-03-26 22:31:21 +08:00
basil00 13b2ab4418 ***MAJOR UPDATE***
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.
2012-02-21 23:18:45 +08:00
basil00 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.
2011-11-08 23:54:01 +08:00
basil00 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.
2011-10-19 20:53:49 +08:00