ethernet: MTU semantic meaning corrections, add FCS logic (#28)

This commit is contained in:
Pat Whittingslow
2026-01-26 16:45:35 -03:00
committed by GitHub
parent 6a6097a9ac
commit 85f018a02c
10 changed files with 241 additions and 25 deletions
+5 -3
View File
@@ -13,6 +13,8 @@ import (
"net/url"
"sync"
"time"
"github.com/soypat/lneto/ethernet"
)
const minMTU = 256
@@ -58,7 +60,7 @@ func (h *HTTPTapClient) IPMask() (netip.Prefix, error) {
func (h *HTTPTapClient) MTU() (int, error) {
err := h.ensureMTU()
return len(h.buf), err
return len(h.buf) - ethernet.MaxOverheadSize, err // Return payload MTU, not buffer size
}
func (h *HTTPTapClient) HardwareAddress6() ([6]byte, error) {
@@ -85,7 +87,7 @@ func (h *HTTPTapClient) ensureMTU() (err error) {
if err != nil {
return err
}
h.buf = make([]byte, info.MTU)
h.buf = make([]byte, info.MTU+ethernet.MaxOverheadSize)
hw, err := net.ParseMAC(info.HardwareAddr)
if err == nil {
copy(h.hwaddr[:], hw)
@@ -215,7 +217,7 @@ func NewHTTPTapServer(iface Interface, minMTU, queueOut, queueIn int) (*HTTPTapS
if err != nil {
return nil, err
}
bufferSize := max(mtu, minMTU)
bufferSize := max(mtu, minMTU) + ethernet.MaxOverheadSize
netmask, err := iface.IPMask()
if err != nil {
return nil, err