diff --git a/repos/os/src/server/nic_router/dhcp_client.cc b/repos/os/src/server/nic_router/dhcp_client.cc index acd94b2786..b8e662bcbb 100644 --- a/repos/os/src/server/nic_router/dhcp_client.cc +++ b/repos/os/src/server/nic_router/dhcp_client.cc @@ -142,12 +142,19 @@ void Dhcp_client::handle_dhcp_reply(Dhcp_packet &dhcp) } _lease_time_sec = dhcp.option().value(); _set_state(State::BOUND, _rerequest_timeout(1)); + Ipv4_address dns_server; + Ipv4_address subnet_mask; + Ipv4_address router_ip; + try { dns_server = dhcp.option().value(); } catch (Dhcp_packet::Option_not_found) { } - _domain().ip_config(dhcp.yiaddr(), - dhcp.option().value(), - dhcp.option().value(), + try { subnet_mask = dhcp.option().value(); } + catch (Dhcp_packet::Option_not_found) { } + try { router_ip = dhcp.option().value(); } + catch (Net::Dhcp_packet::Option_not_found) { } + + _domain().ip_config(dhcp.yiaddr(), subnet_mask, router_ip, dns_server); break; }