diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-10-27 00:57:58 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2018-10-27 01:03:28 +0200 |
commit | 95fefbdb39dfdac91567c6454e74a354203ef03f (patch) | |
tree | 161174e725a7273c15c0e3685a46cef18b0e547c /wireguard-go-bridge/src | |
parent | bridge: go get requires arch paths (diff) | |
download | wireguard-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.go | 4 | ||||
-rw-r--r-- | wireguard-go-bridge/src/tun/tun_ios.go | 11 |
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, |