From 1505fe2f702829c02517899e53d821b4521eddeb Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Thu, 8 Sep 2016 12:20:53 +0200 Subject: [PATCH] Add default timeout for ARP resolution --- kernel/src/net/ip_layer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/src/net/ip_layer.cpp b/kernel/src/net/ip_layer.cpp index 820a6ea8..5e088e21 100644 --- a/kernel/src/net/ip_layer.cpp +++ b/kernel/src/net/ip_layer.cpp @@ -18,6 +18,8 @@ namespace { +constexpr const size_t ARP_TIMEOUT = 5000; + void compute_checksum(network::ip::header* header){ auto ihl = header->version_ihl & 0xF; @@ -111,7 +113,7 @@ void network::ip::decode(network::interface_descriptor& interface, network::ethe } std::expected network::ip::prepare_packet(network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ - auto target_mac = network::arp::get_mac_force(interface, target_ip); + auto target_mac = network::arp::get_mac_force(interface, target_ip, ARP_TIMEOUT); if(!target_mac){ return std::make_expected_from_error(target_mac.error()); @@ -128,7 +130,7 @@ std::expected network::ip::prepare_packet(network::in } std::expected network::ip::prepare_packet(char* buffer, network::interface_descriptor& interface, size_t size, address& target_ip, size_t protocol){ - auto target_mac = network::arp::get_mac_force(interface, target_ip); + auto target_mac = network::arp::get_mac_force(interface, target_ip, ARP_TIMEOUT); if(!target_mac){ return std::make_expected_from_error(target_mac.error());