From b7f69d20b6c6560b6cdced961bed428e68c66719 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 8 Mar 2021 20:29:12 +0100 Subject: Kit: Go: bump to latest API Signed-off-by: Jason A. Donenfeld --- Sources/WireGuardKit/WireGuardAdapter.swift | 22 +- Sources/WireGuardKitGo/Makefile | 16 +- Sources/WireGuardKitGo/api-apple.go | 223 +++++++++++++++++++++ Sources/WireGuardKitGo/api-ios.go | 207 ------------------- Sources/WireGuardKitGo/go.mod | 10 +- Sources/WireGuardKitGo/go.sum | 23 +-- .../goruntime-boottime-over-monotonic.diff | 18 +- .../PacketTunnelProvider.swift | 4 +- 8 files changed, 267 insertions(+), 256 deletions(-) create mode 100644 Sources/WireGuardKitGo/api-apple.go delete mode 100644 Sources/WireGuardKitGo/api-ios.go diff --git a/Sources/WireGuardKit/WireGuardAdapter.swift b/Sources/WireGuardKit/WireGuardAdapter.swift index 16e1b28..42f66f7 100644 --- a/Sources/WireGuardKit/WireGuardAdapter.swift +++ b/Sources/WireGuardKit/WireGuardAdapter.swift @@ -62,7 +62,10 @@ public class WireGuardAdapter { /// Returns a WireGuard version. class var backendVersion: String { - return String(cString: wgVersion()) + guard let ver = wgVersion() else { return "unknown" } + let str = String(cString: ver) + free(UnsafeMutableRawPointer(mutating: ver)) + return str } /// Returns the tunnel device interface name, or nil on error. @@ -265,7 +268,7 @@ public class WireGuardAdapter { .takeUnretainedValue() let swiftString = String(cString: message).trimmingCharacters(in: .newlines) - let tunnelLogLevel = WireGuardLogLevel(rawValue: logLevel) ?? .debug + let tunnelLogLevel = WireGuardLogLevel(rawValue: logLevel) ?? .verbose unretainedSelf.logHandler(tunnelLogLevel, swiftString) } @@ -369,9 +372,9 @@ public class WireGuardAdapter { switch result { case .success((let sourceEndpoint, let resolvedEndpoint)): if sourceEndpoint.host == resolvedEndpoint.host { - self.logHandler(.debug, "DNS64: mapped \(sourceEndpoint.host) to itself.") + self.logHandler(.verbose, "DNS64: mapped \(sourceEndpoint.host) to itself.") } else { - self.logHandler(.debug, "DNS64: mapped \(sourceEndpoint.host) to \(resolvedEndpoint.host)") + self.logHandler(.verbose, "DNS64: mapped \(sourceEndpoint.host) to \(resolvedEndpoint.host)") } case .failure(let resolutionError): self.logHandler(.error, "Failed to resolve endpoint \(resolutionError.address): \(resolutionError.errorDescription ?? "(nil)")") @@ -382,7 +385,7 @@ public class WireGuardAdapter { /// Helper method used by network path monitor. /// - Parameter path: new network path private func didReceivePathUpdate(path: Network.NWPath) { - self.logHandler(.debug, "Network change detected with \(path.status) route and interface order \(path.availableInterfaces)") + self.logHandler(.verbose, "Network change detected with \(path.status) route and interface order \(path.availableInterfaces)") #if os(macOS) if case .started(let handle, _) = self.state { @@ -399,7 +402,7 @@ public class WireGuardAdapter { wgDisableSomeRoamingForBrokenMobileSemantics(handle) wgBumpSockets(handle) } else { - self.logHandler(.info, "Connectivity offline, pausing backend.") + self.logHandler(.verbose, "Connectivity offline, pausing backend.") self.state = .temporaryShutdown(settingsGenerator) wgTurnOff(handle) @@ -408,7 +411,7 @@ public class WireGuardAdapter { case .temporaryShutdown(let settingsGenerator): guard path.status.isSatisfiable else { return } - self.logHandler(.info, "Connectivity online, resuming backend.") + self.logHandler(.verbose, "Connectivity online, resuming backend.") do { try self.setNetworkSettings(settingsGenerator.generateNetworkSettings()) @@ -436,9 +439,8 @@ public class WireGuardAdapter { /// A enum describing WireGuard log levels defined in `api-ios.go`. public enum WireGuardLogLevel: Int32 { - case debug = 0 - case info = 1 - case error = 2 + case verbose = 0 + case error = 1 } private extension Network.NWPath.Status { diff --git a/Sources/WireGuardKitGo/Makefile b/Sources/WireGuardKitGo/Makefile index 767edbd..1d89b5a 100644 --- a/Sources/WireGuardKitGo/Makefile +++ b/Sources/WireGuardKitGo/Makefile @@ -3,9 +3,9 @@ # Copyright (C) 2018-2019 Jason A. Donenfeld . All Rights Reserved. # These are generally passed to us by xcode, but we set working defaults for standalone compilation too. -ARCHS ?= x86_64 #TODO: add arm64 to this list once we support apple silicon -SDK_NAME ?= macosx -SDKROOT ?= $(shell xcrun --sdk $(SDK_NAME) --show-sdk-path) +ARCHS ?= x86_64 arm64 +PLATFORM_NAME ?= macosx +SDKROOT ?= $(shell xcrun --sdk $(PLATFORM_NAME) --show-sdk-path) CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out CONFIGURATION_TEMP_DIR ?= $(CURDIR)/.tmp @@ -17,6 +17,8 @@ BUILDDIR ?= $(CONFIGURATION_TEMP_DIR)/wireguard-go-bridge CFLAGS_PREFIX := $(if $(DEPLOYMENT_TARGET_CLANG_FLAG_NAME),-$(DEPLOYMENT_TARGET_CLANG_FLAG_NAME)=$($(DEPLOYMENT_TARGET_CLANG_ENV_NAME)),) -isysroot $(SDKROOT) -arch GOARCH_arm64 := arm64 GOARCH_x86_64 := amd64 +GOOS_macosx := darwin +GOOS_iphoneos := ios build: $(DESTDIR)/libwg-go.a version-header: $(DESTDIR)/wireguard-go-version.h @@ -34,16 +36,16 @@ define libwg-go-a $(BUILDDIR)/libwg-go-$(1).a: export CGO_ENABLED := 1 $(BUILDDIR)/libwg-go-$(1).a: export CGO_CFLAGS := $(CFLAGS_PREFIX) $(ARCH) $(BUILDDIR)/libwg-go-$(1).a: export CGO_LDFLAGS := $(CFLAGS_PREFIX) $(ARCH) -$(BUILDDIR)/libwg-go-$(1).a: export GOOS := darwin +$(BUILDDIR)/libwg-go-$(1).a: export GOOS := $(GOOS_$(PLATFORM_NAME)) $(BUILDDIR)/libwg-go-$(1).a: export GOARCH := $(GOARCH_$(1)) $(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/.prepared go.mod - go build -tags ios -ldflags=-w -trimpath -v -o "$(BUILDDIR)/libwg-go-$(1).a" -buildmode c-archive + go build -ldflags=-w -trimpath -v -o "$(BUILDDIR)/libwg-go-$(1).a" -buildmode c-archive rm -f "$(BUILDDIR)/libwg-go-$(1).h" endef $(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH)))) -$(DESTDIR)/wireguard-go-version.h: $(GOROOT)/.prepared go.mod - go list -m golang.zx2c4.com/wireguard | sed -n 's/.*v\([0-9.]*\).*/#define WIREGUARD_GO_VERSION "\1"/p' > "$@" +$(DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared + sed -E -n 's/.*golang\.zx2c4\.com\/wireguard +v[0-9.]+-[0-9]+-([0-9a-f]{8})[0-9a-f]{4}.*/#define WIREGUARD_GO_VERSION "\1"/p' "$<" > "$@" $(DESTDIR)/libwg-go.a: $(foreach ARCH,$(ARCHS),$(BUILDDIR)/libwg-go-$(ARCH).a) @mkdir -vp "$(DESTDIR)" diff --git a/Sources/WireGuardKitGo/api-apple.go b/Sources/WireGuardKitGo/api-apple.go new file mode 100644 index 0000000..5d24982 --- /dev/null +++ b/Sources/WireGuardKitGo/api-apple.go @@ -0,0 +1,223 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2018-2019 Jason A. Donenfeld . All Rights Reserved. + */ + +package main + +// #include +// #include +// static void callLogger(void *func, void *ctx, int level, const char *msg) +// { +// ((void(*)(void *, int, const char *))func)(ctx, level, msg); +// } +import "C" + +import ( + "fmt" + "math" + "os" + "os/signal" + "runtime" + "runtime/debug" + "strings" + "time" + "unsafe" + + "golang.org/x/sys/unix" + "golang.zx2c4.com/wireguard/conn" + "golang.zx2c4.com/wireguard/device" + "golang.zx2c4.com/wireguard/tun" +) + +var loggerFunc unsafe.Pointer +var loggerCtx unsafe.Pointer + +type CLogger int + +func cstring(s string) *C.char { + b, err := unix.BytePtrFromString(s) + if err != nil { + b := [1]C.char{} + return &b[0] + } + return (*C.char)(unsafe.Pointer(b)) +} + +func (l CLogger) Printf(format string, args ...interface{}) { + if uintptr(loggerFunc) == 0 { + return + } + C.callLogger(loggerFunc, loggerCtx, C.int(l), cstring(fmt.Sprintf(format, args...))) +} + +type tunnelHandle struct { + *device.Device + *device.Logger +} + +var tunnelHandles = make(map[int32]tunnelHandle) + +func init() { + signals := make(chan os.Signal) + signal.Notify(signals, unix.SIGUSR2) + go func() { + buf := make([]byte, os.Getpagesize()) + for { + select { + case <-signals: + n := runtime.Stack(buf, true) + buf[n] = 0 + if uintptr(loggerFunc) != 0 { + C.callLogger(loggerFunc, loggerCtx, 0, (*C.char)(unsafe.Pointer(&buf[0]))) + } + } + } + }() +} + +//export wgSetLogger +func wgSetLogger(context, loggerFn uintptr) { + loggerCtx = unsafe.Pointer(context) + loggerFunc = unsafe.Pointer(loggerFn) +} + +//export wgTurnOn +func wgTurnOn(settings *C.char, tunFd int32) int32 { + logger := &device.Logger{ + Verbosef: CLogger(0).Printf, + Errorf: CLogger(1).Printf, + } + dupTunFd, err := unix.Dup(int(tunFd)) + if err != nil { + logger.Errorf("Unable to dup tun fd: %v", err) + return -1 + } + + err = unix.SetNonblock(dupTunFd, true) + if err != nil { + logger.Errorf("Unable to set tun fd as non blocking: %v", err) + unix.Close(dupTunFd) + return -1 + } + tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(dupTunFd), "/dev/tun"), 0) + if err != nil { + logger.Errorf("Unable to create new tun device from fd: %v", err) + unix.Close(dupTunFd) + return -1 + } + logger.Verbosef("Attaching to interface") + dev := device.NewDevice(tun, conn.NewStdNetBind(), logger) + + err = dev.IpcSet(C.GoString(settings)) + if err != nil { + logger.Errorf("Unable to set IPC settings: %v", err) + unix.Close(dupTunFd) + return -1 + } + + dev.Up() + logger.Verbosef("Device started") + + var i int32 + for i = 0; i < math.MaxInt32; i++ { + if _, exists := tunnelHandles[i]; !exists { + break + } + } + if i == math.MaxInt32 { + unix.Close(dupTunFd) + return -1 + } + tunnelHandles[i] = tunnelHandle{dev, logger} + return i +} + +//export wgTurnOff +func wgTurnOff(tunnelHandle int32) { + dev, ok := tunnelHandles[tunnelHandle] + if !ok { + return + } + delete(tunnelHandles, tunnelHandle) + dev.Close() +} + +//export wgSetConfig +func wgSetConfig(tunnelHandle int32, settings *C.char) int64 { + dev, ok := tunnelHandles[tunnelHandle] + if !ok { + return 0 + } + err := dev.IpcSet(C.GoString(settings)) + if err != nil { + dev.Errorf("Unable to set IPC settings: %v", err) + if ipcErr, ok := err.(*device.IPCError); ok { + return ipcErr.ErrorCode() + } + return -1 + } + return 0 +} + +//export wgGetConfig +func wgGetConfig(tunnelHandle int32) *C.char { + device, ok := tunnelHandles[tunnelHandle] + if !ok { + return nil + } + settings, err := device.IpcGet() + if err != nil { + return nil + } + return C.CString(settings) +} + +//export wgBumpSockets +func wgBumpSockets(tunnelHandle int32) { + dev, ok := tunnelHandles[tunnelHandle] + if !ok { + return + } + go func() { + for i := 0; i < 10; i++ { + err := dev.BindUpdate() + if err == nil { + dev.SendKeepalivesToPeersWithCurrentKeypair() + return + } + dev.Errorf("Unable to update bind, try %d: %v", i+1, err) + time.Sleep(time.Second / 2) + } + dev.Errorf("Gave up trying to update bind; tunnel is likely dysfunctional") + }() +} + +//export wgDisableSomeRoamingForBrokenMobileSemantics +func wgDisableSomeRoamingForBrokenMobileSemantics(tunnelHandle int32) { + dev, ok := tunnelHandles[tunnelHandle] + if !ok { + return + } + dev.DisableSomeRoamingForBrokenMobileSemantics() +} + +//export wgVersion +func wgVersion() *C.char { + info, ok := debug.ReadBuildInfo() + if !ok { + return C.CString("unknown") + } + for _, dep := range info.Deps { + if dep.Path == "golang.zx2c4.com/wireguard" { + parts := strings.Split(dep.Version, "-") + if len(parts) == 3 && len(parts[2]) == 12 { + return C.CString(parts[2][:7]) + } + return C.CString(dep.Version) + } + } + return C.CString("unknown") +} + +func main() {} diff --git a/Sources/WireGuardKitGo/api-ios.go b/Sources/WireGuardKitGo/api-ios.go deleted file mode 100644 index 2efb4d7..0000000 --- a/Sources/WireGuardKitGo/api-ios.go +++ /dev/null @@ -1,207 +0,0 @@ -/* SPDX-License-Identifier: MIT - * - * Copyright (C) 2018-2019 Jason A. Donenfeld . All Rights Reserved. - */ - -package main - -// #include -// #include -// static void callLogger(void *func, void *ctx, int level, const char *msg) -// { -// ((void(*)(void *, int, const char *))func)(ctx, level, msg); -// } -import "C" - -import ( - "errors" - "log" - "math" - "os" - "os/signal" - "runtime" - "time" - "unsafe" - - "golang.org/x/sys/unix" - "golang.zx2c4.com/wireguard/device" - "golang.zx2c4.com/wireguard/tun" -) - -var loggerFunc unsafe.Pointer -var loggerCtx unsafe.Pointer -var versionString *C.char - -type CLogger struct { - level C.int -} - -func (l *CLogger) Write(p []byte) (int, error) { - if uintptr(loggerFunc) == 0 { - return 0, errors.New("No logger initialized") - } - message := C.CString(string(p)) - C.callLogger(loggerFunc, loggerCtx, l.level, message) - C.free(unsafe.Pointer(message)) - return len(p), nil -} - -type tunnelHandle struct { - *device.Device - *device.Logger -} - -var tunnelHandles = make(map[int32]tunnelHandle) - -func init() { - versionString = C.CString(device.WireGuardGoVersion) - signals := make(chan os.Signal) - signal.Notify(signals, unix.SIGUSR2) - go func() { - buf := make([]byte, os.Getpagesize()) - for { - select { - case <-signals: - n := runtime.Stack(buf, true) - buf[n] = 0 - if uintptr(loggerFunc) != 0 { - C.callLogger(loggerFunc, loggerCtx, 0, (*C.char)(unsafe.Pointer(&buf[0]))) - } - } - } - }() -} - -//export wgSetLogger -func wgSetLogger(context, loggerFn uintptr) { - loggerCtx = unsafe.Pointer(context) - loggerFunc = unsafe.Pointer(loggerFn) -} - -//export wgTurnOn -func wgTurnOn(settings *C.char, tunFd int32) int32 { - logger := &device.Logger{ - Debug: log.New(&CLogger{level: 0}, "", 0), - Info: log.New(&CLogger{level: 1}, "", 0), - Error: log.New(&CLogger{level: 2}, "", 0), - } - dupTunFd, err := unix.Dup(int(tunFd)) - if err != nil { - logger.Error.Println(err) - return -1 - } - - err = unix.SetNonblock(dupTunFd, true) - if err != nil { - logger.Error.Println(err) - unix.Close(dupTunFd) - return -1 - } - tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(dupTunFd), "/dev/tun"), 0) - if err != nil { - logger.Error.Println(err) - unix.Close(dupTunFd) - return -1 - } - logger.Info.Println("Attaching to interface") - dev := device.NewDevice(tun, logger) - - err = dev.IpcSet(C.GoString(settings)) - if err != nil { - logger.Error.Println(err) - unix.Close(dupTunFd) - return -1 - } - - dev.Up() - logger.Info.Println("Device started") - - var i int32 - for i = 0; i < math.MaxInt32; i++ { - if _, exists := tunnelHandles[i]; !exists { - break - } - } - if i == math.MaxInt32 { - unix.Close(dupTunFd) - return -1 - } - tunnelHandles[i] = tunnelHandle{dev, logger} - return i -} - -//export wgTurnOff -func wgTurnOff(tunnelHandle int32) { - dev, ok := tunnelHandles[tunnelHandle] - if !ok { - return - } - delete(tunnelHandles, tunnelHandle) - dev.Close() -} - -//export wgSetConfig -func wgSetConfig(tunnelHandle int32, settings *C.char) int64 { - dev, ok := tunnelHandles[tunnelHandle] - if !ok { - return 0 - } - err := dev.IpcSet(C.GoString(settings)) - if err != nil { - dev.Error.Println(err) - if ipcErr, ok := err.(*device.IPCError); ok { - return ipcErr.ErrorCode() - } - return -1 - } - return 0 -} - -//export wgGetConfig -func wgGetConfig(tunnelHandle int32) *C.char { - device, ok := tunnelHandles[tunnelHandle] - if !ok { - return nil - } - settings, err := device.IpcGet() - if err != nil { - return nil - } - return C.CString(settings) -} - -//export wgBumpSockets -func wgBumpSockets(tunnelHandle int32) { - dev, ok := tunnelHandles[tunnelHandle] - if !ok { - return - } - go func() { - for i := 0; i < 10; i++ { - err := dev.BindUpdate() - if err == nil { - dev.SendKeepalivesToPeersWithCurrentKeypair() - return - } - dev.Error.Printf("Unable to update bind, try %d: %v", i+1, err) - time.Sleep(time.Second / 2) - } - dev.Error.Println("Gave up trying to update bind; tunnel is likely dysfunctional") - }() -} - -//export wgDisableSomeRoamingForBrokenMobileSemantics -func wgDisableSomeRoamingForBrokenMobileSemantics(tunnelHandle int32) { - dev, ok := tunnelHandles[tunnelHandle] - if !ok { - return - } - dev.DisableSomeRoamingForBrokenMobileSemantics() -} - -//export wgVersion -func wgVersion() *C.char { - return versionString -} - -func main() {} diff --git a/Sources/WireGuardKitGo/go.mod b/Sources/WireGuardKitGo/go.mod index 65d2beb..8ec4816 100644 --- a/Sources/WireGuardKitGo/go.mod +++ b/Sources/WireGuardKitGo/go.mod @@ -1,10 +1,8 @@ -module golang.zx2c4.com/wireguard/ios +module golang.zx2c4.com/wireguard/apple -go 1.15 +go 1.16 require ( - golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirect - golang.org/x/net v0.0.0-20201216054612-986b41b23924 // indirect - golang.org/x/sys v0.0.0-20201223074533-0d417f636930 - golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340 + golang.org/x/sys v0.0.0-20210308170721-88b6017d0656 + golang.zx2c4.com/wireguard v0.0.0-20210307162820-f4695db51c39 ) diff --git a/Sources/WireGuardKitGo/go.sum b/Sources/WireGuardKitGo/go.sum index 478631d..89d522b 100644 --- a/Sources/WireGuardKitGo/go.sum +++ b/Sources/WireGuardKitGo/go.sum @@ -1,24 +1,19 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201216054612-986b41b23924 h1:QsnDpLLOKwHBBDa8nDws4DYNc/ryVW2vCpxCs09d4PY= -golang.org/x/net v0.0.0-20201216054612-986b41b23924/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo= -golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305215415-5cdee2b1b5a0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210308170721-88b6017d0656 h1:FuBaiPCiXkq4v+JY5JEGPU/HwEZwpVyDbu/KBz9fU+4= +golang.org/x/sys v0.0.0-20210308170721-88b6017d0656/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340 h1:X6jrf2sUEj3n+q2oB/I3C088vQFKREz2UzgVJ8wENtI= -golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340/go.mod h1:ITsWNpkFv78VPB7f8MiyuxeEMcHR4jfxHGCJLPP3GHs= +golang.zx2c4.com/wireguard v0.0.0-20210307162820-f4695db51c39 h1:yv331J9aB1fuvxzneUKsRnWyhwK+aj495rADUXSP7Uk= +golang.zx2c4.com/wireguard v0.0.0-20210307162820-f4695db51c39/go.mod h1:ojGPy+9W6ZSM8anL+xC67fvh8zPQJwA6KpFOHyDWLX4= diff --git a/Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff b/Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff index d5212ef..2f7f54e 100644 --- a/Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff +++ b/Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff @@ -1,4 +1,4 @@ -From aa85e0f90c9031ff5be32296e9fed1637a2eceae Mon Sep 17 00:00:00 2001 +From 516dc0c15ff1ab781e0677606b5be72919251b3e Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 9 Dec 2020 14:07:06 +0100 Subject: [PATCH] runtime: use libc_mach_continuous_time in nanotime on Darwin @@ -18,23 +18,23 @@ Change-Id: Ia3282e8bd86f95ad2b76427063e60a005563f4eb 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/runtime/sys_darwin.go b/src/runtime/sys_darwin.go -index 06474434c9..6f7ca37122 100644 +index 4a3f2fc453..4a69403b32 100644 --- a/src/runtime/sys_darwin.go +++ b/src/runtime/sys_darwin.go -@@ -469,7 +469,7 @@ func setNonblock(fd int32) { +@@ -440,7 +440,7 @@ func setNonblock(fd int32) { //go:cgo_import_dynamic libc_usleep usleep "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_mach_timebase_info mach_timebase_info "/usr/lib/libSystem.B.dylib" -//go:cgo_import_dynamic libc_mach_absolute_time mach_absolute_time "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_mach_continuous_time mach_continuous_time "/usr/lib/libSystem.B.dylib" - //go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + //go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_sigaction sigaction "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_pthread_sigmask pthread_sigmask "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/sys_darwin_amd64.s b/src/runtime/sys_darwin_amd64.s -index 825852d673..5a8b994fb1 100644 +index 630fb5df64..4499c88802 100644 --- a/src/runtime/sys_darwin_amd64.s +++ b/src/runtime/sys_darwin_amd64.s -@@ -109,7 +109,7 @@ TEXT runtime·nanotime_trampoline(SB),NOSPLIT,$0 +@@ -114,7 +114,7 @@ TEXT runtime·nanotime_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP MOVQ DI, BX @@ -44,10 +44,10 @@ index 825852d673..5a8b994fb1 100644 MOVL timebase<>+machTimebaseInfo_numer(SB), SI MOVL timebase<>+machTimebaseInfo_denom(SB), DI // atomic read diff --git a/src/runtime/sys_darwin_arm64.s b/src/runtime/sys_darwin_arm64.s -index 585d4f2c64..c556d88730 100644 +index 96d2ed1076..f046545395 100644 --- a/src/runtime/sys_darwin_arm64.s +++ b/src/runtime/sys_darwin_arm64.s -@@ -135,7 +135,7 @@ GLOBL timebase<>(SB),NOPTR,$(machTimebaseInfo__size) +@@ -143,7 +143,7 @@ GLOBL timebase<>(SB),NOPTR,$(machTimebaseInfo__size) TEXT runtime·nanotime_trampoline(SB),NOSPLIT,$40 MOVD R0, R19 @@ -57,5 +57,5 @@ index 585d4f2c64..c556d88730 100644 MOVW timebase<>+machTimebaseInfo_numer(SB), R20 MOVD $timebase<>+machTimebaseInfo_denom(SB), R21 -- -2.29.2 +2.30.1 diff --git a/Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift b/Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift index 5ba8222..5b09674 100644 --- a/Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift +++ b/Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift @@ -109,10 +109,8 @@ class PacketTunnelProvider: NEPacketTunnelProvider { extension WireGuardLogLevel { var osLogLevel: OSLogType { switch self { - case .debug: + case .verbose: return .debug - case .info: - return .info case .error: return .error } -- cgit v1.2.3-59-g8ed1b