diff options
| author | Emīls <emils@mullvad.net> | 2020-02-11 20:09:54 +0000 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2020-02-13 11:29:54 +0100 |
| commit | 23fa78689ce2c1db56596b36a84b35f0307cd79b (patch) | |
| tree | fb3b82d9ac4f5564660f23484e429847f0c5c299 /wireguard | |
| parent | 57f3160281a6acea74c8bbc44cd96722c7ddcaa4 (diff) | |
| download | mullvadvpn-23fa78689ce2c1db56596b36a84b35f0307cd79b.tar.xz mullvadvpn-23fa78689ce2c1db56596b36a84b35f0307cd79b.zip | |
Fix file permissions and all the things
Use chrono in talpid-core on all platforms
Resolve unused imports and android errors
Correct formatting
Fix git attributes to use LF on Windows for go.mod
Fix libwg_default.go
Fix libwg_android.go
Fix logging context management
Fix return values
Fix conditional compilation statement
Fix go formatting
Diffstat (limited to 'wireguard')
| -rwxr-xr-x[-rw-r--r--] | wireguard/libwg/build-android.sh | 0 | ||||
| -rw-r--r-- | wireguard/libwg/libwg.go | 9 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_android.go | 27 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_default.go | 27 | ||||
| -rw-r--r-- | wireguard/libwg/libwg_windows.go | 36 |
5 files changed, 50 insertions, 49 deletions
diff --git a/wireguard/libwg/build-android.sh b/wireguard/libwg/build-android.sh index 4f1849aa75..4f1849aa75 100644..100755 --- a/wireguard/libwg/build-android.sh +++ b/wireguard/libwg/build-android.sh diff --git a/wireguard/libwg/libwg.go b/wireguard/libwg/libwg.go index 773ce45f08..51c01c8976 100644 --- a/wireguard/libwg/libwg.go +++ b/wireguard/libwg/libwg.go @@ -14,9 +14,14 @@ import ( "bytes" "runtime" "unsafe" - - "golang.zx2c4.com/wireguard/device" + "github.com/mullvad/mullvadvpn-app/wireguard/libwg/tunnelcontainer" + "golang.zx2c4.com/wireguard/device" +) + +const ( + ERROR_GENERAL_FAILURE = -1 + ERROR_INTERMITTENT_FAILURE = -2 ) var tunnels tunnelcontainer.Container diff --git a/wireguard/libwg/libwg_android.go b/wireguard/libwg/libwg_android.go index fe9a951289..56d681b439 100644 --- a/wireguard/libwg/libwg_android.go +++ b/wireguard/libwg/libwg_android.go @@ -11,7 +11,7 @@ import ( "bufio" "strings" "unsafe" - + "golang.org/x/sys/unix" "golang.zx2c4.com/wireguard/device" @@ -26,11 +26,6 @@ import ( type LogSink = unsafe.Pointer type LogContext = unsafe.Pointer -const ( - ERROR_GENERAL_FAILURE = -1 - ERROR_INTERMITTENT_FAILURE = -2 -) - //export wgTurnOn func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext) int32 { logger := logging.NewLogger(logSink, logContext) @@ -53,27 +48,27 @@ func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext) device := device.NewDevice(tunDevice, logger) - err = device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings))) - if err != nil { - logger.Error.Println(err) + setErr := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings))) + if setErr != nil { + logger.Error.Println(setErr) device.Close() return ERROR_INTERMITTENT_FAILURE } device.Up() - context := tunnelcontainer.Context { + context := tunnelcontainer.Context{ Device: device, Logger: logger, } - + handle, err := tunnels.Insert(context) if err != nil { logger.Error.Println(err) device.Close() return ERROR_GENERAL_FAILURE } - + return handle } @@ -81,11 +76,11 @@ func wgTurnOn(cSettings *C.char, fd int, logSink LogSink, logContext LogContext) func wgGetSocketV4(tunnelHandle int32) int32 { tunnel, err := tunnels.Get(tunnelHandle) if err != nil { - return -1 + return ERROR_GENERAL_FAILURE } fd, err := tunnel.Device.PeekLookAtSocketFd4() if err != nil { - return -1 + return ERROR_GENERAL_FAILURE } return int32(fd) } @@ -94,11 +89,11 @@ func wgGetSocketV4(tunnelHandle int32) int32 { func wgGetSocketV6(tunnelHandle int32) int32 { tunnel, err := tunnels.Get(tunnelHandle) if err != nil { - return -1 + return ERROR_GENERAL_FAILURE } fd, err := tunnel.Device.PeekLookAtSocketFd6() if err != nil { - return -1 + return ERROR_GENERAL_FAILURE } return int32(fd) } diff --git a/wireguard/libwg/libwg_default.go b/wireguard/libwg/libwg_default.go index 81f5232f9c..0cceee2ff8 100644 --- a/wireguard/libwg/libwg_default.go +++ b/wireguard/libwg/libwg_default.go @@ -19,7 +19,7 @@ import ( "golang.zx2c4.com/wireguard/device" "golang.zx2c4.com/wireguard/tun" - + "github.com/mullvad/mullvadvpn-app/wireguard/libwg/logging" "github.com/mullvad/mullvadvpn-app/wireguard/libwg/tunnelcontainer" ) @@ -31,11 +31,12 @@ type LogContext = unsafe.Pointer //export wgTurnOn func wgTurnOn(mtu int, cSettings *C.char, fd int, logSink LogSink, logContext LogContext) int32 { + logger := logging.NewLogger(logSink, logContext) if cSettings == nil { logger.Error.Println("cSettings is null") - return -1 + return ERROR_GENERAL_FAILURE } settings := C.GoString(cSettings) @@ -44,33 +45,33 @@ func wgTurnOn(mtu int, cSettings *C.char, fd int, logSink LogSink, logContext Lo if err != nil { logger.Error.Println(err) if err.Error() == "bad file descriptor" { - return -2 + return ERROR_INTERMITTENT_FAILURE } - return -1 + return ERROR_GENERAL_FAILURE } device := device.NewDevice(tunDevice, logger) - err = device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings))) - if err != nil { - logger.Error.Println(err) + setErr := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings))) + if setErr != nil { + logger.Error.Println(setErr) device.Close() - return -2 + return ERROR_INTERMITTENT_FAILURE } device.Up() - - context := tunnelcontainer.Context { + + context := tunnelcontainer.Context{ Device: device, Logger: logger, } - + handle, err := tunnels.Insert(context) if err != nil { logger.Error.Println(err) device.Close() - return -1 + return ERROR_GENERAL_FAILURE } - + return handle } diff --git a/wireguard/libwg/libwg_windows.go b/wireguard/libwg/libwg_windows.go index c27285b6d1..ba47c46f2b 100644 --- a/wireguard/libwg/libwg_windows.go +++ b/wireguard/libwg/libwg_windows.go @@ -9,15 +9,15 @@ package main import ( "C" "bufio" - "unsafe" "strings" - + "unsafe" + "golang.org/x/sys/windows" "golang.zx2c4.com/wireguard/device" "golang.zx2c4.com/wireguard/tun" "golang.zx2c4.com/wireguard/windows/tunnel/winipcfg" - + "github.com/mullvad/mullvadvpn-app/wireguard/libwg/interfacewatcher" "github.com/mullvad/mullvadvpn-app/wireguard/libwg/logging" "github.com/mullvad/mullvadvpn-app/wireguard/libwg/tunnelcontainer" @@ -34,24 +34,24 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l if cIfaceName == nil { logger.Error.Println("cIfaceName is null") - return -1 + return ERROR_GENERAL_FAILURE } if cSettings == nil { logger.Error.Println("cSettings is null") - return -1 + return ERROR_GENERAL_FAILURE } settings := C.GoString(cSettings) ifaceName := C.GoString(cIfaceName) // {AFE43773-E1F8-4EBB-8536-576AB86AFE9A} - networkId := windows.GUID { 0xafe43773, 0xe1f8, 0x4ebb, [8]byte{ 0x85, 0x36, 0x57, 0x6a, 0xb8, 0x6a, 0xfe, 0x9a } } + networkId := windows.GUID{0xafe43773, 0xe1f8, 0x4ebb, [8]byte{0x85, 0x36, 0x57, 0x6a, 0xb8, 0x6a, 0xfe, 0x9a}} watcher, err := interfacewatcher.NewWatcher() if err != nil { logger.Error.Println(err) - return -1 + return ERROR_GENERAL_FAILURE } defer watcher.Destroy() @@ -59,7 +59,7 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l if err != nil { logger.Error.Println("Failed to create tunnel") logger.Error.Println(err) - return -1 + return ERROR_GENERAL_FAILURE } nativeTun := wintun.(*tun.NativeTun) @@ -68,7 +68,7 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l if err != nil { nativeTun.Close() logger.Error.Println("Failed to determine name of wintun adapter") - return -1 + return ERROR_GENERAL_FAILURE } if actualInterfaceName != ifaceName { @@ -76,7 +76,7 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l // This indicates there is already an adapter with the name we intended to use. nativeTun.Close() logger.Error.Println("Failed to create adapter with specific name") - return -1 + return ERROR_GENERAL_FAILURE } device := device.NewDevice(wintun, logger) @@ -86,18 +86,18 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l logger.Error.Println("Failed to set device configuration") logger.Error.Println(setError) device.Close() - return -1 + return ERROR_GENERAL_FAILURE } device.Up() interfaces := []interfacewatcher.Event{ { - Luid: winipcfg.LUID(nativeTun.LUID()), + Luid: winipcfg.LUID(nativeTun.LUID()), Family: windows.AF_INET, }, { - Luid: winipcfg.LUID(nativeTun.LUID()), + Luid: winipcfg.LUID(nativeTun.LUID()), Family: windows.AF_INET6, }, } @@ -107,23 +107,23 @@ func wgTurnOn(cIfaceName *C.char, mtu int, cSettings *C.char, logSink LogSink, l if !watcher.Join(interfaces, 5) { logger.Error.Println("Failed to wait for IP interfaces to become available") device.Close() - return -1 + return ERROR_GENERAL_FAILURE } logger.Debug.Println("Interfaces OK") - context := tunnelcontainer.Context { + context := tunnelcontainer.Context{ Device: device, Logger: logger, } - + handle, err := tunnels.Insert(context) if err != nil { logger.Error.Println(err) device.Close() - return -1 + return ERROR_GENERAL_FAILURE } - + return handle } |
