Add ICMPv4 and lneto.StackNode and deprecate internet.StackNode (#65)

* begin adding icmp client

* rely on anon structs

* add tests

* tests passing

* icmp fleshed out

* rework icmp to include ip addr

* rename StackAsync.Demux/Encapsulate to RecvEthernet and SendEthernet

* remove legacy unreachable TCP tests

* remove uses of deprecated internet.StackNode in preference of lneto.StackNode

* documentation

* rename methods to signal no I/O happening
This commit is contained in:
Pat Whittingslow
2026-04-09 09:07:16 -03:00
committed by GitHub
parent 22c7e6c9d8
commit ec44889896
26 changed files with 679 additions and 209 deletions
+2 -2
View File
@@ -142,7 +142,7 @@ func stackLoop(ctx context.Context, stack *xnet.StackAsync) {
frameLength, _ := network.MaxFrameLength()
buf := make([]byte, frameLength)
for ctx.Err() == nil {
nwrite, err := stack.Encapsulate(buf[:], -1, 0)
nwrite, err := stack.EgressEthernet(buf[:])
if err != nil {
fmt.Println("encaps err:", err)
} else if nwrite > 0 {
@@ -153,7 +153,7 @@ func stackLoop(ctx context.Context, stack *xnet.StackAsync) {
if err != nil {
fmt.Println("network read err:", err)
} else if nread > 0 {
err = stack.Demux(buf[:nread], 0)
err = stack.IngressEthernet(buf[:nread])
if err != nil && err != lneto.ErrPacketDrop {
fmt.Println("demux err:", err)
} else {