diff options
author | 2021-09-12 12:21:43 +0000 | |
---|---|---|
committer | 2021-09-12 21:18:07 +0000 | |
commit | 2cefdb4be20000f8b3c33eab7a71f7345496d744 (patch) | |
tree | 49d989231c4c86d0b40af89c43de3533bd665c15 | |
parent | driver: socket: use IP_OPTIONS for cmsg hack (diff) | |
download | wireguard-nt-2cefdb4be20000f8b3c33eab7a71f7345496d744.tar.xz wireguard-nt-2cefdb4be20000f8b3c33eab7a71f7345496d744.zip |
TODO: bring up to speed
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | TODO.md | 34 |
2 files changed, 19 insertions, 19 deletions
@@ -7,10 +7,6 @@ WireGuardNT is an implementation of WireGuard, for the NT Kernel as used in Wind **If you've come here looking to run [WireGuard on Windows](https://git.zx2c4.com/wireguard-windows/about/), you're in the wrong place. Instead, head on over to the [WireGuard Download Page](https://www.wireguard.com/install/) to download the WireGuard application.** Alternatively, if you've come here looking to embed WireGuard into your Windows program, **you are still in the wrong place**. Instead, head on over to the [embeddable DLL service project](https://git.zx2c4.com/wireguard-windows/about/embeddable-dll-service/README.md), to get everything you need to bake WireGuard into your Windows programs. These projects use (or will eventually use) WireGuardNT inside. -#### Experimental, unfinished, work in progress - -This repository is under active development, is not yet complete, and is not *yet* properly optimized for high performance. Do not use it! In addition to the usual concerns about it *not yet being secure*, it's also not even *finished*. So if you do attempt to drive this off the lot, realize that a wheel or two are likely missing, in addition to, perhaps, the entire crankshaft, and the radio dials haven't yet been painted and the seatbelts are made of Fruit by the Foot. - ## Usage #### Download @@ -2,7 +2,12 @@ ## Driver -### Performance +### Implement ECN support via the `IP_ECN` cmsg + +### Rework IOCTL to accept requests over 4gigs +- The current `ULONG` is too small +- We should switch to using `METHOD_NEITHER` +- One param is a pointer to a ULONG64 length, the other the actual buffer ### Rearrange and regroup `WG_DEVICE` - Most commonly used members should be at the top @@ -15,23 +20,22 @@ - For the MuAcquireReleaseSharedExclusive functions, make SAL detect lock imbalance. e.g. a AcquireExclusive followed by a ReleaseShared. -### Remove `_NO_CRT_STDIO_INLINE` once WDK is fixed +## Bugs with no solution -### Make SDV work with full settings +### Forwarding/WeakHostSend breaks `IP_PKTINFO` +When forwarding or weakhostsend are enabled -- which can happen via Hotspot +mode -- the routing logic ignores `IP_PKTINFO`. This seems like a bug, but one +unlikely to be fixed. We'll need a opt-in `setsockopt` to make `IP_PKTINFO` +choose the right behavior in this case. -### Automate CodeQL -Reference: https://docs.microsoft.com/sl-si/windows-hardware/drivers/devtest/static-tools-and-codeql -- Download CodeQL and unzip => .deps -- git clone --recurse https://github.com/microsoft/Windows-Driver-Developer-Supplemental-Tools.git => .deps -- rd /s codeqldb -- codeql.cmd database create -l=cpp -s=driver -c "msbuild driver.vcxproj /t:Rebuild" codeqldb -j 0 -- codeql.cmd database analyze codeqldb windows_driver_recommended.qls --search-path=..\Windows-Driver-Developer-Supplemental-Tools --format=sarifv2.1.0 --output=driver\wireguard.sarif -j 0 +## Bug workarounds -### WHQL +### Remove `_NO_CRT_STDIO_INLINE` once WDK is fixed ### Remove MTU polling -- When NotifyIpInterfaceChange is fixed for MTU changes, adjust the dwBuildNumber - check for the workaround thread polling. +When NotifyIpInterfaceChange is fixed for MTU changes, adjust the dwBuildNumber +check for the workaround thread polling. -#### DVL and Static Tools Logo Test -- Recent (E)WDK DVL always includes CodeQL test results. Even if "NORUN". WHQL 1809 does not support CodeQL test results in DVL and fails Static Tools Logo Test. Those two are in conflict. Either downgrade (E)WDK, or upgrade WHQL rig. +### Remove `IP_OPTIONS`/`IPV6_RTHDR` hack +Currently we tag on an empty options cmsg to work around a bug in recent +Windows builds, where `IP_PKTINFO` gets stripped if it's passed alone. |