Commit Graph

89 Commits

Author SHA1 Message Date
Pat Whittingslow bd76ebe5ed tcp: bugfix for challenge ack panic edge case (#48) 2026-02-28 16:18:39 -03:00
Pat Whittingslow fa5ba918bb Error rewrites (#43)
* pcap: reuse Frame memory

* slog: reduce heap allocations of addresses; also prevent heap alloc of dhcp options in pcap

* dns: heapless improvement; add StackAsync buffer for more heapless operation; start thinking of errors

* errors: begin standardise errors in lneto

* errors: finish standardization of errors

* fix merge issues

* add more lneto errors to rest of package

* format errors.go
2026-02-28 16:18:27 -03:00
Pat Whittingslow 3d0bc93cbe tcp: bugfix for missing ack for window rejected segments (#45) 2026-02-28 15:21:07 -03:00
Pat Whittingslow 989bb6a0b9 Reduce heap allocs 2 (#46)
* reduce heap allocations in tcp logging; omit use of AppendFloat which allocates a metric sh*tton

* debugheaplog: better heap statistic logging

* heap: use string for pcap.Frame.Protocol

* add potential to eliminate Flags.String heap alloc, remove incorrect HEAP comments

* add StackAsync.DebugErr and httpraw.SetBytes

* many heap alloc reductions and replacement of bytes.Equal with internal.BytesEqual
2026-02-28 15:20:46 -03:00
Pat Whittingslow eab43c4653 tcp: Reject SYN on synchronized connections; fix maxSend underflow (#44)
* tcp: add test replicating bugs and 32bit panic with GOARCH=386

* tcp: reject SYN on synchronized connections; fix maxSend underflow
2026-02-27 12:38:46 -03:00
Patricio Whittingslow 92b54487df improve TCP logging of remote ports 2026-02-27 08:52:23 -03:00
Patricio Whittingslow 04664afe3a remove overly verbose logging and short circuit TCP nop encapsulate 2026-02-27 08:43:31 -03:00
Patricio Whittingslow 76f896af40 use common internal logger among all implementations(debugheaplog build tag) 2026-02-26 17:06:47 -03:00
Pat Whittingslow be949d960c tcp: mss honoring; accept syn with ECE/CWR flags; add RSTQueue type (#41)
* tcp: mss honoring; accept syn with ECE/CWR flags; add RSTQueue type

* tcp: move option logic to own file

* remove prints in pcap

* add MSS send threshold inspired by linux/freebsd/lwip thresh
2026-02-25 12:58:55 -03:00
Patricio Whittingslow 58a9bf57e5 tcp: listener produces RST response when conns exhausted 2026-02-23 15:07:33 -03:00
Patricio Whittingslow 87a22441e7 rewrite tests to capture more finwait2 receive segment expected functionality 2026-02-23 13:39:12 -03:00
Patricio Whittingslow f061cbd744 bugfix: bare-ack acceptance in finwait2 2026-02-23 13:28:47 -03:00
Pat Whittingslow 7d323aae19 Tcp rst handling (#40)
* claude suggests a way forward

* add timing to capture printer

* add pcap.Flags

* fix ICMP CRC calculation and add test

* bugfix: still send data on half-close state(close-wait)

* fix pcap test
2026-02-23 09:50:13 -03:00
Pat Whittingslow 08423d0dba add proactive window update (#39)
* add proactive window update

* fix xnet tests due to runt padding bug
2026-02-22 12:02:53 -03:00
ddirect 1694e71e0c Use backoff to wait until there is enough room in the TCP write buffer (#34) 2026-02-09 01:27:18 +01:00
ddirect 085c7033cd TCP: advertising the currently available window size (#35) 2026-02-09 01:24:24 +01:00
ddirect fba97c990a Checksum simplification proposal (#29)
* Simplified checksum calculation and verification

* Fixed tests

* UDP: using NewBoundedFrame to create a Frame instance limited to the actual frame size.

* Minor: renamed some functions

* Commented and made more readable consecutive SetCRC calls.

* Fixed icmp checksum calculation after rebase

* Replaced NewBoundedFrame with explicit validation
2026-02-05 17:35:42 -03:00
soypat cd51bd6c3f fix #31 by maintaining conns on listener encapsulate no-op 2026-02-02 22:38:41 +01:00
ddirect 91fea9ae58 Maximum segment size fixes (#25)
* Fixed MSS sent in SYN and SYN-ACK

* Fixed tests
2026-01-25 02:37:17 -03:00
Patricio Whittingslow 0f10576521 forgot int64 wrap 2026-01-21 19:32:13 -03:00
Patricio Whittingslow 3396fd5265 phy: improvements and additions; document RMII 2026-01-21 18:54:45 -03:00
Pat Whittingslow e13bb45854 attempt to fix #22 (#23) 2026-01-19 23:22:54 -03:00
Patricio Whittingslow 1a427323f2 fix bug being unable to read from closed tcp.Conn 2026-01-12 11:05:10 -03:00
Pat Whittingslow 151133dfb4 HTTP and Listener improvements and bugfixes (#17)
* listener revamp

* improvements to conn lifetimes
2026-01-11 10:29:16 -03:00
soypat 7cbf0fb301 add SYNCookie implementation (unused) 2026-01-08 11:25:11 -03:00
Pat Whittingslow 7698b9fb81 do not rely on unspecified Go behaviour; fix TCP ring buffer bug (#16)
* do not rely on unspecified Go behaviour; fix TCP ring buffer bug

* even more stricter error handling on tcp connections

* stricter lock copying in tcp.Conn, even though likely not a problem

* add listener and tcp pool logging

* forgot reqAddr unused

* add logging to TCPConn and friends
2026-01-05 10:03:24 -03:00
Pat Whittingslow 018f9258ac Add tcp.Listener (#15)
* begin reviewing TCP listener

* begin adding listener tests

* adding TestExchange implementation

* split out legacy and Step tests

* move listener to tcp package

* fix up tcp tests taking very long

* add xnet.TCPPool and work on TCPPool semantics

* xnet: TCPPool only accepts established connections

* xnet: getting to bottom of panic in xnet.Listener

* xnet: improve listener tests

* fix several data races in testing fixtures

* fix more synchronization things in listener test

* finalize tcplistener test
2026-01-03 12:41:57 -03:00
Patricio Whittingslow c6e88b1c3b tcp.Conn:add Flush method and more lock protection 2026-01-01 10:32:13 -03:00
ddirect 6f3da983b0 Conn: fixed double mutex lock in SetDeadline 2025-11-30 16:51:42 +02:00
Patricio Whittingslow 1554b89a08 StackNode refactor: add offsetToIP argument to Encapsulate 2025-12-19 00:38:28 -03:00
Patricio Whittingslow 7042a653a6 add lock to tcp.Conn; claude Fix ARP handler not responding after DHCP
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-09 14:16:23 -03:00
Patricio Whittingslow e3c6d68288 rigurously fix all tests 2025-11-05 20:12:02 -03:00
Patricio Whittingslow f5157e7e4a huge fixes to ring buffer implementations and mostly passing tests 2025-11-05 19:21:30 -03:00
Patricio Whittingslow 5e5f21a2b8 rethinking ring buffer semantics and breaking everything in the process 2025-11-05 02:35:53 -03:00
Patricio Whittingslow 82bd54a6da add faulty appendString method to rtx 2025-11-04 00:52:02 -03:00
Patricio Whittingslow 2b79b6a314 use sentlist in ringTx implementation and back to square 1 2025-11-03 23:51:05 -03:00
soypat 72047b8ae9 add test for sentlist 2025-11-03 19:04:23 -03:00
Patricio Whittingslow 26ef39ecc3 add sentlist 2025-10-30 23:32:22 -03:00
Patricio Whittingslow 71cf99dcb8 early return on partial packet ack 2025-10-29 18:06:38 -03:00
Patricio Whittingslow 46137bbbec begin adding TxQueue failing multipacket test 2025-10-27 23:21:41 -03:00
Patricio Whittingslow 6b3a2c429c found failing case for multipacket 2025-10-27 00:23:57 -03:00
Patricio Whittingslow ed81d7446d fix client reset state; add multi send tests 2025-10-26 20:45:23 -03:00
soypat 3fa2f32737 fix timewait not counting as closed state in listen open; add second part to test 2025-10-24 18:26:59 -03:00
Patricio Whittingslow 92a245957b keep working on xnet TCP 2025-10-23 21:18:25 -03:00
soypat 407f4a08f1 enhance xnet StackAsync test and add non-linux stubs for Tap and Bridge 2025-10-21 21:46:44 -03:00
soypat 0f20090d78 bugfix: use ISS on active TCP connection 2025-08-16 18:26:50 -03:00
soypat 9cf4e35d2e changes to TCP stack to enable xnet functionality 2025-08-16 15:17:46 -03:00
soypat 77bdc4c448 more consistent argument ordering for tcp.Conn.Open call; DHCP client now sets ClientID correctly from config 2025-07-21 18:39:31 -03:00
soypat 1fcde05284 begin touching up a DNS Client implementation; internal.GetIP/SetIP refactor 2025-06-21 01:29:38 -03:00
soypat 2133966a16 add dhcp failing test 2025-06-17 02:07:11 -03:00