aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-12-15 13:16:35 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2020-12-15 13:16:52 +0100
commit27b32e60b29712c7bb9bc877b9409bbe63c63554 (patch)
treeabb6807d7022aba6fa40b6355075db2df7b42e5c
parentRevert "[REVERT ME SOON] TunnelsManager: Workaround for macOS Catalina deleting tunnels arbitrarily" (diff)
downloadwireguard-apple-27b32e60b29712c7bb9bc877b9409bbe63c63554.tar.xz
wireguard-apple-27b32e60b29712c7bb9bc877b9409bbe63c63554.zip
WireGuardKitGo: update to latest wireguard-go tag
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--Sources/WireGuardKit/WireGuardAdapter.swift16
-rw-r--r--Sources/WireGuardKitGo/api-ios.go26
-rw-r--r--Sources/WireGuardKitGo/go.mod8
-rw-r--r--Sources/WireGuardKitGo/go.sum34
-rw-r--r--Sources/WireGuardKitGo/wireguard.h2
5 files changed, 48 insertions, 38 deletions
diff --git a/Sources/WireGuardKit/WireGuardAdapter.swift b/Sources/WireGuardKit/WireGuardAdapter.swift
index f2e4040..6c2e956 100644
--- a/Sources/WireGuardKit/WireGuardAdapter.swift
+++ b/Sources/WireGuardKit/WireGuardAdapter.swift
@@ -152,10 +152,6 @@ public class WireGuardAdapter {
return
}
- #if os(macOS)
- wgEnableRoaming(true)
- #endif
-
let networkMonitor = NWPathMonitor()
networkMonitor.pathUpdateHandler = { [weak self] path in
self?.didReceivePathUpdate(path: path)
@@ -238,6 +234,9 @@ public class WireGuardAdapter {
self.logEndpointResolutionResults(resolutionResults)
wgSetConfig(handle, wgConfig)
+ #if os(iOS)
+ wgDisableSomeRoamingForBrokenMobileSemantics(handle)
+ #endif
self.state = .started(handle, settingsGenerator)
@@ -346,11 +345,13 @@ public class WireGuardAdapter {
}
let handle = wgTurnOn(wgConfig, tunnelFileDescriptor)
- if handle >= 0 {
- return handle
- } else {
+ if handle < 0 {
throw WireGuardAdapterError.startWireGuardBackend(handle)
}
+ #if os(iOS)
+ wgDisableSomeRoamingForBrokenMobileSemantics(handle)
+ #endif
+ return handle
}
/// Resolves the hostnames in the given tunnel configuration and return settings generator.
@@ -398,6 +399,7 @@ public class WireGuardAdapter {
self.logEndpointResolutionResults(resolutionResults)
wgSetConfig(handle, wgConfig)
+ wgDisableSomeRoamingForBrokenMobileSemantics(handle)
wgBumpSockets(handle)
} else {
self.logHandler(.info, "Connectivity offline, pausing backend.")
diff --git a/Sources/WireGuardKitGo/api-ios.go b/Sources/WireGuardKitGo/api-ios.go
index 0f80384..eaadea1 100644
--- a/Sources/WireGuardKitGo/api-ios.go
+++ b/Sources/WireGuardKitGo/api-ios.go
@@ -56,7 +56,6 @@ var tunnelHandles = make(map[int32]tunnelHandle)
func init() {
versionString = C.CString(device.WireGuardGoVersion)
- device.RoamingDisabled = true
signals := make(chan os.Signal)
signal.Notify(signals, unix.SIGUSR2)
go func() {
@@ -74,11 +73,6 @@ func init() {
}()
}
-//export wgEnableRoaming
-func wgEnableRoaming(enabled bool) {
- device.RoamingDisabled = !enabled
-}
-
//export wgSetLogger
func wgSetLogger(context, loggerFn uintptr) {
loggerCtx = unsafe.Pointer(context)
@@ -149,14 +143,17 @@ func wgTurnOff(tunnelHandle int32) {
//export wgSetConfig
func wgSetConfig(tunnelHandle int32, settings *C.char) int64 {
- device, ok := tunnelHandles[tunnelHandle]
+ dev, ok := tunnelHandles[tunnelHandle]
if !ok {
return 0
}
- err := device.IpcSetOperation(bufio.NewReader(strings.NewReader(C.GoString(settings))))
+ err := dev.IpcSetOperation(bufio.NewReader(strings.NewReader(C.GoString(settings))))
if err != nil {
- device.Error.Println(err)
- return err.ErrorCode()
+ dev.Error.Println(err)
+ if ipcErr, ok := err.(*device.IPCError); ok {
+ return ipcErr.ErrorCode()
+ }
+ return -1
}
return 0
}
@@ -187,6 +184,15 @@ func wgBumpSockets(tunnelHandle int32) {
device.SendKeepalivesToPeersWithCurrentKeypair()
}
+//export wgDisableSomeRoamingForBrokenMobileSemantics
+func wgDisableSomeRoamingForBrokenMobileSemantics(tunnelHandle int32) {
+ device, ok := tunnelHandles[tunnelHandle]
+ if !ok {
+ return
+ }
+ device.DisableSomeRoamingForBrokenMobileSemantics()
+}
+
//export wgVersion
func wgVersion() *C.char {
return versionString
diff --git a/Sources/WireGuardKitGo/go.mod b/Sources/WireGuardKitGo/go.mod
index eddf20c..7eaab21 100644
--- a/Sources/WireGuardKitGo/go.mod
+++ b/Sources/WireGuardKitGo/go.mod
@@ -3,8 +3,8 @@ module golang.zx2c4.com/wireguard/ios
go 1.13
require (
- golang.org/x/crypto v0.0.0-20200117160349-530e935923ad // indirect
- golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect
- golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9
- golang.zx2c4.com/wireguard v0.0.20200121
+ golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 // indirect
+ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 // indirect
+ golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e
+ golang.zx2c4.com/wireguard v0.0.20201118
)
diff --git a/Sources/WireGuardKitGo/go.sum b/Sources/WireGuardKitGo/go.sum
index 74b3b28..3f4e59c 100644
--- a/Sources/WireGuardKitGo/go.sum
+++ b/Sources/WireGuardKitGo/go.sum
@@ -1,22 +1,24 @@
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc h1:c0o/qxkaO2LF5t6fQrT4b5hzyggAkLLlCUjqfRxd8Q4=
-golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200117160349-530e935923ad h1:Jh8cai0fqIK+f6nG0UgPW5wFk8wmiMhM3AyciDBdtQg=
-golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604=
+golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/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-20191003171128-d98b1b443823 h1:Ypyv6BNJh07T1pUSrehkLemqPKXhus2MkfktJ91kRh4=
-golang.org/x/net v0.0.0-20191003171128-d98b1b443823/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 h1:lwlPPsmjDKK0J6eG6xDWd5XPehI0R024zxjDnw3esPA=
+golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/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-20191003212358-c178f38b412c h1:6Zx7DRlKXf79yfxuQ/7GqV3w2y7aDsk6bGg0MzF5RVU=
-golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9 h1:1/DFK4b7JH8DmkqhUk48onnSfrPzImPoVxuomtbT2nk=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/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-20201117222635-ba5294a509c7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs=
+golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/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.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+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.20200121 h1:vcswa5Q6f+sylDfjqyrVNNrjsFUUbPsgAQTBCAg/Qf8=
-golang.zx2c4.com/wireguard v0.0.20200121/go.mod h1:P2HsVp8SKwZEufsnezXZA4GRX/T49/HlU7DGuelXsU4=
+golang.zx2c4.com/wireguard v0.0.20201118 h1:QL8y2C7uO8T6z1GY+UX/hSeWiYEBurQkXjOTRFtCvXU=
+golang.zx2c4.com/wireguard v0.0.20201118/go.mod h1:Dz+cq5bnrai9EpgYj4GDof/+qaGzbRWbeaAOs1bUYa0=
diff --git a/Sources/WireGuardKitGo/wireguard.h b/Sources/WireGuardKitGo/wireguard.h
index 9da8cef..b49464e 100644
--- a/Sources/WireGuardKitGo/wireguard.h
+++ b/Sources/WireGuardKitGo/wireguard.h
@@ -11,13 +11,13 @@
#include <stdbool.h>
typedef void(*logger_fn_t)(void *context, int level, const char *msg);
-extern void wgEnableRoaming(bool enabled);
extern void wgSetLogger(void *context, logger_fn_t logger_fn);
extern int wgTurnOn(const char *settings, int32_t tun_fd);
extern void wgTurnOff(int handle);
extern int64_t wgSetConfig(int handle, const char *settings);
extern char *wgGetConfig(int handle);
extern void wgBumpSockets(int handle);
+extern void wgDisableSomeRoamingForBrokenMobileSemantics(int handle);
extern const char *wgVersion();
#endif