summaryrefslogtreecommitdiffhomepage
path: root/wireguard
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-02-11 20:09:54 +0000
committerOdd Stranne <odd@mullvad.net>2020-02-13 11:29:54 +0100
commit23fa78689ce2c1db56596b36a84b35f0307cd79b (patch)
treefb3b82d9ac4f5564660f23484e429847f0c5c299 /wireguard
parent57f3160281a6acea74c8bbc44cd96722c7ddcaa4 (diff)
downloadmullvadvpn-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.sh0
-rw-r--r--wireguard/libwg/libwg.go9
-rw-r--r--wireguard/libwg/libwg_android.go27
-rw-r--r--wireguard/libwg/libwg_default.go27
-rw-r--r--wireguard/libwg/libwg_windows.go36
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
}