diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-10-05 23:56:27 -0600 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-10-05 23:56:27 -0600 |
commit | b9e3a703e8ab176dac0e22a74354e9627277c302 (patch) | |
tree | b03cc7a3ac2c11b0ff7f9b4f960a843ceea9594c /manager | |
parent | docs: add example for task scheduler (diff) | |
download | wireguard-windows-b9e3a703e8ab176dac0e22a74354e9627277c302.tar.xz wireguard-windows-b9e3a703e8ab176dac0e22a74354e9627277c302.zip |
driver: use new API
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'manager')
-rw-r--r-- | manager/interfacecleanup.go | 33 | ||||
-rw-r--r-- | manager/ipc_driver.go | 2 | ||||
-rw-r--r-- | manager/ipc_server.go | 10 | ||||
-rw-r--r-- | manager/service.go | 4 |
4 files changed, 11 insertions, 38 deletions
diff --git a/manager/interfacecleanup.go b/manager/interfacecleanup.go index 007c94d7..96c4aad6 100644 --- a/manager/interfacecleanup.go +++ b/manager/interfacecleanup.go @@ -13,47 +13,16 @@ import ( "golang.org/x/sys/windows/svc/mgr" "golang.zx2c4.com/wireguard/tun" "golang.zx2c4.com/wireguard/tun/wintun" - "golang.zx2c4.com/wireguard/windows/driver" "golang.zx2c4.com/wireguard/windows/services" ) -func cleanupStaleNetworkInterfaces() { +func cleanupStaleWintunInterfaces() { m, err := mgr.Connect() if err != nil { return } defer m.Disconnect() - 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() if err != nil { diff --git a/manager/ipc_driver.go b/manager/ipc_driver.go index dae213de..2155207b 100644 --- a/manager/ipc_driver.go +++ b/manager/ipc_driver.go @@ -37,7 +37,7 @@ func findDriverAdapter(tunnelName string) (*lockedDriverAdapter, error) { } driverAdapter = &lockedDriverAdapter{} var err error - driverAdapter.Adapter, err = driver.DefaultPool.OpenAdapter(tunnelName) + driverAdapter.Adapter, err = driver.OpenAdapter(tunnelName) if err != nil { return nil, err } diff --git a/manager/ipc_server.go b/manager/ipc_server.go index 48db057e..a8c8064b 100644 --- a/manager/ipc_server.go +++ b/manager/ipc_server.go @@ -148,8 +148,9 @@ func (s *ManagerService) Start(tunnelName string) error { } } }() - time.AfterFunc(time.Second*10, cleanupStaleNetworkInterfaces) - + if conf.AdminBool("UseUserspaceImplementation") { + time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces) + } // After the stop process has begun, but before it's finished, we install the new one. path, err := c.Path() if err != nil { @@ -159,8 +160,9 @@ func (s *ManagerService) Start(tunnelName string) error { } func (s *ManagerService) Stop(tunnelName string) error { - time.AfterFunc(time.Second*10, cleanupStaleNetworkInterfaces) - + if conf.AdminBool("UseUserspaceImplementation") { + time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces) + } err := UninstallTunnel(tunnelName) if err == windows.ERROR_SERVICE_DOES_NOT_EXIST { _, notExistsError := conf.LoadFromName(tunnelName) diff --git a/manager/service.go b/manager/service.go index 1deb50a4..2b553793 100644 --- a/manager/service.go +++ b/manager/service.go @@ -261,7 +261,9 @@ func (service *managerService) Execute(args []string, r <-chan svc.ChangeRequest }() } - time.AfterFunc(time.Second*10, cleanupStaleNetworkInterfaces) + if conf.AdminBool("UseUserspaceImplementation") { + time.AfterFunc(time.Second*10, cleanupStaleWintunInterfaces) + } time.AfterFunc(time.Second*15, func() { if !conf.AdminBool("UseUserspaceImplementation") { tun.WintunPool.DeleteDriver() |