Open SizzlingCalamari opened 2 years ago
To be clear, WinDivertSendEx is not returning false, it just silently fails.
If addr->IPChecksum
is zero, then it should still be possible to inject the packet with WinDivertSendEx
. In this case, the driver is supposed to call WinDivertHelperCalcChecksums
internally.
So I am not sure why it would not be working. I will try to do some testing and get back on this.
When passthru is running, WinDivertRecvEx is showing packets from the client to the server as not having valid ip checksums (addr->IPChecksum is 0). A missing ip checksum makes sense because checksum offload is enabled, but causes passthru to fail because WinDivertSendEx expects valid checksums from the addr.
I'm not sure where afterwards in the chain the failure happens, but adding a call to WinDivertHelperCalcChecksums before WinDivertSendEx allows passthru to work in my case.
Is there something here that needs fixing in WinDivertSendEx? or is it the sample code that's just incorrect?