aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.md
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.