468ac36e97
Closes the rest of the build-break cascade after round 18 part 1:
1. router/mod.rs:550 — IpProtocol -> u8 conversion.
smoltcp 0.13.1 tightened the return type of
IpProtocol::from() from u8 to IpProtocol (an enum). The PacketContext
field is u8. Add .into() so the type matches the destination.
2. scheme/mod.rs:185 + :199 — File::from_raw_fd expects i32.
libredox::Fd::into_raw() returns usize (defined in libredox
lib.rs:409). The destination File::from_raw_fd takes c_int.
Add 'as i32' at both call sites (network FD + time FD).
3. scheme/netcfg/mod.rs:173 — for-loop iteration mismatch.
DeviceList::iter() returns Iterator<Item = &(dyn LinkDevice + 'static)>
not Iterator<Item = (&str, &dyn LinkDevice)> as the loop assumed
(the old tuple shape was for a HashMap-style DeviceList that
was later refactored to Vec<Box<dyn LinkDevice>>).
Rewrite the loop to use dev.name() per iteration.
4. scheme/tcp.rs — 3 errors:
a) cannot find type CallerCtx. Add 'use redox_scheme::CallerCtx;'
(matches the udp.rs pattern at line 2).
b) cannot find type SocketCall. Add 'use libredox::protocol::SocketCall;'
(matches the socket.rs pattern at line 13).
c) send_slice returns Result<usize, SendError> not isize.
The original code treated negative as error. With the Result
variant, Err(_) means the socket may have closed or the
buffer was full. Map Err to Ok(0) (matches the original
'written.max(0) as usize' semantics: report 0 bytes sent
on failure rather than erroring). Use a closure to keep
the MSG_NOSIGNAL signal-mask dance readable.
5. scheme_pool.rs:198 — E0521 borrowed data escapes.
Tighten submit signature to 'name: &'static str'. All callers
(run_corec12_main_loop, tests) already pass string literals
which are 'static, so no caller updates are required.
Build should now compile netstack. Remaining items after this
commit: only warnings (37 total) — unused imports/variables
tracked for a future cleanup commit.