Expand description
DHCP client state machine.
Wraps smoltcp’s DHCP client with non-blocking state tracking. Does NOT implement DHCP protocol itself—relies on smoltcp.
§States
Init → Discovering → Bound | Failed
§Usage
ⓘ
let mut dhcp = DhcpState::new();
dhcp.start(now_tsc);
loop {
iface.poll(...); // smoltcp handles DHCP internally
// Check if smoltcp has assigned an IP
let has_ip = iface.ipv4_addr().is_some();
match dhcp.step(has_ip, now_tsc, timeout_ticks) {
StepResult::Pending => continue,
StepResult::Done => {
let config = dhcp.config().unwrap();
break;
}
StepResult::Timeout => panic!("DHCP timeout"),
StepResult::Failed => panic!("DHCP failed"),
}
}§Reference
NETWORK_IMPL_GUIDE.md §5.3
Structs§
- DHCP configuration obtained from server.
Enums§
- DHCP-specific errors.
- DHCP client state machine.