From f7b4f75ed4f8c68922b8461090ff6ef54c31973d Mon Sep 17 00:00:00 2001 From: xjasonlyu Date: Sun, 26 Mar 2023 22:10:21 +0800 Subject: [PATCH] Fix: align with wireguard io --- core/device/tun/tun_wireguard.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/core/device/tun/tun_wireguard.go b/core/device/tun/tun_wireguard.go index e0dfdaa..5d618ef 100644 --- a/core/device/tun/tun_wireguard.go +++ b/core/device/tun/tun_wireguard.go @@ -18,6 +18,10 @@ type TUN struct { mtu uint32 name string offset int + + rSizes []int + rBuffs [][]byte + wBuffs [][]byte } func Open(name string, mtu uint32) (_ device.Device, err error) { @@ -27,7 +31,14 @@ func Open(name string, mtu uint32) (_ device.Device, err error) { } }() - t := &TUN{name: name, mtu: mtu, offset: offset} + t := &TUN{ + name: name, + mtu: mtu, + offset: offset, + rSizes: make([]int, 1), + rBuffs: make([][]byte, 1), + wBuffs: make([][]byte, 1), + } forcedMTU := defaultMTU if t.mtu > 0 { @@ -56,11 +67,14 @@ func Open(name string, mtu uint32) (_ device.Device, err error) { } func (t *TUN) Read(packet []byte) (int, error) { - return t.nt.Read(packet, t.offset) + t.rBuffs[0] = packet + _, err := t.nt.Read(t.rBuffs, t.rSizes, t.offset) + return t.rSizes[0], err } func (t *TUN) Write(packet []byte) (int, error) { - return t.nt.Write(packet, t.offset) + t.wBuffs[0] = packet + return t.nt.Write(t.wBuffs, t.offset) } func (t *TUN) Name() string {