From: Pieter Lexis Date: Wed, 22 Oct 2025 14:39:53 +0000 (+0200) Subject: chore(dnsdist): move sendfromto from dnsdist.cc to dnsdist::udp X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=b0871130002cc3b2c1c19aa96026d1a9007bbcdd;p=thirdparty%2Fpdns.git chore(dnsdist): move sendfromto from dnsdist.cc to dnsdist::udp --- diff --git a/pdns/dnsdistdist/dnsdist-udp.cc b/pdns/dnsdistdist/dnsdist-udp.cc index e56630f723..8c13cf1538 100644 --- a/pdns/dnsdistdist/dnsdist-udp.cc +++ b/pdns/dnsdistdist/dnsdist-udp.cc @@ -96,4 +96,26 @@ void setUDPSocketBufferSizes(int socketDesc, const Logr::Logger& logger, Context } } -} // dnsdist::udp +void sendfromto(int sock, const PacketBuffer& buffer, const ComboAddress& from, const ComboAddress& dest) +{ + const int flags = 0; + if (from.sin4.sin_family == 0) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) + auto ret = sendto(sock, buffer.data(), buffer.size(), flags, reinterpret_cast(&dest), dest.getSocklen()); + if (ret == -1) { + int error = errno; + VERBOSESLOG(infolog("Error sending UDP response to %s: %s", dest.toStringWithPort(), stringerror(error)), + dnsdist::logging::getTopLogger("sendfromto")->error(Logr::Info, error, "Error sending UDP response", "client.address", Logging::Loggable(dest))); + } + return; + } + + try { + sendMsgWithOptions(sock, buffer.data(), buffer.size(), &dest, &from, 0, 0); + } + catch (const std::exception& exp) { + VERBOSESLOG(infolog("Error sending UDP response from %s to %s: %s", from.toStringWithPort(), dest.toStringWithPort(), exp.what()), + dnsdist::logging::getTopLogger("sendfromto")->error(Logr::Info, exp.what(), "Error sending UDP response", "source.address", Logging::Loggable(from), "client.address", Logging::Loggable(dest))); + } +} +} // namespace dnsdist::udp diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index d5a3db301f..88f4770bd8 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -131,30 +131,6 @@ shared_ptr g_defaultBPFFilter{nullptr}; Rings g_rings; - -static void sendfromto(int sock, const PacketBuffer& buffer, const ComboAddress& from, const ComboAddress& dest) -{ - const int flags = 0; - if (from.sin4.sin_family == 0) { - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - auto ret = sendto(sock, buffer.data(), buffer.size(), flags, reinterpret_cast(&dest), dest.getSocklen()); - if (ret == -1) { - int error = errno; - VERBOSESLOG(infolog("Error sending UDP response to %s: %s", dest.toStringWithPort(), stringerror(error)), - dnsdist::logging::getTopLogger("sendfromto")->error(Logr::Info, error, "Error sending UDP response", "client.address", Logging::Loggable(dest))); - } - return; - } - - try { - sendMsgWithOptions(sock, buffer.data(), buffer.size(), &dest, &from, 0, 0); - } - catch (const std::exception& exp) { - VERBOSESLOG(infolog("Error sending UDP response from %s to %s: %s", from.toStringWithPort(), dest.toStringWithPort(), exp.what()), - dnsdist::logging::getTopLogger("sendfromto")->error(Logr::Info, exp.what(), "Error sending UDP response", "source.address", Logging::Loggable(from), "client.address", Logging::Loggable(dest))); - } -} - static void truncateTC(PacketBuffer& packet, size_t maximumSize, unsigned int qnameWireLength, bool addEDNSToSelfGeneratedResponses) { try { @@ -193,7 +169,7 @@ struct DelayedPacket ComboAddress origDest; void operator()() const { - sendfromto(fd, packet, origDest, destination); + dnsdist::udp::sendfromto(fd, packet, origDest, destination); } }; @@ -631,7 +607,7 @@ bool sendUDPResponse(int origFD, const PacketBuffer& response, [[maybe_unused]] } #endif /* DISABLE_DELAY_PIPE */ // NOLINTNEXTLINE(readability-suspicious-call-argument) - sendfromto(origFD, response, origDest, origRemote); + dnsdist::udp::sendfromto(origFD, response, origDest, origRemote); return true; }