]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Kit: Go: bump to latest API
authorJason A. Donenfeld <Jason@zx2c4.com>
Mon, 8 Mar 2021 19:29:12 +0000 (20:29 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 9 Mar 2021 16:10:04 +0000 (09:10 -0700)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Sources/WireGuardKit/WireGuardAdapter.swift
Sources/WireGuardKitGo/Makefile
Sources/WireGuardKitGo/api-apple.go [moved from Sources/WireGuardKitGo/api-ios.go with 70% similarity]
Sources/WireGuardKitGo/go.mod
Sources/WireGuardKitGo/go.sum
Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff
Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift

index 16e1b283ccac6b48f4b0021df115b76944ed23df..42f66f73918f3baa0381d810a246c4c757867807 100644 (file)
@@ -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 {
index 767edbd0e680e955d12749666395ca45655a2d72..1d89b5a11db6d6e1464008c1265497a6b751494a 100644 (file)
@@ -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)"
similarity index 70%
rename from Sources/WireGuardKitGo/api-ios.go
rename to Sources/WireGuardKitGo/api-apple.go
index 2efb4d743defa41e92b6c4ba09989a4018373562..5d24982ac5b71ba0ab84afe972652a2d4f8549e5 100644 (file)
@@ -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() {}
index 65d2beb8eae04c2c568f726c0a5c09032696de86..8ec48163b6fa81b9b10b2c3cdb2b794f3a903292 100644 (file)
@@ -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
 )
index 478631d032f65b5499e3eaa065b456c8a19a48ba..89d522bb399c55e2fa5b39f0a869df2c2b51075a 100644 (file)
@@ -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=
index d5212ef95577a4cf4c2c07a46f0c3dc58c37d9fa..2f7f54edd0148dd8253dc9fb4bcbce6039c19803 100644 (file)
@@ -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
 
index 5ba82229ff615f9e97b70500a5f40adb0c5d7c35..5b0967496e2d1ab8d9dfc04851160f68a229957a 100644 (file)
@@ -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
         }