aboutsummaryrefslogtreecommitdiffstats
path: root/wireguard-go-bridge/src
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2018-10-27 00:57:58 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2018-10-27 01:03:28 +0200
commit95fefbdb39dfdac91567c6454e74a354203ef03f (patch)
tree161174e725a7273c15c0e3685a46cef18b0e547c /wireguard-go-bridge/src
parentbridge: go get requires arch paths (diff)
downloadwireguard-apple-95fefbdb39dfdac91567c6454e74a354203ef03f.tar.xz
wireguard-apple-95fefbdb39dfdac91567c6454e74a354203ef03f.zip
Allow customizing MTU
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'wireguard-go-bridge/src')
-rw-r--r--wireguard-go-bridge/src/api-ios.go4
-rw-r--r--wireguard-go-bridge/src/tun/tun_ios.go11
2 files changed, 11 insertions, 4 deletions
diff --git a/wireguard-go-bridge/src/api-ios.go b/wireguard-go-bridge/src/api-ios.go
index dcc588f..7bb648e 100644
--- a/wireguard-go-bridge/src/api-ios.go
+++ b/wireguard-go-bridge/src/api-ios.go
@@ -79,7 +79,7 @@ func wgSetLogger(loggerFn uintptr) {
}
//export wgTurnOn
-func wgTurnOn(ifnameRef string, settings string, readFn uintptr, writeFn uintptr, ctx uintptr) int32 {
+func wgTurnOn(ifnameRef string, settings string, mtu uint16, readFn uintptr, writeFn uintptr, ctx uintptr) int32 {
interfaceName := string([]byte(ifnameRef))
logger := &Logger{
@@ -90,7 +90,7 @@ func wgTurnOn(ifnameRef string, settings string, readFn uintptr, writeFn uintptr
logger.Debug.Println("Debug log enabled")
- tun := tun.CreateTUN(1280, unsafe.Pointer(readFn), unsafe.Pointer(writeFn), unsafe.Pointer(ctx))
+ tun := tun.CreateTUN(mtu, unsafe.Pointer(readFn), unsafe.Pointer(writeFn), unsafe.Pointer(ctx))
logger.Info.Println("Attaching to interface")
device := NewDevice(tun, logger)
diff --git a/wireguard-go-bridge/src/tun/tun_ios.go b/wireguard-go-bridge/src/tun/tun_ios.go
index 93a0503..cafe33b 100644
--- a/wireguard-go-bridge/src/tun/tun_ios.go
+++ b/wireguard-go-bridge/src/tun/tun_ios.go
@@ -26,10 +26,17 @@ type nativeTun struct {
ctx unsafe.Pointer
}
-func CreateTUN(mtu int, readFn unsafe.Pointer, writeFn unsafe.Pointer, ctx unsafe.Pointer) TUNDevice {
+func CreateTUN(mtu uint16, readFn unsafe.Pointer, writeFn unsafe.Pointer, ctx unsafe.Pointer) TUNDevice {
+ if mtu == 0 {
+ /* 0 means automatic MTU, which iOS makes outerMTU-80-15. The 80 is for
+ * WireGuard and the 15 ensures our padding will work. Therefore, it's
+ * safe to have this code assume a massive MTU.
+ */
+ mtu = ^mtu
+ }
tun := &nativeTun{
events: make(chan TUNEvent, 10),
- mtu: mtu,
+ mtu: int(mtu),
readFn: readFn,
writeFn: writeFn,
ctx: ctx,