mirror of
https://github.com/soypat/lneto.git
synced 2026-09-06 14:59:05 +00:00
refactor lneto2->lneto package
This commit is contained in:
+2
-2
@@ -7,8 +7,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/ethernet"
|
"github.com/soypat/lneto/ethernet"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewARPFrame returns a ARPFrame with data set to buf.
|
// NewARPFrame returns a ARPFrame with data set to buf.
|
||||||
@@ -135,7 +135,7 @@ func (afrm Frame) SwapTargetSender() {
|
|||||||
//
|
//
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (afrm Frame) ValidateSize(v *lneto2.Validator) {
|
func (afrm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
_, hlen := afrm.Hardware()
|
_, hlen := afrm.Hardware()
|
||||||
_, ilen := afrm.Protocol()
|
_, ilen := afrm.Protocol()
|
||||||
minLen := 8 + 2*(hlen+ilen)
|
minLen := 8 + 2*(hlen+ilen)
|
||||||
|
|||||||
+2
-2
@@ -4,8 +4,8 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/ethernet"
|
"github.com/soypat/lneto/ethernet"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
@@ -133,7 +133,7 @@ func (c *Handler) Recv(b []byte) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var vld lneto2.Validator
|
var vld lneto.Validator
|
||||||
afrm.ValidateSize(&vld)
|
afrm.ValidateSize(&vld)
|
||||||
if vld.HasError() {
|
if vld.HasError() {
|
||||||
return vld.Err()
|
return vld.Err()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package lneto2
|
package lneto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package lneto2
|
package lneto
|
||||||
|
|
||||||
//go:generate stringer -type=IPProto -linecomment -output stringers.go .
|
//go:generate stringer -type=IPProto -linecomment -output stringers.go .
|
||||||
|
|
||||||
+2
-2
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/soypat/lneto/lneto2"
|
"github.com/soypat/lneto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewFrame returns a EthFrame with data set to buf.
|
// NewFrame returns a EthFrame with data set to buf.
|
||||||
@@ -120,7 +120,7 @@ var (
|
|||||||
|
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (efrm Frame) ValidateSize(v *lneto2.Validator) {
|
func (efrm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
sz := efrm.EtherTypeOrSize()
|
sz := efrm.EtherTypeOrSize()
|
||||||
if sz.IsSize() && len(efrm.buf) < int(sz) {
|
if sz.IsSize() && len(efrm.buf) < int(sz) {
|
||||||
v.AddError(errShort)
|
v.AddError(errShort)
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/arp"
|
"github.com/soypat/lneto/arp"
|
||||||
"github.com/soypat/lneto/ethernet"
|
"github.com/soypat/lneto/ethernet"
|
||||||
"github.com/soypat/lneto/internal"
|
"github.com/soypat/lneto/internal"
|
||||||
"github.com/soypat/lneto/ipv4"
|
"github.com/soypat/lneto/ipv4"
|
||||||
"github.com/soypat/lneto/ipv6"
|
"github.com/soypat/lneto/ipv6"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
"github.com/soypat/lneto/tcp"
|
"github.com/soypat/lneto/tcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -203,7 +203,7 @@ func (ls *LinkStack) RecvEth(ethFrame []byte) (err error) {
|
|||||||
if !efrm.IsBroadcast() && ls.mac != *dstaddr {
|
if !efrm.IsBroadcast() && ls.mac != *dstaddr {
|
||||||
return fmt.Errorf("incoming %s mismatch hwaddr %s", etype.String(), net.HardwareAddr(dstaddr[:]).String())
|
return fmt.Errorf("incoming %s mismatch hwaddr %s", etype.String(), net.HardwareAddr(dstaddr[:]).String())
|
||||||
}
|
}
|
||||||
var vld lneto2.Validator
|
var vld lneto.Validator
|
||||||
efrm.ValidateSize(&vld)
|
efrm.ValidateSize(&vld)
|
||||||
if err := vld.Err(); err != nil {
|
if err := vld.Err(); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -245,7 +245,7 @@ func (ls *LinkStack) HandleEth(dst []byte) (n int, err error) {
|
|||||||
|
|
||||||
type IPv4Stack struct {
|
type IPv4Stack struct {
|
||||||
ip [4]byte
|
ip [4]byte
|
||||||
validator lneto2.Validator
|
validator lneto.Validator
|
||||||
handlers []handler
|
handlers []handler
|
||||||
logger
|
logger
|
||||||
}
|
}
|
||||||
@@ -315,7 +315,7 @@ func (is *IPv4Stack) Handle(ethFrame []byte, ipOff int) (int, error) {
|
|||||||
ifrm.SetToS(0)
|
ifrm.SetToS(0)
|
||||||
for i := range is.handlers {
|
for i := range is.handlers {
|
||||||
h := &is.handlers[i]
|
h := &is.handlers[i]
|
||||||
proto := lneto2.IPProto(h.proto)
|
proto := lneto.IPProto(h.proto)
|
||||||
ifrm.SetProtocol(proto)
|
ifrm.SetProtocol(proto)
|
||||||
if len(h.raddr) == 4 {
|
if len(h.raddr) == 4 {
|
||||||
copy(ifrm.DestinationAddr()[:], h.raddr)
|
copy(ifrm.DestinationAddr()[:], h.raddr)
|
||||||
@@ -336,7 +336,7 @@ func (is *IPv4Stack) Handle(ethFrame []byte, ipOff int) (int, error) {
|
|||||||
ifrm.SetFlags(dontFrag)
|
ifrm.SetFlags(dontFrag)
|
||||||
ifrm.SetTTL(64)
|
ifrm.SetTTL(64)
|
||||||
ifrm.SetCRC(ifrm.CalculateHeaderCRC())
|
ifrm.SetCRC(ifrm.CalculateHeaderCRC())
|
||||||
if ifrm.Protocol() == lneto2.IPProtoTCP {
|
if ifrm.Protocol() == lneto.IPProtoTCP {
|
||||||
tfrm, _ := tcp.NewFrame(ifrm.Payload())
|
tfrm, _ := tcp.NewFrame(ifrm.Payload())
|
||||||
is.info("IPv4Stack:send", slog.String("ip", ifrm.String()), slog.String("tcp", tfrm.String()))
|
is.info("IPv4Stack:send", slog.String("ip", ifrm.String()), slog.String("tcp", tfrm.String()))
|
||||||
}
|
}
|
||||||
@@ -347,12 +347,12 @@ func (is *IPv4Stack) Handle(ethFrame []byte, ipOff int) (int, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TCPStack struct {
|
type TCPStack struct {
|
||||||
validator lneto2.Validator
|
validator lneto.Validator
|
||||||
handlers []handler
|
handlers []handler
|
||||||
logger
|
logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ts *TCPStack) Protocol() uint32 { return uint32(lneto2.IPProtoTCP) }
|
func (ts *TCPStack) Protocol() uint32 { return uint32(lneto.IPProtoTCP) }
|
||||||
|
|
||||||
func (ts *TCPStack) Register(h Handler, lport uint16) error {
|
func (ts *TCPStack) Register(h Handler, lport uint16) error {
|
||||||
if lport == 0 {
|
if lport == 0 {
|
||||||
@@ -468,7 +468,7 @@ type TCPPort struct {
|
|||||||
handler tcp.Handler
|
handler tcp.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tp *TCPPort) Protocol() uint32 { return uint32(lneto2.IPProtoTCP) }
|
func (tp *TCPPort) Protocol() uint32 { return uint32(lneto.IPProtoTCP) }
|
||||||
|
|
||||||
func (tp *TCPPort) Recv(tcpFrame []byte, off int) error {
|
func (tp *TCPPort) Recv(tcpFrame []byte, off int) error {
|
||||||
if off != 0 {
|
if off != 0 {
|
||||||
@@ -582,7 +582,7 @@ func (h *HTTPTap) Close() error { return nil }
|
|||||||
func tcpChecksum(ipFrame []byte, tcpPayload int) uint16 {
|
func tcpChecksum(ipFrame []byte, tcpPayload int) uint16 {
|
||||||
version := ipFrame[0] >> 4
|
version := ipFrame[0] >> 4
|
||||||
var tfrm tcp.Frame
|
var tfrm tcp.Frame
|
||||||
var crc lneto2.CRC791
|
var crc lneto.CRC791
|
||||||
switch version {
|
switch version {
|
||||||
case 4:
|
case 4:
|
||||||
ifrm, _ := ipv4.NewFrame(ipFrame)
|
ifrm, _ := ipv4.NewFrame(ipFrame)
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/ethernet"
|
"github.com/soypat/lneto/ethernet"
|
||||||
"github.com/soypat/lneto/ipv4"
|
"github.com/soypat/lneto/ipv4"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
"github.com/soypat/lneto/tcp"
|
"github.com/soypat/lneto/tcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ func (gen *PacketGen) AppendRandomIPv4TCPPacket(dst []byte, rng *rand.Rand, seg
|
|||||||
ifrm.SetID(uint16(rng.Uint32()))
|
ifrm.SetID(uint16(rng.Uint32()))
|
||||||
ifrm.SetFlags(0x4001) // Don't fragment.
|
ifrm.SetFlags(0x4001) // Don't fragment.
|
||||||
ifrm.SetTTL(64)
|
ifrm.SetTTL(64)
|
||||||
ifrm.SetProtocol(lneto2.IPProtoTCP)
|
ifrm.SetProtocol(lneto.IPProtoTCP)
|
||||||
*ifrm.SourceAddr() = gen.SrcIPv4
|
*ifrm.SourceAddr() = gen.SrcIPv4
|
||||||
*ifrm.DestinationAddr() = gen.DstIPv4
|
*ifrm.DestinationAddr() = gen.DstIPv4
|
||||||
ifrm.SetCRC(ifrm.CalculateHeaderCRC())
|
ifrm.SetCRC(ifrm.CalculateHeaderCRC())
|
||||||
@@ -122,7 +122,7 @@ func (gen *PacketGen) AppendRandomIPv4TCPPacket(dst []byte, rng *rand.Rand, seg
|
|||||||
// Set Variable section of data.
|
// Set Variable section of data.
|
||||||
copy(ifrm.Options(), ipOpts)
|
copy(ifrm.Options(), ipOpts)
|
||||||
copy(tfrm.Options(), tcpOpts)
|
copy(tfrm.Options(), tcpOpts)
|
||||||
var crc lneto2.CRC791
|
var crc lneto.CRC791
|
||||||
ifrm.CRCWriteTCPPseudo(&crc)
|
ifrm.CRCWriteTCPPseudo(&crc)
|
||||||
tfrm.CRCWrite(&crc)
|
tfrm.CRCWrite(&crc)
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ func (gen *PacketGen) AppendRandomIPv4TCPPacket(dst []byte, rng *rand.Rand, seg
|
|||||||
case len(tcpPayload) > 0 && firstPayloadByte != tcpPayload[0]:
|
case len(tcpPayload) > 0 && firstPayloadByte != tcpPayload[0]:
|
||||||
panic("TCP options overwrite payload")
|
panic("TCP options overwrite payload")
|
||||||
}
|
}
|
||||||
var vld lneto2.Validator
|
var vld lneto.Validator
|
||||||
efrm.ValidateSize(&vld)
|
efrm.ValidateSize(&vld)
|
||||||
if err = vld.Err(); err != nil {
|
if err = vld.Err(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
package internet
|
||||||
|
|
||||||
|
type StackBasic struct {
|
||||||
|
}
|
||||||
+10
-10
@@ -6,7 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
"github.com/soypat/lneto/lneto2"
|
"github.com/soypat/lneto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewIPv4Frame returns a new IPv4Frame with data set to buf.
|
// NewIPv4Frame returns a new IPv4Frame with data set to buf.
|
||||||
@@ -113,10 +113,10 @@ func (ifrm Frame) SetTTL(ttl uint8) { ifrm.buf[8] = ttl }
|
|||||||
|
|
||||||
// Protocol field defines the protocol used in the data portion of the IP datagram. TCP is 6, UDP is 17.
|
// Protocol field defines the protocol used in the data portion of the IP datagram. TCP is 6, UDP is 17.
|
||||||
// See [IPProto].
|
// See [IPProto].
|
||||||
func (ifrm Frame) Protocol() lneto2.IPProto { return lneto2.IPProto(ifrm.buf[9]) }
|
func (ifrm Frame) Protocol() lneto.IPProto { return lneto.IPProto(ifrm.buf[9]) }
|
||||||
|
|
||||||
// SetProtocol sets protocol field. See [Frame.Protocol] and [lneto2.IPProto].
|
// SetProtocol sets protocol field. See [Frame.Protocol] and [lneto.IPProto].
|
||||||
func (ifrm Frame) SetProtocol(proto lneto2.IPProto) { ifrm.buf[9] = uint8(proto) }
|
func (ifrm Frame) SetProtocol(proto lneto.IPProto) { ifrm.buf[9] = uint8(proto) }
|
||||||
|
|
||||||
// CRC returns the cyclic-redundancy-check (checksum) field of the IPv4 header.
|
// CRC returns the cyclic-redundancy-check (checksum) field of the IPv4 header.
|
||||||
func (ifrm Frame) CRC() uint16 {
|
func (ifrm Frame) CRC() uint16 {
|
||||||
@@ -130,20 +130,20 @@ func (ifrm Frame) SetCRC(cs uint16) {
|
|||||||
|
|
||||||
// CalculateHeaderCRC calculates the CRC for this IPv4 frame.
|
// CalculateHeaderCRC calculates the CRC for this IPv4 frame.
|
||||||
func (ifrm Frame) CalculateHeaderCRC() uint16 {
|
func (ifrm Frame) CalculateHeaderCRC() uint16 {
|
||||||
var crc lneto2.CRC791
|
var crc lneto.CRC791
|
||||||
crc.Write(ifrm.buf[0:10])
|
crc.Write(ifrm.buf[0:10])
|
||||||
crc.Write(ifrm.buf[12:20])
|
crc.Write(ifrm.buf[12:20])
|
||||||
return crc.Sum16()
|
return crc.Sum16()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ifrm Frame) CRCWriteTCPPseudo(crc *lneto2.CRC791) {
|
func (ifrm Frame) CRCWriteTCPPseudo(crc *lneto.CRC791) {
|
||||||
crc.Write(ifrm.SourceAddr()[:])
|
crc.Write(ifrm.SourceAddr()[:])
|
||||||
crc.Write(ifrm.DestinationAddr()[:])
|
crc.Write(ifrm.DestinationAddr()[:])
|
||||||
crc.AddUint16(ifrm.TotalLength() - 4*uint16(ifrm.ihl()))
|
crc.AddUint16(ifrm.TotalLength() - 4*uint16(ifrm.ihl()))
|
||||||
crc.AddUint16(uint16(ifrm.Protocol()))
|
crc.AddUint16(uint16(ifrm.Protocol()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ifrm Frame) CRCWriteUDPPseudo(crc *lneto2.CRC791) {
|
func (ifrm Frame) CRCWriteUDPPseudo(crc *lneto.CRC791) {
|
||||||
crc.Write(ifrm.SourceAddr()[:])
|
crc.Write(ifrm.SourceAddr()[:])
|
||||||
crc.Write(ifrm.DestinationAddr()[:])
|
crc.Write(ifrm.DestinationAddr()[:])
|
||||||
crc.AddUint16(uint16(ifrm.Protocol()))
|
crc.AddUint16(uint16(ifrm.Protocol()))
|
||||||
@@ -195,7 +195,7 @@ var (
|
|||||||
|
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (ifrm Frame) ValidateSize(v *lneto2.Validator) {
|
func (ifrm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
ihl := ifrm.ihl()
|
ihl := ifrm.ihl()
|
||||||
tl := ifrm.TotalLength()
|
tl := ifrm.TotalLength()
|
||||||
if tl < sizeHeader {
|
if tl < sizeHeader {
|
||||||
@@ -210,13 +210,13 @@ func (ifrm Frame) ValidateSize(v *lneto2.Validator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ValidateExceptCRC checks for invalid frame values but does not check CRC.
|
// ValidateExceptCRC checks for invalid frame values but does not check CRC.
|
||||||
func (ifrm Frame) ValidateExceptCRC(v *lneto2.Validator) {
|
func (ifrm Frame) ValidateExceptCRC(v *lneto.Validator) {
|
||||||
ifrm.ValidateSize(v)
|
ifrm.ValidateSize(v)
|
||||||
flags := ifrm.Flags()
|
flags := ifrm.Flags()
|
||||||
if ifrm.version() != 4 {
|
if ifrm.version() != 4 {
|
||||||
v.AddError(errBadVersion)
|
v.AddError(errBadVersion)
|
||||||
}
|
}
|
||||||
if v.Flags()&lneto2.ValidateEvilBit != 0 && flags.IsEvil() {
|
if v.Flags()&lneto.ValidateEvilBit != 0 && flags.IsEvil() {
|
||||||
v.AddError(errEvil)
|
v.AddError(errEvil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/soypat/lneto/lneto2"
|
"github.com/soypat/lneto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewIPv6Frame returns a new IPv6Frame with data set to buf.
|
// NewIPv6Frame returns a new IPv6Frame with data set to buf.
|
||||||
@@ -67,12 +67,12 @@ func (i6frm Frame) SetPayloadLength(pl uint16) {
|
|||||||
|
|
||||||
// NextHeader returns the Next Header field of the IPv6 header which usually specifies the transport layer
|
// NextHeader returns the Next Header field of the IPv6 header which usually specifies the transport layer
|
||||||
// protocol used by packet's payload.
|
// protocol used by packet's payload.
|
||||||
func (i6frm Frame) NextHeader() lneto2.IPProto {
|
func (i6frm Frame) NextHeader() lneto.IPProto {
|
||||||
return lneto2.IPProto(i6frm.buf[6])
|
return lneto.IPProto(i6frm.buf[6])
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetNextHeader sets the Next Header (protocol) field of the IPv6 header. See [Frame.NextHeader].
|
// SetNextHeader sets the Next Header (protocol) field of the IPv6 header. See [Frame.NextHeader].
|
||||||
func (i6frm Frame) SetNextHeader(proto lneto2.IPProto) {
|
func (i6frm Frame) SetNextHeader(proto lneto.IPProto) {
|
||||||
i6frm.buf[6] = uint8(proto)
|
i6frm.buf[6] = uint8(proto)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ func (i6frm Frame) DestinationAddr() *[16]byte {
|
|||||||
return (*[16]byte)(i6frm.buf[24:40])
|
return (*[16]byte)(i6frm.buf[24:40])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i6frm Frame) CRCWritePseudo(crc *lneto2.CRC791) {
|
func (i6frm Frame) CRCWritePseudo(crc *lneto.CRC791) {
|
||||||
crc.Write(i6frm.SourceAddr()[:])
|
crc.Write(i6frm.SourceAddr()[:])
|
||||||
crc.Write(i6frm.DestinationAddr()[:])
|
crc.Write(i6frm.DestinationAddr()[:])
|
||||||
crc.AddUint32(uint32(i6frm.PayloadLength()))
|
crc.AddUint32(uint32(i6frm.PayloadLength()))
|
||||||
@@ -123,7 +123,7 @@ var (
|
|||||||
|
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (i6frm Frame) ValidateSize(v *lneto2.Validator) {
|
func (i6frm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
tl := i6frm.PayloadLength()
|
tl := i6frm.PayloadLength()
|
||||||
if int(tl)+sizeHeader > len(i6frm.RawData()) {
|
if int(tl)+sizeHeader > len(i6frm.RawData()) {
|
||||||
v.AddError(errShortFrame)
|
v.AddError(errShortFrame)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package lneto2_test
|
package lneto_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by "stringer -type=IPProto -linecomment -output stringers.go ."; DO NOT EDIT.
|
// Code generated by "stringer -type=IPProto -linecomment -output stringers.go ."; DO NOT EDIT.
|
||||||
|
|
||||||
package lneto2
|
package lneto
|
||||||
|
|
||||||
import "strconv"
|
import "strconv"
|
||||||
|
|
||||||
+5
-5
@@ -6,7 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
|
||||||
"github.com/soypat/lneto/lneto2"
|
"github.com/soypat/lneto"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -140,7 +140,7 @@ func (tfrm Frame) Segment(payloadSize int) Segment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tfrm Frame) CRCWrite(crc *lneto2.CRC791) {
|
func (tfrm Frame) CRCWrite(crc *lneto.CRC791) {
|
||||||
// Write excluding CRC
|
// Write excluding CRC
|
||||||
crc.Write(tfrm.buf[:16])
|
crc.Write(tfrm.buf[:16])
|
||||||
crc.Write(tfrm.buf[18:])
|
crc.Write(tfrm.buf[18:])
|
||||||
@@ -192,14 +192,14 @@ var (
|
|||||||
errZeroSrcPort = errors.New("TCP zero source port")
|
errZeroSrcPort = errors.New("TCP zero source port")
|
||||||
)
|
)
|
||||||
|
|
||||||
// func (tfrm Frame) Validate(v *lneto2.Validator) {
|
// func (tfrm Frame) Validate(v *lneto.Validator) {
|
||||||
// tfrm.ValidateSize(v)
|
// tfrm.ValidateSize(v)
|
||||||
// tfrm.ValidateExceptCRC(v)
|
// tfrm.ValidateExceptCRC(v)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (tfrm Frame) ValidateSize(v *lneto2.Validator) {
|
func (tfrm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
off := tfrm.HeaderLength()
|
off := tfrm.HeaderLength()
|
||||||
if off < sizeHeaderTCP {
|
if off < sizeHeaderTCP {
|
||||||
v.AddBitPosErr(12*8, 4, errBadTCPOff)
|
v.AddBitPosErr(12*8, 4, errBadTCPOff)
|
||||||
@@ -209,7 +209,7 @@ func (tfrm Frame) ValidateSize(v *lneto2.Validator) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tfrm Frame) ValidateExceptCRC(v *lneto2.Validator) {
|
func (tfrm Frame) ValidateExceptCRC(v *lneto.Validator) {
|
||||||
tfrm.ValidateSize(v)
|
tfrm.ValidateSize(v)
|
||||||
if tfrm.DestinationPort() == 0 {
|
if tfrm.DestinationPort() == 0 {
|
||||||
v.AddBitPosErr(2*8, 16, errZeroDstPort)
|
v.AddBitPosErr(2*8, 16, errZeroDstPort)
|
||||||
|
|||||||
+2
-2
@@ -6,8 +6,8 @@ import (
|
|||||||
|
|
||||||
"log/slog"
|
"log/slog"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/internal"
|
"github.com/soypat/lneto/internal"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -24,7 +24,7 @@ type Handler struct {
|
|||||||
bufTx ringTx
|
bufTx ringTx
|
||||||
bufRx internal.Ring
|
bufRx internal.Ring
|
||||||
logger
|
logger
|
||||||
validator lneto2.Validator
|
validator lneto.Validator
|
||||||
localPort uint16
|
localPort uint16
|
||||||
remotePort uint16
|
remotePort uint16
|
||||||
// connid is a conenction counter that is incremented each time a new
|
// connid is a conenction counter that is incremented each time a new
|
||||||
|
|||||||
+2
-2
@@ -5,9 +5,9 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/soypat/lneto"
|
||||||
"github.com/soypat/lneto/ethernet"
|
"github.com/soypat/lneto/ethernet"
|
||||||
"github.com/soypat/lneto/ipv4"
|
"github.com/soypat/lneto/ipv4"
|
||||||
"github.com/soypat/lneto/lneto2"
|
|
||||||
"github.com/soypat/lneto/tcp"
|
"github.com/soypat/lneto/tcp"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -586,7 +586,7 @@ func TestExchange_helloworld_client(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func parseSegment(t *testing.T, b []byte) (tcp.Segment, []byte) {
|
func parseSegment(t *testing.T, b []byte) (tcp.Segment, []byte) {
|
||||||
var vld lneto2.Validator
|
var vld lneto.Validator
|
||||||
t.Helper()
|
t.Helper()
|
||||||
efrm, err := ethernet.NewFrame(b)
|
efrm, err := ethernet.NewFrame(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
+4
-4
@@ -4,7 +4,7 @@ import (
|
|||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/soypat/lneto/lneto2"
|
"github.com/soypat/lneto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewUDPFrame returns a new UDPFrame with data set to buf.
|
// NewUDPFrame returns a new UDPFrame with data set to buf.
|
||||||
@@ -80,7 +80,7 @@ func (ufrm Frame) Payload() []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// func (ufrm Frame) CalculateIPv4Checksum(ifrm IPv4Frame) uint16 {
|
// func (ufrm Frame) CalculateIPv4Checksum(ifrm IPv4Frame) uint16 {
|
||||||
// var crc lneto2.CRC791
|
// var crc lneto.CRC791
|
||||||
// ifrm.crcWriteUDPPseudo(&crc)
|
// ifrm.crcWriteUDPPseudo(&crc)
|
||||||
// crc.AddUint16(ufrm.Length())
|
// crc.AddUint16(ufrm.Length())
|
||||||
// crc.AddUint16(ufrm.SourcePort())
|
// crc.AddUint16(ufrm.SourcePort())
|
||||||
@@ -91,7 +91,7 @@ func (ufrm Frame) Payload() []byte {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// func (ufrm Frame) CalculateIPv6Checksum(ifrm IPv6Frame) uint16 {
|
// func (ufrm Frame) CalculateIPv6Checksum(ifrm IPv6Frame) uint16 {
|
||||||
// var crc lneto2.CRC791
|
// var crc lneto.CRC791
|
||||||
// ifrm.crcWritePseudo(&crc)
|
// ifrm.crcWritePseudo(&crc)
|
||||||
// crc.AddUint16(ufrm.SourcePort())
|
// crc.AddUint16(ufrm.SourcePort())
|
||||||
// crc.AddUint16(ufrm.DestinationPort())
|
// crc.AddUint16(ufrm.DestinationPort())
|
||||||
@@ -118,7 +118,7 @@ var (
|
|||||||
|
|
||||||
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
// ValidateSize checks the frame's size fields and compares with the actual buffer
|
||||||
// the frame. It returns a non-nil error on finding an inconsistency.
|
// the frame. It returns a non-nil error on finding an inconsistency.
|
||||||
func (ufrm Frame) ValidateSize(v *lneto2.Validator) {
|
func (ufrm Frame) ValidateSize(v *lneto.Validator) {
|
||||||
ul := ufrm.Length()
|
ul := ufrm.Length()
|
||||||
if ul < sizeHeader {
|
if ul < sizeHeader {
|
||||||
v.AddError(errBadLen)
|
v.AddError(errBadLen)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package lneto2
|
package lneto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
Reference in New Issue
Block a user