summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-03-10 12:43:04 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-03-10 12:43:04 +0100
commitf59ebb32fbe3d08a17e6b195e989e68cf9616555 (patch)
tree491e7e0526183c2785d8e67588f08cc39367ad12
parent2b1e8808beaaf8c87985dcb86b0f6abb10e75b49 (diff)
parent3f0c7df42322bee086e3e9d1b71249ddf0e73914 (diff)
downloadmullvadvpn-f59ebb32fbe3d08a17e6b195e989e68cf9616555.tar.xz
mullvadvpn-f59ebb32fbe3d08a17e6b195e989e68cf9616555.zip
Merge branch 'upgrade-wg-go'
-rw-r--r--talpid-core/src/tunnel/wireguard/logging.rs6
-rw-r--r--wireguard/libwg/go.mod7
-rw-r--r--wireguard/libwg/go.sum33
-rw-r--r--wireguard/libwg/libwg.go8
-rw-r--r--wireguard/libwg/libwg_android.go10
-rw-r--r--wireguard/libwg/libwg_default.go11
-rw-r--r--wireguard/libwg/libwg_windows.go36
-rw-r--r--wireguard/libwg/logging/logging.go15
8 files changed, 58 insertions, 68 deletions
diff --git a/talpid-core/src/tunnel/wireguard/logging.rs b/talpid-core/src/tunnel/wireguard/logging.rs
index d6a77acc2d..64f2f71bf5 100644
--- a/talpid-core/src/tunnel/wireguard/logging.rs
+++ b/talpid-core/src/tunnel/wireguard/logging.rs
@@ -66,8 +66,7 @@ pub unsafe extern "system" fn logging_callback(
};
let level_str = match level {
- WG_GO_LOG_DEBUG => "DEBUG",
- WG_GO_LOG_INFO => "INFO",
+ WG_GO_LOG_VERBOSE => "VERBOSE",
WG_GO_LOG_ERROR | _ => "ERROR",
};
@@ -88,5 +87,4 @@ pub type WgLogLevel = u32;
// wireguard-go supports log levels 0 through 3 with 3 being the most verbose
// const WG_GO_LOG_SILENT: WgLogLevel = 0;
const WG_GO_LOG_ERROR: WgLogLevel = 1;
-const WG_GO_LOG_INFO: WgLogLevel = 2;
-const WG_GO_LOG_DEBUG: WgLogLevel = 3;
+const WG_GO_LOG_VERBOSE: WgLogLevel = 2;
diff --git a/wireguard/libwg/go.mod b/wireguard/libwg/go.mod
index 270a02357d..fe5a9011f5 100644
--- a/wireguard/libwg/go.mod
+++ b/wireguard/libwg/go.mod
@@ -3,7 +3,8 @@ module github.com/mullvad/mullvadvpn-app/wireguard/libwg
go 1.13
require (
- golang.org/x/sys v0.0.0-20201119102817-f84b799fce68
- golang.zx2c4.com/wireguard v0.0.20201118
- golang.zx2c4.com/wireguard/windows v0.3.1
+ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
+ golang.org/x/sys v0.0.0-20210303074136-134d130e1a04
+ golang.zx2c4.com/wireguard v0.0.0-20210225140808-70b7b7158fc9
+ golang.zx2c4.com/wireguard/windows v0.3.8
)
diff --git a/wireguard/libwg/go.sum b/wireguard/libwg/go.sum
index 9cd0a5bbe7..6329a5275a 100644
--- a/wireguard/libwg/go.sum
+++ b/wireguard/libwg/go.sum
@@ -1,26 +1,27 @@
-github.com/lxn/walk v0.0.0-20201123161058-0a7a9b4462c3/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ=
-github.com/lxn/win v0.0.0-20201111105847-2a20daff6a55/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
+github.com/lxn/walk v0.0.0-20210112085537-c389da54e794/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ=
+github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
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-20201117144127-c1f2f97bffc9 h1:phUcVbl53swtrUN8kQEXFhUxPlIlWyBfKmidCu7P95o=
-golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/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 h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
-golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/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-20201018230417-eeed37f84f13/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 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210225014209-683adc9d29d7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04 h1:cEhElsAv9LUt9ZUUocxzWe05oFLVd+AA2nstydTeI8g=
+golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/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/text v0.3.5-0.20201118010606-4482a914f523/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6-0.20210220033129-8f690f22cf1c/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.20201118 h1:QL8y2C7uO8T6z1GY+UX/hSeWiYEBurQkXjOTRFtCvXU=
-golang.zx2c4.com/wireguard v0.0.20201118/go.mod h1:Dz+cq5bnrai9EpgYj4GDof/+qaGzbRWbeaAOs1bUYa0=
-golang.zx2c4.com/wireguard/windows v0.3.1 h1:xdvnE/PWV/qUhN8RohAaC69OSlqGVLqOtJ2D+a/26JM=
-golang.zx2c4.com/wireguard/windows v0.3.1/go.mod h1:Mg+sBfB9ou/5VqVh0naiVc3S7sRlK8xMVvJ5Cxgdrr8=
+golang.zx2c4.com/wireguard v0.0.0-20210225140808-70b7b7158fc9 h1:TJSR8+LPfs2r4KYDa8DMfYm4RH/PdjY7GoyidowPqXo=
+golang.zx2c4.com/wireguard v0.0.0-20210225140808-70b7b7158fc9/go.mod h1:39ZQQ95hUxDxT7opsWy/rtfgvXXc8s30qfZ02df69Fo=
+golang.zx2c4.com/wireguard/windows v0.3.8 h1:FvfBEhdZZTwthLuPHdyP6zpivYL3enopxd4XpggAufM=
+golang.zx2c4.com/wireguard/windows v0.3.8/go.mod h1:lm7dxHcBuzMNq706Ge1tZKZKw4+19vG9dLOhoDX05HQ=
diff --git a/wireguard/libwg/libwg.go b/wireguard/libwg/libwg.go
index 521dee38df..82c6e8205f 100644
--- a/wireguard/libwg/libwg.go
+++ b/wireguard/libwg/libwg.go
@@ -16,7 +16,6 @@ import (
"unsafe"
"github.com/mullvad/mullvadvpn-app/wireguard/libwg/tunnelcontainer"
- "golang.zx2c4.com/wireguard/device"
)
const (
@@ -53,7 +52,7 @@ func wgGetConfig(tunnelHandle int32) *C.char {
settings := new(bytes.Buffer)
writer := bufio.NewWriter(settings)
if err := tunnel.Device.IpcGetOperation(writer); err != nil {
- tunnel.Logger.Error.Println("Failed to get config for tunnel: ", err)
+ tunnel.Logger.Errorf("Failed to get config for tunnel: %s\n", err)
return nil
}
writer.Flush()
@@ -65,9 +64,4 @@ func wgFreePtr(ptr unsafe.Pointer) {
C.free(ptr)
}
-//export wgVersion
-func wgVersion() *C.char {
- return C.CString(device.WireGuardGoVersion)
-}
-
func main() {}
diff --git a/wireguard/libwg/libwg_android.go b/wireguard/libwg/libwg_android.go
index d26f824065..e5c7eb5fe3 100644
--- a/wireguard/libwg/libwg_android.go
+++ b/wireguard/libwg/libwg_android.go
@@ -32,14 +32,14 @@ func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext)
logger := logging.NewLogger(logSink, logContext)
if cSettings == nil {
- logger.Error.Println("cSettings is null")
+ logger.Errorf("cSettings is null\n")
return ERROR_GENERAL_FAILURE
}
settings := C.GoString(cSettings)
tunDevice, _, err := tun.CreateUnmonitoredTUNFromFD(fd)
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
unix.Close(fd)
if err.Error() == "bad file descriptor" {
return ERROR_INTERMITTENT_FAILURE
@@ -47,11 +47,11 @@ func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext)
return ERROR_GENERAL_FAILURE
}
- device := device.NewDevice(tunDevice, logger)
+ device := device.NewDevice(tunDevice, conn.NewDefaultBind(), logger)
setErr := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings)))
if setErr != nil {
- logger.Error.Println(setErr)
+ logger.Errorf("%s\n", setErr)
device.Close()
return ERROR_INTERMITTENT_FAILURE
}
@@ -66,7 +66,7 @@ func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext)
handle, err := tunnels.Insert(context)
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
device.Close()
return ERROR_GENERAL_FAILURE
}
diff --git a/wireguard/libwg/libwg_default.go b/wireguard/libwg/libwg_default.go
index 6b553a86b7..7282c0ca8a 100644
--- a/wireguard/libwg/libwg_default.go
+++ b/wireguard/libwg/libwg_default.go
@@ -17,6 +17,7 @@ import (
"strings"
"unsafe"
+ "golang.zx2c4.com/wireguard/conn"
"golang.zx2c4.com/wireguard/device"
"golang.zx2c4.com/wireguard/tun"
@@ -35,7 +36,7 @@ func wgTurnOn(mtu int, cSettings *C.char, fd int, logSink LogSink, logContext Lo
logger := logging.NewLogger(logSink, logContext)
if cSettings == nil {
- logger.Error.Println("cSettings is null")
+ logger.Errorf("cSettings is null\n")
return ERROR_GENERAL_FAILURE
}
settings := C.GoString(cSettings)
@@ -43,18 +44,18 @@ func wgTurnOn(mtu int, cSettings *C.char, fd int, logSink LogSink, logContext Lo
file := os.NewFile(uintptr(fd), "")
tunDevice, err := tun.CreateTUNFromFile(file, mtu)
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
if err.Error() == "bad file descriptor" {
return ERROR_INTERMITTENT_FAILURE
}
return ERROR_GENERAL_FAILURE
}
- device := device.NewDevice(tunDevice, logger)
+ device := device.NewDevice(tunDevice, conn.NewDefaultBind(), logger)
setErr := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings)))
if setErr != nil {
- logger.Error.Println(setErr)
+ logger.Errorf("%s\n", setErr)
device.Close()
return ERROR_INTERMITTENT_FAILURE
}
@@ -68,7 +69,7 @@ func wgTurnOn(mtu int, cSettings *C.char, fd int, logSink LogSink, logContext Lo
handle, err := tunnels.Insert(context)
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
device.Close()
return ERROR_GENERAL_FAILURE
}
diff --git a/wireguard/libwg/libwg_windows.go b/wireguard/libwg/libwg_windows.go
index 3bbaee7b6a..42f27148b3 100644
--- a/wireguard/libwg/libwg_windows.go
+++ b/wireguard/libwg/libwg_windows.go
@@ -73,12 +73,12 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
}
if cIfaceName == nil {
- logger.Error.Println("cIfaceName is null")
+ logger.Errorf("cIfaceName is null\n")
return ERROR_GENERAL_FAILURE
}
if cSettings == nil {
- logger.Error.Println("cSettings is null")
+ logger.Errorf("cSettings is null\n")
return ERROR_GENERAL_FAILURE
}
@@ -90,7 +90,7 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
watcher, err := interfacewatcher.NewWatcher()
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
return ERROR_GENERAL_FAILURE
}
defer watcher.Destroy()
@@ -101,8 +101,8 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
wintun, err := tun.CreateTUNWithRequestedGUID(ifaceName, &networkId, mtu)
if err != nil {
- logger.Error.Println("Failed to create tunnel")
- logger.Error.Println(err)
+ logger.Errorf("Failed to create tunnel\n")
+ logger.Errorf("%s\n", err)
return ERROR_GENERAL_FAILURE
}
@@ -111,21 +111,21 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
actualInterfaceName, err := nativeTun.Name()
if err != nil {
nativeTun.Close()
- logger.Error.Println("Failed to determine name of wintun adapter")
+ logger.Errorf("Failed to determine name of wintun adapter\n")
return ERROR_GENERAL_FAILURE
}
if actualInterfaceName != ifaceName {
// WireGuard picked a different name for the adapter than the one we expected.
// This indicates there is already an adapter with the name we intended to use.
- logger.Debug.Println("Failed to create adapter with specific name")
+ logger.Verbosef("Failed to create adapter with specific name\n")
}
- device := device.NewDevice(wintun, logger)
+ device := device.NewDevice(wintun, conn.NewDefaultBind(), logger)
setError := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings)))
if setError != nil {
- logger.Error.Println("Failed to set device configuration")
- logger.Error.Println(setError)
+ logger.Errorf("Failed to set device configuration\n")
+ logger.Errorf("%s\n", setError)
device.Close()
return ERROR_GENERAL_FAILURE
}
@@ -134,15 +134,15 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
interfaces := createInterfaceWatcherEvents(waitOnIpv6, nativeTun.LUID())
- logger.Debug.Println("Waiting for interfaces to attach")
+ logger.Verbosef("Waiting for interfaces to attach\n")
if !watcher.Join(interfaces, 5) {
- logger.Error.Println("Failed to wait for IP interfaces to become available")
+ logger.Errorf("Failed to wait for IP interfaces to become available\n")
device.Close()
return ERROR_GENERAL_FAILURE
}
- logger.Debug.Println("Interfaces OK")
+ logger.Verbosef("Interfaces OK\n")
context := tunnelcontainer.Context{
Device: device,
@@ -151,7 +151,7 @@ func wgTurnOn(cIfaceName *C.char, mtu int, waitOnIpv6 bool, cSettings *C.char, c
handle, err := tunnels.Insert(context)
if err != nil {
- logger.Error.Println(err)
+ logger.Errorf("%s\n", err)
device.Close()
return ERROR_GENERAL_FAILURE
}
@@ -170,16 +170,16 @@ func wgRebindTunnelSocket(family uint16, interfaceIndex uint32) {
bind := tunnel.Device.Bind().(conn.BindSocketToInterface)
if family == windows.AF_INET {
- tunnel.Logger.Info.Printf("Binding v4 socket to interface %d (blackhole=%v)", interfaceIndex, blackhole)
+ tunnel.Logger.Verbosef("Binding v4 socket to interface %d (blackhole=%v)\n", interfaceIndex, blackhole)
err := bind.BindSocketToInterface4(interfaceIndex, blackhole)
if err != nil {
- tunnel.Logger.Info.Println(err)
+ tunnel.Logger.Verbosef("%s\n", err)
}
} else if family == windows.AF_INET6 {
- tunnel.Logger.Info.Printf("Binding v6 socket to interface %d (blackhole=%v)", interfaceIndex, blackhole)
+ tunnel.Logger.Verbosef("Binding v6 socket to interface %d (blackhole=%v)\n", interfaceIndex, blackhole)
err := bind.BindSocketToInterface6(interfaceIndex, blackhole)
if err != nil {
- tunnel.Logger.Info.Println(err)
+ tunnel.Logger.Verbosef("%s\n", err)
}
}
})
diff --git a/wireguard/libwg/logging/logging.go b/wireguard/libwg/logging/logging.go
index 8d831379fb..a917e96493 100644
--- a/wireguard/libwg/logging/logging.go
+++ b/wireguard/libwg/logging/logging.go
@@ -45,21 +45,16 @@ func (l *Logger) Write(message []byte) (int, error) {
func NewLogger(logSink LogSink, logContext LogContext) *device.Logger {
logger := new(device.Logger)
- logger.Debug = log.New(
- &Logger{sink: logSink, context: logContext, level: device.LogLevelDebug},
+ logger.Verbosef = log.New(
+ &Logger{sink: logSink, context: logContext, level: device.LogLevelVerbose},
"",
0,
- )
- logger.Info = log.New(
- &Logger{sink: logSink, context: logContext, level: device.LogLevelInfo},
- "",
- 0,
- )
- logger.Error = log.New(
+ ).Printf
+ logger.Errorf = log.New(
&Logger{sink: logSink, context: logContext, level: device.LogLevelError},
"",
0,
- )
+ ).Printf
return logger
}