diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-20 14:18:01 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-20 14:18:01 +0200 |
commit | cdb8c53cdea8d8ac6e6f2112e4a5e844bffd01a4 (patch) | |
tree | db88ec568dfc508da863e67164de909448c66742 /tunnel/service.go | |
parent | service: move route monitor and account for changing index (diff) | |
download | wireguard-windows-cdb8c53cdea8d8ac6e6f2112e4a5e844bffd01a4.tar.xz wireguard-windows-cdb8c53cdea8d8ac6e6f2112e4a5e844bffd01a4.zip |
service: split into tunnel and manager
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r-- | tunnel/service.go (renamed from service/service_tunnel.go) | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/service/service_tunnel.go b/tunnel/service.go index 2a82a2f2..e93a2c40 100644 --- a/service/service_tunnel.go +++ b/tunnel/service.go @@ -3,7 +3,7 @@ * Copyright (C) 2017-2019 WireGuard LLC. All Rights Reserved. */ -package service +package tunnel import ( "bufio" @@ -22,27 +22,29 @@ import ( "golang.zx2c4.com/wireguard/device" "golang.zx2c4.com/wireguard/ipc" "golang.zx2c4.com/wireguard/tun" + "golang.zx2c4.com/wireguard/windows/conf" "golang.zx2c4.com/wireguard/windows/ringlogger" + "golang.zx2c4.com/wireguard/windows/services" "golang.zx2c4.com/wireguard/windows/version" ) -type tunnelService struct { - path string +type Service struct { + Path string } -func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (svcSpecificEC bool, exitCode uint32) { +func (service *Service) Execute(args []string, r <-chan svc.ChangeRequest, changes chan<- svc.Status) (svcSpecificEC bool, exitCode uint32) { changes <- svc.Status{State: svc.StartPending} var dev *device.Device var uapi net.Listener var routeChangeCallback *winipcfg.RouteChangeCallback var err error - serviceError := ErrorSuccess + serviceError := services.ErrorSuccess defer func() { - svcSpecificEC, exitCode = determineErrorCode(err, serviceError) - logErr := combineErrors(err, serviceError) + svcSpecificEC, exitCode = services.DetermineErrorCode(err, serviceError) + logErr := services.CombineErrors(err, serviceError) if logErr != nil { log.Println(logErr) } @@ -95,7 +97,7 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, err = ringlogger.InitGlobalLogger("TUN") if err != nil { - serviceError = ErrorRingloggerOpen + serviceError = services.ErrorRingloggerOpen return } defer func() { @@ -109,9 +111,9 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, } }() - conf, err := conf.LoadFromPath(service.path) + conf, err := conf.LoadFromPath(service.Path) if err != nil { - serviceError = ErrorLoadConfiguration + serviceError = services.ErrorLoadConfiguration return } @@ -123,20 +125,20 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, log.Println("Resolving DNS names") uapiConf, err := conf.ToUAPI() if err != nil { - serviceError = ErrorDNSLookup + serviceError = services.ErrorDNSLookup return } log.Println("Creating Wintun device") wintun, err := tun.CreateTUN(conf.Name) if err != nil { - serviceError = ErrorCreateWintun + serviceError = services.ErrorCreateWintun return } log.Println("Determining Wintun device name") realInterfaceName, err := wintun.Name() if err != nil { - serviceError = ErrorDetermineWintunName + serviceError = services.ErrorDetermineWintunName return } conf.Name = realInterfaceName @@ -145,14 +147,14 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, log.Println("Enabling firewall rules") err = enableFirewall(conf, nativeTun) if err != nil { - serviceError = ErrorFirewall + serviceError = services.ErrorFirewall return } log.Println("Dropping all privileges") - err = DropAllPrivileges() + err = services.DropAllPrivileges() if err != nil { - serviceError = ErrorDropPrivileges + serviceError = services.ErrorDropPrivileges return } @@ -164,13 +166,13 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, log.Println("Setting interface configuration") uapi, err = ipc.UAPIListen(conf.Name) if err != nil { - serviceError = ErrorUAPIListen + serviceError = services.ErrorUAPIListen return } ipcErr := dev.IpcSetOperation(bufio.NewReader(strings.NewReader(uapiConf))) if ipcErr != nil { err = ipcErr - serviceError = ErrorDeviceSetConfig + serviceError = services.ErrorDeviceSetConfig return } @@ -180,14 +182,14 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, log.Println("Monitoring default routes") routeChangeCallback, err = monitorDefaultRoutes(dev, conf.Interface.MTU == 0, nativeTun) if err != nil { - serviceError = ErrorBindSocketsToDefaultRoutes + serviceError = services.ErrorBindSocketsToDefaultRoutes return } log.Println("Setting device address") err = configureInterface(conf, nativeTun) if err != nil { - serviceError = ErrorSetNetConfig + serviceError = services.ErrorSetNetConfig return } |