Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3c913fd
toyos-net-wire: the clock, the keyed function and the counters every …
Japabu Sep 29, 2026
3fa6d3b
toyos-net-ip: the IPv4 host layer of ToyOS's own stack, first cut
Japabu Sep 29, 2026
0da6401
toyos-net-ip: the NBR, ACD, ICMP and IGMP scenarios
Japabu Sep 29, 2026
9afdb3b
toyos-net-udp: UDP for ToyOS's own stack
Japabu Sep 30, 2026
6df4a41
toyos-dhcp: the DHCPv4 client of ToyOS's own stack
Japabu Sep 30, 2026
c341a44
net stage 3: cut what no caller needs, and make the unreachable unrep…
Japabu Sep 30, 2026
d9f1771
toyos-net-ip: pin that released datagrams are outside the control que…
Japabu Sep 30, 2026
fdd546c
net stage 3: the tests four surviving mutations asked for
Japabu Sep 30, 2026
70f428a
Merge origin/main (#616) into wt/toyos-netstack
Japabu Sep 30, 2026
ce7fcb9
net stage 3: one test per scenario, and the track records what stage …
Japabu Sep 30, 2026
84aa022
Merge remote-tracking branch 'origin/main' into wt/toyos-netstack
Japabu Sep 30, 2026
deae121
Merge remote-tracking branch 'origin/main' into wt/toyos-netstack
Japabu Sep 30, 2026
70dc74d
net stage 3: answer the third review — bounds, one home for address a…
Japabu Sep 30, 2026
6a72869
toyos-net-udp: US-53 reuses a closed socket's slot before any transmit
Japabu Sep 30, 2026
02dde43
Merge remote-tracking branch 'origin/main' into wt/toyos-netstack
Japabu Sep 30, 2026
0cd700c
net stage 3: answer the fourth review — the resolved states carry the…
Japabu Sep 30, 2026
3fe7a75
toyos-net-ip: NBR-08 pins where a waiting released datagram goes
Japabu Sep 30, 2026
0e065c9
toyos-net-tcp: HS-35 pins the 0/8 and 127/8 refusals is_host brings
Japabu Sep 30, 2026
3bd75d3
toyos-net-ip: an evicted entry's turns count against PENDING_TOTAL
Japabu Sep 30, 2026
0610a07
Merge remote-tracking branch 'origin/main' into wt/toyos-netstack
Japabu Sep 30, 2026
8ea5e93
toyos-net-ip: an evicted entry's turns go with it
Japabu Sep 30, 2026
c1474cd
toyos-net-ip: a drained entry goes with its last datagram
Japabu Sep 30, 2026
7fab216
toyos-net-ip: `leave` deletes the idle entry its last datagram drains
Japabu Sep 30, 2026
2c2fb83
toyos-net-ip tests: NUD-29's setup is named for B in a full table
Japabu Sep 30, 2026
754ce5e
toyos-net-ip: an entry's queued request goes with the entry
Japabu Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ members = [
"toyos-bootmap",
"toyos-cpuvuln",
"toyos-desktop",
"toyos-dhcp",
"toyos-dns",
"toyos-dma",
"toyos-elf",
Expand All @@ -43,7 +44,9 @@ members = [
"toyos-manifest",
"toyos-mdns",
"toyos-mixer",
"toyos-net-ip",
"toyos-net-tcp",
"toyos-net-udp",
"toyos-net-wire",
"toyos-pci",
"toyos-pcid",
Expand Down
12 changes: 11 additions & 1 deletion issues/design-debt/toyos-has-its-own-network-stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,17 @@ netd runs smoltcp. Its replacement is ToyOS's own stack, built clean-room: reade

The listener defects are this track's: `issues/hardware/a-handshake-nobody-finishes-holds-a-listeners-port-shut.md` and `issues/hardware/a-connect-between-two-accepts-is-reset.md`, on smoltcp until stage 5, and `issues/hardware/an-accept-that-never-reaches-netd-strands-its-listener.md`, in std's accept.

Owed from the wire specification by stages 3–5: ETH-32, whose subnet broadcast needs the subnet `toyos-net-ip` holds; and those whose layer tags are `[ip]`, `[shell]` or `[udp]`: ETH-11, 12, 22–25, 33; ARP-16–18; IP-25, 26, 35; IPP-01–13; ICMP-32–46; IGMP-23–25, 29; UDP-17, 18; and the policy halves of ETH-10, 14, 19, IP-02, 20–23, 29, IPO-15, 16, ICMP-23, 24, 26 and UDP-22.
Owed from the stage 3 specifications: OUT-07 by stage 4, whose scheduler chooses between a flow's segment and [ip]'s own frames; US-57 by stage 5, whose netd maps UDP's refusals onto the pipe ABI; `dhcp.renew-unroutable` by stage 5, whose netd counts it where `toyos-net-udp` refuses the renewal `udp.no-route`; FRA-01–20 and PMTU-01–06 by IP hardening.

What stage 3 departs from its specifications:

- US-43 expects `ip.not-for-us` for a datagram to an unjoined group in a frame to that group's MAC; the frame filter refuses it first, as `eth.not-for-us` (`wire.md` §3.3, ETH-23). Exit: the scenario names the frame filter.
- DH-64 expects an announce request from the client on link-up with a lease held; `toyos-net-ip` announces the held address itself on link-up (IP-D6, C-4), so the client asks nothing. Exit: the scenario drops the request, or [ip] stops announcing on its own.
- `udp-dhcp.md` §U9 (3) lets every datagram a closed socket had accepted leave; `toyos-net-udp` holds at most one socket's queue of them together and refuses the rest `udp.tx-discarded-on-close`, because architecture §3.3 holds nothing without a bound. Exit: the specification bounds them.

What stage 3 does not yet meet:

- Its only oracles are the readers' own: the specifications' scenarios and byte vectors, and the tests' own RFC 1071 sum. No behaviour of `toyos-net-ip`, `toyos-net-udp` or `toyos-dhcp` is checked against anything the readers did not write. Exit: exchanges captured from slirp and the T14 (ARP, DHCP, ICMP, IGMP) replay through them at stage 5 and match.

What `toyos-net-wire` does not yet meet:

Expand Down
14 changes: 14 additions & 0 deletions toyos-dhcp/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "toyos-dhcp"
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "ToyOS's DHCPv4 client, pure: the caller hands in the time, the draws and the server's messages, and carries out what each call returns."
publish = false

[dependencies]
toyos-net-wire = { path = "../toyos-net-wire" }

[dev-dependencies]
toyos-net-ip = { path = "../toyos-net-ip" }
toyos-net-udp = { path = "../toyos-net-udp" }
Loading
Loading