morpheus_network::state

Module dhcp

Source
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§