summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-08-09 15:21:23 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-08-10 14:32:37 +0200
commit4bfb8fdd55e0581e95bff8fc9777241c456cc4d4 (patch)
tree92273f1d1af69b1ddb454b1af7e630ba5a524fa5 /docs
parentf053c5c071b94b7ba2e3025569cf25b089ccdc81 (diff)
downloadmullvadvpn-4bfb8fdd55e0581e95bff8fc9777241c456cc4d4.tar.xz
mullvadvpn-4bfb8fdd55e0581e95bff8fc9777241c456cc4d4.zip
Update architecture document for Windows offline monitor
Diffstat (limited to 'docs')
-rw-r--r--docs/architecture.md13
1 files changed, 6 insertions, 7 deletions
diff --git a/docs/architecture.md b/docs/architecture.md
index 3c61dcfba1..22b3ac394d 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -200,14 +200,13 @@ routing table.
#### Windows
-On Windows, connectivity is inferred if there exists an enabled interface with either an IPv4 or an
-IPv6 address and the machine is not suspended. The suspend/wakeup events matter because previously
-the TAP driver and currently Wintun might not work correctly early after boot, as such, the offline
-mode is used to enforce a grace period.
+On Windows, connectivity is inferred if there is a default route and the machine is not suspended.
+The suspend/wakeup events matter because tunnel device drivers might not work correctly early after
+wakeup. As such, the offline mode is used to enforce a grace period.
The conditions are affirmed by doing the following:
-- Listening for changes in the network adapter state via [`NotifyIpInterfaceChange`] - receiving
- callbacks whenever a network interface is changed or added via winnet.
+- Listening for changes to the default route, primarily via [`NotifyRouteChange2`] - receiving
+ callbacks whenever a default route is changed or added via winnet.
- Checking if the machine is suspended by listening for power state broadcasts by creating a window
and listening for power state messages.
@@ -261,7 +260,7 @@ See the [split tunneling documentation](split-tunneling.md).
### CLI
-[`NotifyIpInterfaceChange`]: https://docs.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-notifyipinterfacechange
+[`NotifyRouteChange2`]: https://docs.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-notifyroutechange2
[`SCNetworkReachability`]: https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d
[`SCDynamicStore`]: https://developer.apple.com/documentation/systemconfiguration/scdynamicstore-gb2
[`ConnectivityManager`]: https://developer.android.com/reference/android/net/ConnectivityManager