Commit Graph
76 Commits
Author SHA1 Message Date
basil00 6ac77a644b - Fix some bugs introduced by recent commits. 2013-12-13 17:09:37 +08:00
basil00 08fef993ba - Update documentation to reflect the new installation instructions. 2013-12-12 22:55:19 +08:00
basil00 f21217fdb1 - Slim down the MINGW version of WinDivert.dll (>60KB -> ~15KB)
- Remove some WinDivert.dll dependencies.
2013-12-12 17:45:48 +08:00
basil00 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.
2013-12-10 22:48:11 +08:00
basil00 e27e13cdf2 - Fix build type glitch for x86. v1.1.1 2013-12-03 11:57:37 +08:00
basil00 3f7e289c95 - Update changelog for version 1.1.1 2013-12-03 08:53:35 +08:00
basil00 7f3bbe94ee - Copy most of the packet after error checking. 2013-12-03 08:43:05 +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 8878d79300 - Fix Issue #7 2013-11-30 12:56:36 +08:00
basil00 8a4c62d981 - Verify that injected packets have the correct length (after copying). 2013-11-30 12:37:08 +08:00
basil00 f9f11c0e23 - Documentation tweaks and improvements. 2013-11-27 23:49:00 +08:00
basil00 03fbfa74d6 - Increase the maximum filter length to 128. v1.1.0-rc 2013-11-02 11:43:21 +08:00
basil00 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.
2013-10-07 22:57:16 +08:00
basil00 dce8ebd459 - If driver installation fails, then also attempt to delete the service. This
should fix some confusing errors caused by a zombie WinDivert service.
2013-10-06 15:15:59 +08:00
basil00 8ecfc1e52b - Add documentation for WinDivertRecvEx() and WinDivertSendEx(). 2013-10-05 13:03:33 +08:00
basil00 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.
2013-09-28 23:25:51 +08:00
basil00 63b72288d5 - Fix function names in README. 2013-09-24 14:29:40 +08:00
basil00 fd9d8eb0c3 - Documentation tweaks, including comments in (1275) errors. 2013-09-24 14:15:28 +08:00
basil00 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.
2013-09-21 10:43:42 +08:00
basil00 0b15b26d45 - (Missing from last commit) remove the PASSTHRU flag from windivert_device.h 2013-09-10 17:58:08 +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 09b7cd45a2 - Add support for the legacy WinDivert API. 2013-07-26 18:01:49 +08:00
basil00 dc149f281b - Fix README out-of-date reference to VS2010. 2013-07-17 11:55:36 +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 7f70f9a575 - Fix FwpsInjectionHandleCreate flags for NETWORK and FORWARD layers.
- Strip debug symbols from WinDivert.dll for MinGW builds.
2013-06-26 13:44:56 +08:00
basil00 e0e1feabad - Update support to Visual Studio 2012. 2013-06-25 23:22:41 +08:00
basil00 5481e6edd5 - New version 1.0.5 2013-06-25 19:58:13 +08:00
basil00 3d7d3e4fd4 - Documentation improvements. 2013-06-20 18:31:32 +08:00
basil00 ed56b1871b - Change filter action type from UNKNOWN to TERMINATING. 2013-06-13 13:02:34 +08:00
basil00 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.
2013-06-13 12:57:59 +08:00
basil00 9687d945e6 - Strip MinGW .exe files. 2013-06-04 00:01:29 +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 7636b0acc2 - Fix MinGW wcscpy_s() workaround. 2013-04-13 14:46:45 +08:00
basil00 59ef023fb1 - New version 1.0.3 2013-04-07 17:53:29 +08:00
basil00 6d8d0b3134 - Improved version stamping. 2013-04-07 11:27:21 +08:00
basil00 3b486d49af - Code clean up [credit: GliderPro] 2013-04-07 10:42:08 +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 e34a69abc6 Merge branch 'master' of github.com:basil00/Divert 2013-04-02 12:21:31 +08:00
basil00 8cc8299f26 - Fix mis-placed decli bug. [credit GliderPro] 2013-04-02 12:14:45 +08:00
basil00 6b6901278e Merge pull request #3 from azerton/master
Compiling in VS2012
2013-03-07 19:20:58 -08:00
Daan Raman 0266a1048f Type error compiling examples on VS2012
Casting the divert layer argument for the DivertOpen function resolves
a type error in VS2012.
2013-03-07 11:40:13 +01:00
basil00 d9e1d687cc - Fix the implementation of DivertParseIPv6Address() 2013-01-31 23:48:19 +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 700f91e7fb - Remove copyright notice (not really code). 2012-10-28 02:22:41 +08:00
basil00 091e3025ce - Change WinDivert device permission: Administrator now required for any
device access.
2012-10-28 02:21:10 +08:00
basil00 a0e50dfd79 - add a VERSION file 2012-10-26 14:12:34 +08:00
basil00 3a59af9f25 - Ignore ERROR_INVALID_PARAMETER from pfnWdfPostDeviceInstall() as these
errors appear to be benign.
2012-10-24 22:46:13 +08:00
basil00 898ea780e2 - Fix typo 2012-10-24 21:58:43 +08:00