begin testing tcp listener (not working)

This commit is contained in:
soypat
2025-06-09 20:38:40 -03:00
parent 76be78812f
commit 6b511999d1
16 changed files with 136 additions and 48 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ func (narp *NodeARP) Demux(EtherFrame []byte, arpOff int) error {
}
afrm.ValidateSize(&narp.vld)
if narp.vld.HasError() {
slog.Error("invalid-ARP", slog.String("err", narp.vld.Err().Error()))
slog.Error("invalid-ARP", slog.String("err", narp.vld.ErrPop().Error()))
return nil
}
return narp.handler.Recv(EtherFrame[arpOff:])
+28 -1
View File
@@ -65,9 +65,36 @@ func (listener *NodeTCPListener) Reset(port uint16, pool tcpPool) error {
return nil
}
func (listener *NodeTCPListener) NumberOfReadyToAccept() (nready int) {
if listener.isClosed() {
return 0
}
for _, conn := range listener.ready {
if conn == nil {
continue
}
nready++
}
return nready
}
func (listener *NodeTCPListener) TryAccept() (*tcp.Conn, error) {
if listener.isClosed() {
return nil, net.ErrClosed
}
for i, conn := range listener.ready {
if conn == nil {
continue
}
listener.accepted = append(listener.accepted, conn)
listener.ready[i] = nil // discard from ready.
return conn, nil
}
return nil, errors.New("no conns available")
}
func (listener *NodeTCPListener) AcceptRaw() (*tcp.Conn, error) {
connid := listener.connID
for {
if listener.isClosed() || connid != listener.connID {
return nil, net.ErrClosed
+9 -7
View File
@@ -34,7 +34,7 @@ func (pc *PacketBreakdown) CaptureEthernet(dst []Frame, pkt []byte, bitOffset in
}
efrm.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
finfo := Frame{
@@ -61,6 +61,8 @@ func (pc *PacketBreakdown) CaptureEthernet(dst []Frame, pkt []byte, bitOffset in
dst, err = pc.CaptureARP(dst, pkt, end)
case ethernet.TypeIPv4:
dst, err = pc.CaptureIPv4(dst, pkt, end)
case ethernet.TypeIPv6:
dst, err = pc.CaptureIPv6(dst, pkt, end)
default:
dst = append(dst, remainingFrameInfo(etype, FieldClassPayload, end, octet*len(pkt)))
}
@@ -77,7 +79,7 @@ func (pc *PacketBreakdown) CaptureARP(dst []Frame, pkt []byte, bitOffset int) ([
}
afrm.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
finfo := Frame{
@@ -129,7 +131,7 @@ func (pc *PacketBreakdown) CaptureIPv6(dst []Frame, pkt []byte, bitOffset int) (
}
ifrm6.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
finfo := Frame{
Protocol: ethernet.TypeIPv6,
@@ -138,7 +140,7 @@ func (pc *PacketBreakdown) CaptureIPv6(dst []Frame, pkt []byte, bitOffset int) (
finfo.Fields = append(finfo.Fields, baseIPv6Fields[:]...)
dst = append(dst, finfo)
proto := ifrm6.NextHeader()
end := 40 * octet
end := bitOffset + 40*octet
return pc.captureIPProto(proto, dst, pkt, end)
}
@@ -152,7 +154,7 @@ func (pc *PacketBreakdown) CaptureIPv4(dst []Frame, pkt []byte, bitOffset int) (
}
ifrm4.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
finfo := Frame{
Protocol: ethernet.TypeIPv4,
@@ -195,7 +197,7 @@ func (pc *PacketBreakdown) CaptureTCP(dst []Frame, pkt []byte, bitOffset int) ([
}
tfrm.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
end := bitOffset + octet*tfrm.HeaderLength()
finfo := Frame{
@@ -232,7 +234,7 @@ func (pc *PacketBreakdown) CaptureUDP(dst []Frame, pkt []byte, bitOffset int) ([
}
ufrm.ValidateSize(pc.validator())
if pc.validator().HasError() {
return dst, pc.validator().Err()
return dst, pc.validator().ErrPop()
}
finfo := Frame{
Protocol: lneto.IPProtoUDP,
+1 -1
View File
@@ -77,7 +77,7 @@ func (ls *StackEthernet) Demux(carrierData []byte, frameOffset int) (err error)
}
efrm.ValidateSize(&vld)
if vld.HasError() {
return vld.Err()
return vld.ErrPop()
}
for i := range ls.handlers {
+1 -1
View File
@@ -78,7 +78,7 @@ func (sb *StackIP) Demux(carrierData []byte, offset int) error {
{
sb.validator.ResetErr()
ifrm.ValidateExceptCRC(&sb.validator)
if err = sb.validator.Err(); err != nil {
if err = sb.validator.ErrPop(); err != nil {
return err
}
gotCRC := ifrm.CRC()