blob: 35ec3892371818cb3d3f5e6547bc251bfbfe3288 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# TODO List
## Driver
### 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
- Members used together should be next to each other
- Holes should be minimized
- Don't stretch cachelines
### SAL Annotations
- Figure out `__rcu` best practice with SAL
- For the MuAcquireReleaseSharedExclusive functions, make SAL detect lock
imbalance. e.g. a AcquireExclusive followed by a ReleaseShared.
## Bugs with no solution
### 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.
## Bug workarounds
### Remove MTU polling
When NotifyIpInterfaceChange is fixed for MTU changes, adjust the dwBuildNumber
check for the workaround thread polling.
### 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.
## Project
### Enable `/std:c17` once NDIS headers can handle it, and switch to using `alignas` from stdalign.h.
|