diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-03-10 12:43:04 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-03-10 12:43:04 +0100 |
| commit | f59ebb32fbe3d08a17e6b195e989e68cf9616555 (patch) | |
| tree | 491e7e0526183c2785d8e67588f08cc39367ad12 | |
| parent | 2b1e8808beaaf8c87985dcb86b0f6abb10e75b49 (diff) | |
| parent | 3f0c7df42322bee086e3e9d1b71249ddf0e73914 (diff) | |
| download | mullvadvpn-f59ebb32fbe3d08a17e6b195e989e68cf9616555.tar.xz mullvadvpn-f59ebb32fbe3d08a17e6b195e989e68cf9616555.zip | |
Merge branch 'upgrade-wg-go'
| -rw-r--r-- | talpid-core/src/tunnel/wireguard/logging.rs | 6 | ||||
| -rw-r--r-- | wireguard/libwg/go.mod | 7 | ||||
| -rw-r--r-- | wireguard/libwg/go.sum | 33 | ||||
| -rw-r--r-- | wireguard/libwg/libwg.go | 8 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_android.go | 10 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_default.go | 11 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_windows.go | 36 | ||||
| -rw-r--r-- | wireguard/libwg/logging/logging.go | 15 |
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 } |
