Kit: Go: bump to latest API
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
6c4f4109eb
commit
b7f69d20b6
|
@ -62,7 +62,10 @@ public class WireGuardAdapter {
|
||||||
|
|
||||||
/// Returns a WireGuard version.
|
/// Returns a WireGuard version.
|
||||||
class var backendVersion: String {
|
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.
|
/// Returns the tunnel device interface name, or nil on error.
|
||||||
|
@ -265,7 +268,7 @@ public class WireGuardAdapter {
|
||||||
.takeUnretainedValue()
|
.takeUnretainedValue()
|
||||||
|
|
||||||
let swiftString = String(cString: message).trimmingCharacters(in: .newlines)
|
let swiftString = String(cString: message).trimmingCharacters(in: .newlines)
|
||||||
let tunnelLogLevel = WireGuardLogLevel(rawValue: logLevel) ?? .debug
|
let tunnelLogLevel = WireGuardLogLevel(rawValue: logLevel) ?? .verbose
|
||||||
|
|
||||||
unretainedSelf.logHandler(tunnelLogLevel, swiftString)
|
unretainedSelf.logHandler(tunnelLogLevel, swiftString)
|
||||||
}
|
}
|
||||||
|
@ -369,9 +372,9 @@ public class WireGuardAdapter {
|
||||||
switch result {
|
switch result {
|
||||||
case .success((let sourceEndpoint, let resolvedEndpoint)):
|
case .success((let sourceEndpoint, let resolvedEndpoint)):
|
||||||
if sourceEndpoint.host == resolvedEndpoint.host {
|
if sourceEndpoint.host == resolvedEndpoint.host {
|
||||||
self.logHandler(.debug, "DNS64: mapped \(sourceEndpoint.host) to itself.")
|
self.logHandler(.verbose, "DNS64: mapped \(sourceEndpoint.host) to itself.")
|
||||||
} else {
|
} 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):
|
case .failure(let resolutionError):
|
||||||
self.logHandler(.error, "Failed to resolve endpoint \(resolutionError.address): \(resolutionError.errorDescription ?? "(nil)")")
|
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.
|
/// Helper method used by network path monitor.
|
||||||
/// - Parameter path: new network path
|
/// - Parameter path: new network path
|
||||||
private func didReceivePathUpdate(path: Network.NWPath) {
|
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 os(macOS)
|
||||||
if case .started(let handle, _) = self.state {
|
if case .started(let handle, _) = self.state {
|
||||||
|
@ -399,7 +402,7 @@ public class WireGuardAdapter {
|
||||||
wgDisableSomeRoamingForBrokenMobileSemantics(handle)
|
wgDisableSomeRoamingForBrokenMobileSemantics(handle)
|
||||||
wgBumpSockets(handle)
|
wgBumpSockets(handle)
|
||||||
} else {
|
} else {
|
||||||
self.logHandler(.info, "Connectivity offline, pausing backend.")
|
self.logHandler(.verbose, "Connectivity offline, pausing backend.")
|
||||||
|
|
||||||
self.state = .temporaryShutdown(settingsGenerator)
|
self.state = .temporaryShutdown(settingsGenerator)
|
||||||
wgTurnOff(handle)
|
wgTurnOff(handle)
|
||||||
|
@ -408,7 +411,7 @@ public class WireGuardAdapter {
|
||||||
case .temporaryShutdown(let settingsGenerator):
|
case .temporaryShutdown(let settingsGenerator):
|
||||||
guard path.status.isSatisfiable else { return }
|
guard path.status.isSatisfiable else { return }
|
||||||
|
|
||||||
self.logHandler(.info, "Connectivity online, resuming backend.")
|
self.logHandler(.verbose, "Connectivity online, resuming backend.")
|
||||||
|
|
||||||
do {
|
do {
|
||||||
try self.setNetworkSettings(settingsGenerator.generateNetworkSettings())
|
try self.setNetworkSettings(settingsGenerator.generateNetworkSettings())
|
||||||
|
@ -436,9 +439,8 @@ public class WireGuardAdapter {
|
||||||
|
|
||||||
/// A enum describing WireGuard log levels defined in `api-ios.go`.
|
/// A enum describing WireGuard log levels defined in `api-ios.go`.
|
||||||
public enum WireGuardLogLevel: Int32 {
|
public enum WireGuardLogLevel: Int32 {
|
||||||
case debug = 0
|
case verbose = 0
|
||||||
case info = 1
|
case error = 1
|
||||||
case error = 2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private extension Network.NWPath.Status {
|
private extension Network.NWPath.Status {
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
# Copyright (C) 2018-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
# 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.
|
# 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
|
ARCHS ?= x86_64 arm64
|
||||||
SDK_NAME ?= macosx
|
PLATFORM_NAME ?= macosx
|
||||||
SDKROOT ?= $(shell xcrun --sdk $(SDK_NAME) --show-sdk-path)
|
SDKROOT ?= $(shell xcrun --sdk $(PLATFORM_NAME) --show-sdk-path)
|
||||||
CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out
|
CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out
|
||||||
CONFIGURATION_TEMP_DIR ?= $(CURDIR)/.tmp
|
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
|
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_arm64 := arm64
|
||||||
GOARCH_x86_64 := amd64
|
GOARCH_x86_64 := amd64
|
||||||
|
GOOS_macosx := darwin
|
||||||
|
GOOS_iphoneos := ios
|
||||||
|
|
||||||
build: $(DESTDIR)/libwg-go.a
|
build: $(DESTDIR)/libwg-go.a
|
||||||
version-header: $(DESTDIR)/wireguard-go-version.h
|
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_ENABLED := 1
|
||||||
$(BUILDDIR)/libwg-go-$(1).a: export CGO_CFLAGS := $(CFLAGS_PREFIX) $(ARCH)
|
$(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 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: export GOARCH := $(GOARCH_$(1))
|
||||||
$(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/.prepared go.mod
|
$(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"
|
rm -f "$(BUILDDIR)/libwg-go-$(1).h"
|
||||||
endef
|
endef
|
||||||
$(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH))))
|
$(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH))))
|
||||||
|
|
||||||
$(DESTDIR)/wireguard-go-version.h: $(GOROOT)/.prepared go.mod
|
$(DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared
|
||||||
go list -m golang.zx2c4.com/wireguard | sed -n 's/.*v\([0-9.]*\).*/#define WIREGUARD_GO_VERSION "\1"/p' > "$@"
|
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)
|
$(DESTDIR)/libwg-go.a: $(foreach ARCH,$(ARCHS),$(BUILDDIR)/libwg-go-$(ARCH).a)
|
||||||
@mkdir -vp "$(DESTDIR)"
|
@mkdir -vp "$(DESTDIR)"
|
||||||
|
|
|
@ -14,36 +14,41 @@ package main
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"fmt"
|
||||||
"log"
|
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"runtime/debug"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
|
"golang.zx2c4.com/wireguard/conn"
|
||||||
"golang.zx2c4.com/wireguard/device"
|
"golang.zx2c4.com/wireguard/device"
|
||||||
"golang.zx2c4.com/wireguard/tun"
|
"golang.zx2c4.com/wireguard/tun"
|
||||||
)
|
)
|
||||||
|
|
||||||
var loggerFunc unsafe.Pointer
|
var loggerFunc unsafe.Pointer
|
||||||
var loggerCtx unsafe.Pointer
|
var loggerCtx unsafe.Pointer
|
||||||
var versionString *C.char
|
|
||||||
|
|
||||||
type CLogger struct {
|
type CLogger int
|
||||||
level C.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 {
|
if uintptr(loggerFunc) == 0 {
|
||||||
return 0, errors.New("No logger initialized")
|
return
|
||||||
}
|
}
|
||||||
message := C.CString(string(p))
|
C.callLogger(loggerFunc, loggerCtx, C.int(l), cstring(fmt.Sprintf(format, args...)))
|
||||||
C.callLogger(loggerFunc, loggerCtx, l.level, message)
|
|
||||||
C.free(unsafe.Pointer(message))
|
|
||||||
return len(p), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type tunnelHandle struct {
|
type tunnelHandle struct {
|
||||||
|
@ -54,7 +59,6 @@ type tunnelHandle struct {
|
||||||
var tunnelHandles = make(map[int32]tunnelHandle)
|
var tunnelHandles = make(map[int32]tunnelHandle)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
versionString = C.CString(device.WireGuardGoVersion)
|
|
||||||
signals := make(chan os.Signal)
|
signals := make(chan os.Signal)
|
||||||
signal.Notify(signals, unix.SIGUSR2)
|
signal.Notify(signals, unix.SIGUSR2)
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -81,40 +85,39 @@ func wgSetLogger(context, loggerFn uintptr) {
|
||||||
//export wgTurnOn
|
//export wgTurnOn
|
||||||
func wgTurnOn(settings *C.char, tunFd int32) int32 {
|
func wgTurnOn(settings *C.char, tunFd int32) int32 {
|
||||||
logger := &device.Logger{
|
logger := &device.Logger{
|
||||||
Debug: log.New(&CLogger{level: 0}, "", 0),
|
Verbosef: CLogger(0).Printf,
|
||||||
Info: log.New(&CLogger{level: 1}, "", 0),
|
Errorf: CLogger(1).Printf,
|
||||||
Error: log.New(&CLogger{level: 2}, "", 0),
|
|
||||||
}
|
}
|
||||||
dupTunFd, err := unix.Dup(int(tunFd))
|
dupTunFd, err := unix.Dup(int(tunFd))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error.Println(err)
|
logger.Errorf("Unable to dup tun fd: %v", err)
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
err = unix.SetNonblock(dupTunFd, true)
|
err = unix.SetNonblock(dupTunFd, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error.Println(err)
|
logger.Errorf("Unable to set tun fd as non blocking: %v", err)
|
||||||
unix.Close(dupTunFd)
|
unix.Close(dupTunFd)
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(dupTunFd), "/dev/tun"), 0)
|
tun, err := tun.CreateTUNFromFile(os.NewFile(uintptr(dupTunFd), "/dev/tun"), 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error.Println(err)
|
logger.Errorf("Unable to create new tun device from fd: %v", err)
|
||||||
unix.Close(dupTunFd)
|
unix.Close(dupTunFd)
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
logger.Info.Println("Attaching to interface")
|
logger.Verbosef("Attaching to interface")
|
||||||
dev := device.NewDevice(tun, logger)
|
dev := device.NewDevice(tun, conn.NewStdNetBind(), logger)
|
||||||
|
|
||||||
err = dev.IpcSet(C.GoString(settings))
|
err = dev.IpcSet(C.GoString(settings))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error.Println(err)
|
logger.Errorf("Unable to set IPC settings: %v", err)
|
||||||
unix.Close(dupTunFd)
|
unix.Close(dupTunFd)
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
dev.Up()
|
dev.Up()
|
||||||
logger.Info.Println("Device started")
|
logger.Verbosef("Device started")
|
||||||
|
|
||||||
var i int32
|
var i int32
|
||||||
for i = 0; i < math.MaxInt32; i++ {
|
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))
|
err := dev.IpcSet(C.GoString(settings))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dev.Error.Println(err)
|
dev.Errorf("Unable to set IPC settings: %v", err)
|
||||||
if ipcErr, ok := err.(*device.IPCError); ok {
|
if ipcErr, ok := err.(*device.IPCError); ok {
|
||||||
return ipcErr.ErrorCode()
|
return ipcErr.ErrorCode()
|
||||||
}
|
}
|
||||||
|
@ -183,10 +186,10 @@ func wgBumpSockets(tunnelHandle int32) {
|
||||||
dev.SendKeepalivesToPeersWithCurrentKeypair()
|
dev.SendKeepalivesToPeersWithCurrentKeypair()
|
||||||
return
|
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)
|
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
|
//export wgVersion
|
||||||
func wgVersion() *C.char {
|
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() {}
|
func main() {}
|
|
@ -1,10 +1,8 @@
|
||||||
module golang.zx2c4.com/wireguard/ios
|
module golang.zx2c4.com/wireguard/apple
|
||||||
|
|
||||||
go 1.15
|
go 1.16
|
||||||
|
|
||||||
require (
|
require (
|
||||||
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirect
|
golang.org/x/sys v0.0.0-20210308170721-88b6017d0656
|
||||||
golang.org/x/net v0.0.0-20201216054612-986b41b23924 // indirect
|
golang.zx2c4.com/wireguard v0.0.0-20210307162820-f4695db51c39
|
||||||
golang.org/x/sys v0.0.0-20201223074533-0d417f636930
|
|
||||||
golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -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-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-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=
|
||||||
golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/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/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
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-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
|
||||||
golang.org/x/net v0.0.0-20201216054612-986b41b23924 h1:QsnDpLLOKwHBBDa8nDws4DYNc/ryVW2vCpxCs09d4PY=
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
golang.org/x/net v0.0.0-20201216054612-986b41b23924/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-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-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-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-20210305215415-5cdee2b1b5a0/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-20210308170721-88b6017d0656 h1:FuBaiPCiXkq4v+JY5JEGPU/HwEZwpVyDbu/KBz9fU+4=
|
||||||
golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
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-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
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.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
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.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.0-20210307162820-f4695db51c39 h1:yv331J9aB1fuvxzneUKsRnWyhwK+aj495rADUXSP7Uk=
|
||||||
golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340/go.mod h1:ITsWNpkFv78VPB7f8MiyuxeEMcHR4jfxHGCJLPP3GHs=
|
golang.zx2c4.com/wireguard v0.0.0-20210307162820-f4695db51c39/go.mod h1:ojGPy+9W6ZSM8anL+xC67fvh8zPQJwA6KpFOHyDWLX4=
|
||||||
|
|
|
@ -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>
|
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
|
||||||
Date: Wed, 9 Dec 2020 14:07:06 +0100
|
Date: Wed, 9 Dec 2020 14:07:06 +0100
|
||||||
Subject: [PATCH] runtime: use libc_mach_continuous_time in nanotime on Darwin
|
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(-)
|
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/runtime/sys_darwin.go b/src/runtime/sys_darwin.go
|
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
|
--- a/src/runtime/sys_darwin.go
|
||||||
+++ b/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_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_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_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_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_sigaction sigaction "/usr/lib/libSystem.B.dylib"
|
||||||
//go:cgo_import_dynamic libc_pthread_sigmask pthread_sigmask "/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
|
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
|
--- a/src/runtime/sys_darwin_amd64.s
|
||||||
+++ b/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
|
PUSHQ BP
|
||||||
MOVQ SP, BP
|
MOVQ SP, BP
|
||||||
MOVQ DI, BX
|
MOVQ DI, BX
|
||||||
|
@ -44,10 +44,10 @@ index 825852d673..5a8b994fb1 100644
|
||||||
MOVL timebase<>+machTimebaseInfo_numer(SB), SI
|
MOVL timebase<>+machTimebaseInfo_numer(SB), SI
|
||||||
MOVL timebase<>+machTimebaseInfo_denom(SB), DI // atomic read
|
MOVL timebase<>+machTimebaseInfo_denom(SB), DI // atomic read
|
||||||
diff --git a/src/runtime/sys_darwin_arm64.s b/src/runtime/sys_darwin_arm64.s
|
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
|
--- a/src/runtime/sys_darwin_arm64.s
|
||||||
+++ b/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
|
TEXT runtime·nanotime_trampoline(SB),NOSPLIT,$40
|
||||||
MOVD R0, R19
|
MOVD R0, R19
|
||||||
|
@ -57,5 +57,5 @@ index 585d4f2c64..c556d88730 100644
|
||||||
MOVW timebase<>+machTimebaseInfo_numer(SB), R20
|
MOVW timebase<>+machTimebaseInfo_numer(SB), R20
|
||||||
MOVD $timebase<>+machTimebaseInfo_denom(SB), R21
|
MOVD $timebase<>+machTimebaseInfo_denom(SB), R21
|
||||||
--
|
--
|
||||||
2.29.2
|
2.30.1
|
||||||
|
|
||||||
|
|
|
@ -109,10 +109,8 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
|
||||||
extension WireGuardLogLevel {
|
extension WireGuardLogLevel {
|
||||||
var osLogLevel: OSLogType {
|
var osLogLevel: OSLogType {
|
||||||
switch self {
|
switch self {
|
||||||
case .debug:
|
case .verbose:
|
||||||
return .debug
|
return .debug
|
||||||
case .info:
|
|
||||||
return .info
|
|
||||||
case .error:
|
case .error:
|
||||||
return .error
|
return .error
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue