Commit Graph
8 Commits
Author SHA1 Message Date
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 8a4c62d981 - Verify that injected packets have the correct length (after copying). 2013-11-30 12:37:08 +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 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 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 835d604d4e - Remove the PASSTHRU flag; The same result can be achieved with a "false"
filter.
2013-09-10 17:52:43 +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