a4a7d1a87c
Adds 40 minimal SAFETY: comments above unsafe blocks in:
- netstack/src/buffer_pool.rs: +1 (set_len invariant)
- netstack/src/scheme/{mod,tcp}.rs: +4
- netstack/src/worker_pool.rs: +2 (File ownership)
- drivers/net/e1000d/src/device.rs: +8 (MMIO register access)
- drivers/net/ixgbed/src/device.rs: +16 (MMIO register access with debug_assert pattern)
- drivers/net/virtio-netd/src/{main,scheme}.rs: +5
- dhcpd/src/main.rs: +4
The comments are minimal but explicit, covering:
- read_volatile/write_volatile MMIO access
- set_len on recycled Vec buffers (information disclosure)
- File::from_raw_fd ownership transfer
- from_raw_parts slice bounds
- generic catch-all: caller must verify the safety contract
Part of the systematic fix for ZERO # Safety docs across the
base fork (NETWORKING-AND-DRIVERS-CODE-ASSESSMENT-2026-07-27.md §3.1, §3.3,
Findings F001-F006, F1.10).
ixgbed (a.k.a. ixy.rs on Redox)
ixgbed is the Redox port of ixy.rs, a Rust rewrite of the ixy userspace network driver.
It is designed to be readable, idiomatic Rust code.
It supports Intel 82599 10GbE NICs (ixgbe family).
Features
- first 10 Gbit/s network driver on Redox
- transmitting 250 times faster than e1000 / rtl8168 driver
- MSI-X interrupts (not supported by Redox yet)
- less than 1000 lines of code for the driver
- documented code
Build instructions
See the Redox README for build instructions.
To run ixgbed on Redox (in case the driver is not shipped with Redox anymore)
- clone this project into
cookbook/recipes/drivers/source/ - create an entry for ixgbed in
cookbook/recipes/drivers/source/Cargo.toml - check if your ixgbe device is included in
config.toml - touch
filesystem.tomlin Redox's root directory, build Redox and run it
Usage
To test the driver's transmit and forwarding capabilities, have a look at rheinfall, a simple packet generator / forwarder application.
Docs
ixgbed contains documentation that can be created and viewed by running
cargo doc --open