From ab58f21b3bab981744c73d04887144d536339975 Mon Sep 17 00:00:00 2001 From: bjdgyc Date: Mon, 31 May 2021 16:20:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96gc=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/handler/link_tap.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/server/handler/link_tap.go b/server/handler/link_tap.go index 2bec160..fa7d7bc 100644 --- a/server/handler/link_tap.go +++ b/server/handler/link_tap.go @@ -89,6 +89,7 @@ func tapWrite(ifce *water.Interface, cSess *sessdata.ConnSession) { var ( err error payload *sessdata.Payload + frame ethernet.Frame ) for { @@ -98,12 +99,14 @@ func tapWrite(ifce *water.Interface, cSess *sessdata.ConnSession) { return } - var frame ethernet.Frame + // var frame ethernet.Frame + frame = getByteFull() switch payload.LType { default: // log.Println(payload) case sessdata.LTypeEthernet: - frame = payload.Data + copy(frame, payload.Data) + frame = frame[:len(payload.Data)] case sessdata.LTypeIPData: // 需要转换成 Ethernet 数据 data := payload.Data @@ -148,6 +151,9 @@ func tapWrite(ifce *water.Interface, cSess *sessdata.ConnSession) { base.Error("tap Write err", err) return } + + putByte(frame) + putPayload(payload) } } @@ -158,14 +164,16 @@ func tapRead(ifce *water.Interface, cSess *sessdata.ConnSession) { }() var ( - err error - n int - buf []byte + err error + n int + buf []byte + frame ethernet.Frame ) for { - var frame ethernet.Frame - frame.Resize(BufferSize) + // var frame ethernet.Frame + // frame.Resize(BufferSize) + frame = getByteFull() n, err = ifce.Read(frame) if err != nil { base.Error("tap Read err", n, err) @@ -237,5 +245,7 @@ func tapRead(ifce *water.Interface, cSess *sessdata.ConnSession) { } } + + putByte(frame) } }