aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-03-08 20:29:12 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2021-03-09 09:10:04 -0700
commitb7f69d20b6c6560b6cdced961bed428e68c66719 (patch)
tree327c95314a13146e4a6d7555144d8a7db6cde299
parentUI: iOS: Disable "copy" action on on-demand cells (diff)
downloadwireguard-apple-b7f69d20b6c6560b6cdced961bed428e68c66719.tar.xz
wireguard-apple-b7f69d20b6c6560b6cdced961bed428e68c66719.zip
Kit: Go: bump to latest API
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--Sources/WireGuardKit/WireGuardAdapter.swift22
-rw-r--r--Sources/WireGuardKitGo/Makefile16
-rw-r--r--Sources/WireGuardKitGo/api-apple.go (renamed from Sources/WireGuardKitGo/api-ios.go)68
-rw-r--r--Sources/WireGuardKitGo/go.mod10
-rw-r--r--Sources/WireGuardKitGo/go.sum23
-rw-r--r--Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff18
-rw-r--r--Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift4
7 files changed, 86 insertions, 75 deletions
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 <Jason@zx2c4.com>. 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-ios.go b/Sources/WireGuardKitGo/api-apple.go
index 2efb4d7..5d24982 100644
--- a/Sources/WireGuardKitGo/api-ios.go
+++ b/Sources/WireGuardKitGo/api-apple.go
@@ -14,36 +14,41 @@ package main
import "C"
import (
- "errors"
- "log"
+ "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
-var versionString *C.char
-type CLogger struct {
- level C.int
+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) Write(p []byte) (int, error) {
+func (l CLogger) Printf(format string, args ...interface{}) {
if uintptr(loggerFunc) == 0 {
- return 0, errors.New("No logger initialized")
+ return
}
- message := C.CString(string(p))
- C.callLogger(loggerFunc, loggerCtx, l.level, message)
- C.free(unsafe.Pointer(message))
- return len(p), nil
+ C.callLogger(loggerFunc, loggerCtx, C.int(l), cstring(fmt.Sprintf(format, args...)))
}
type tunnelHandle struct {
@@ -54,7 +59,6 @@ type tunnelHandle struct {
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() {
@@ -81,40 +85,39 @@ func wgSetLogger(context, loggerFn uintptr) {
//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),
+ Verbosef: CLogger(0).Printf,
+ Errorf: CLogger(1).Printf,
}
dupTunFd, err := unix.Dup(int(tunFd))
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("Unable to dup tun fd: %v", err)
return -1
}
err = unix.SetNonblock(dupTunFd, true)
if err != nil {
- logger.Error.Println(err)
+ 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.Error.Println(err)
+ logger.Errorf("Unable to create new tun device from fd: %v", err)
unix.Close(dupTunFd)
return -1
}
- logger.Info.Println("Attaching to interface")
- dev := device.NewDevice(tun, logger)
+ logger.Verbosef("Attaching to interface")
+ dev := device.NewDevice(tun, conn.NewStdNetBind(), logger)
err = dev.IpcSet(C.GoString(settings))
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("Unable to set IPC settings: %v", err)
unix.Close(dupTunFd)
return -1
}
dev.Up()
- logger.Info.Println("Device started")
+ logger.Verbosef("Device started")
var i int32
for i = 0; i < math.MaxInt32; i++ {
@@ -148,7 +151,7 @@ func wgSetConfig(tunnelHandle int32, settings *C.char) int64 {
}
err := dev.IpcSet(C.GoString(settings))
if err != nil {
- dev.Error.Println(err)
+ dev.Errorf("Unable to set IPC settings: %v", err)
if ipcErr, ok := err.(*device.IPCError); ok {
return ipcErr.ErrorCode()
}
@@ -183,10 +186,10 @@ func wgBumpSockets(tunnelHandle int32) {
dev.SendKeepalivesToPeersWithCurrentKeypair()
return
}
- dev.Error.Printf("Unable to update bind, try %d: %v", i+1, err)
+ dev.Errorf("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")
+ dev.Errorf("Gave up trying to update bind; tunnel is likely dysfunctional")
}()
}
@@ -201,7 +204,20 @@ func wgDisableSomeRoamingForBrokenMobileSemantics(tunnelHandle int32) {
//export wgVersion
func wgVersion() *C.char {
- return versionString
+ 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/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" <Jason@zx2c4.com>
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
}