1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:28:12 +00:00

Kernel: Implement the SO_DONTROUTE SOL_SOCKET-level option

This commit is contained in:
Idan Horowitz 2021-12-02 01:01:02 +02:00 committed by Andreas Kling
parent 641498954f
commit 613ade9dec
4 changed files with 20 additions and 2 deletions

View file

@ -210,7 +210,7 @@ ErrorOr<size_t> IPv4Socket::sendto(OpenFileDescription&, const UserOrKernelBuffe
if (!is_connected() && m_peer_address.is_zero())
return set_so_error(EPIPE);
auto allow_using_gateway = (flags & MSG_DONTROUTE) ? AllowUsingGateway::No : AllowUsingGateway::Yes;
auto allow_using_gateway = ((flags & MSG_DONTROUTE) || m_routing_disabled) ? AllowUsingGateway::No : AllowUsingGateway::Yes;
auto routing_decision = route_to(m_peer_address, m_local_address, bound_interface(), allow_using_gateway);
if (routing_decision.is_zero())
return set_so_error(EHOSTUNREACH);