Extend the bigtcp network stack to handle IPv6 packets alongside
existing IPv4 support. Key changes include:
- Add IpPacket enum to represent either an IPv4 or IPv6 packet
- Extend IfaceCommon with IPv6 address query and per-address port tracking
- Update phy layer: EtherIface dispatches IPv6 packets, IpIface processes them
- Extend BoundPort to track bound IP address for proper dual-stack lookup
- Update SocketTable to store sockets keyed by full IpEndpoint
- Add smolrtc dependency for IPv6 wire-format support
Currently, outbound IPv6 packets on EtherIface are dropped with a FIXME
until neighbor discovery is implemented.
Sort all non-derive outer attributes alphabetically by name,
place `#[derive(...)]` last (before any derive helper attributes
like `#[serde(...)]` and `#[clap(...)]`), and sort traits inside
`#[derive(...)]` alphabetically. This covers 329 files with 704
line changes (all pure reordering, no semantic changes).
Key patterns normalized:
- `#[cfg(...)]` comes first (c), then other attrs alphabetically
- `#[repr(...)]` stays before `#[derive(...)]` (derive is always last)
- `#[padding_struct]` and `#[pod_union]` precede `#[derive(...)]`
- Derive helper attrs like `#[serde(...)]` remain after `#[derive(...)]`
- Derive traits like `Debug, Clone, Copy` become `Clone, Copy, Debug`
- The common set `{Debug, Clone, Copy, Pod, Default}` (59 uses,
12 prior orderings) is now uniformly `Clone, Copy, Debug, Default, Pod`
Introduce `Memcpy` and `Memset` traits that generalize the classic C
`memcpy` and `memset` for typed memory categories (`KernelMem`,
`UserMem`). The compiler resolves the correct implementation at
monomorphization time, making it straightforward to add new memory
categories (e.g., `IoMem` for TDX-aware I/O memory in #2958) without
a combinatorial explosion of function names.
Replace the four ad-hoc private functions (`memcpy`, `memcpy_fallible`,
`memset`, `memset_fallible`) in `mm/io/mod.rs` with trait-dispatched
free functions `memcpy::<Dst, Src>()` and `memset::<Dst>()`, and
update all call sites including `io_util` imports across the kernel
crate.