From 14a4cc5dbfc7b815f2363af360f2f9c9b71463c2 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 9 Aug 2021 13:39:50 +0200 Subject: manager: do both wgnt and wintun cleanups Signed-off-by: Jason A. Donenfeld --- manager/interfacecleanup.go | 59 +++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 31 deletions(-) (limited to 'manager') 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() -- cgit v1.2.3-59-g8ed1b