diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-08-09 13:39:50 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-08-09 13:39:50 +0200 |
commit | 14a4cc5dbfc7b815f2363af360f2f9c9b71463c2 (patch) | |
tree | 22b8c47e810dd4350f3235339c82eaac6b9543ef /manager | |
parent | manager: track externally created tunnels (diff) | |
download | wireguard-windows-14a4cc5dbfc7b815f2363af360f2f9c9b71463c2.tar.xz wireguard-windows-14a4cc5dbfc7b815f2363af360f2f9c9b71463c2.zip |
manager: do both wgnt and wintun cleanups
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'manager')
-rw-r--r-- | manager/interfacecleanup.go | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/manager/interfacecleanup.go b/manager/interfacecleanup.go index 32976b79..007c94d7 100644 --- a/manager/interfacecleanup.go +++ b/manager/interfacecleanup.go @@ -13,7 +13,6 @@ import ( "golang.org/x/sys/windows/svc/mgr" "golang.zx2c4.com/wireguard/tun" "golang.zx2c4.com/wireguard/tun/wintun" - "golang.zx2c4.com/wireguard/windows/conf" "golang.zx2c4.com/wireguard/windows/driver" "golang.zx2c4.com/wireguard/windows/services" ) @@ -25,37 +24,35 @@ func cleanupStaleNetworkInterfaces() { } defer m.Disconnect() - if conf.AdminBool("ExperimentalKernelDriver") { - driver.DefaultPool.DeleteMatchingAdapters(func(wintun *driver.Adapter) bool { - interfaceName, err := wintun.Name() - if err != nil { - log.Printf("Removing network adapter because determining interface name failed: %v", err) - return true - } - serviceName, err := services.ServiceNameOfTunnel(interfaceName) - if err != nil { - log.Printf("Removing network adapter ‘%s’ because determining tunnel service name failed: %v", interfaceName, err) - return true - } - service, err := m.OpenService(serviceName) - if err == windows.ERROR_SERVICE_DOES_NOT_EXIST { - log.Printf("Removing network adapter ‘%s’ because no service for it exists", interfaceName) - return true - } else if err != nil { - return false - } - defer service.Close() - status, err := service.Query() - if err != nil { - return false - } - if status.State == svc.Stopped { - log.Printf("Removing network adapter ‘%s’ because its service is stopped", interfaceName) - return true - } + driver.DefaultPool.DeleteMatchingAdapters(func(wintun *driver.Adapter) bool { + interfaceName, err := wintun.Name() + if err != nil { + log.Printf("Removing network adapter because determining interface name failed: %v", err) + return true + } + serviceName, err := services.ServiceNameOfTunnel(interfaceName) + if err != nil { + log.Printf("Removing network adapter ‘%s’ because determining tunnel service name failed: %v", interfaceName, err) + return true + } + service, err := m.OpenService(serviceName) + if err == windows.ERROR_SERVICE_DOES_NOT_EXIST { + log.Printf("Removing network adapter ‘%s’ because no service for it exists", interfaceName) + return true + } else if err != nil { return false - }) - } + } + defer service.Close() + status, err := service.Query() + if err != nil { + return false + } + if status.State == svc.Stopped { + log.Printf("Removing network adapter ‘%s’ because its service is stopped", interfaceName) + return true + } + return false + }) tun.WintunPool.DeleteMatchingAdapters(func(adapter *wintun.Adapter) bool { interfaceName, err := adapter.Name() |