From: Pieter Lexis Date: Thu, 13 Nov 2025 11:28:54 +0000 (+0100) Subject: chore(dnsdist): Switch from boost::optional to std::optional X-Git-Tag: rec-5.4.0-alpha1~33^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=196cace9b282e954cc84bc57f7456fe3ed764d52;p=thirdparty%2Fpdns.git chore(dnsdist): Switch from boost::optional to std::optional This also updates the DNSTap code to accept a DNSName as `auth` always and checks its emptyness. --- diff --git a/pdns/dnsdistdist/dnsdist-actions-factory.cc b/pdns/dnsdistdist/dnsdist-actions-factory.cc index 7a3c3e15ef..1bd2a4ed42 100644 --- a/pdns/dnsdistdist/dnsdist-actions-factory.cc +++ b/pdns/dnsdistdist/dnsdist-actions-factory.cc @@ -533,7 +533,7 @@ public: auto lock = g_lua.lock(); auto ret = d_func(dnsquestion); if (ruleresult != nullptr) { - if (boost::optional rule = std::get<1>(ret)) { + if (std::optional rule = std::get<1>(ret)) { *ruleresult = *rule; } else { @@ -578,7 +578,7 @@ public: auto lock = g_lua.lock(); auto ret = d_func(response); if (ruleresult != nullptr) { - if (boost::optional rule = std::get<1>(ret)) { + if (std::optional rule = std::get<1>(ret)) { *ruleresult = *rule; } else { @@ -1464,16 +1464,16 @@ private: }; #ifndef DISABLE_PROTOBUF -static std::tuple> ProtocolToDNSTap(dnsdist::Protocol protocol) +static std::tuple> ProtocolToDNSTap(dnsdist::Protocol protocol) { if (protocol == dnsdist::Protocol::DoUDP) { - return {DnstapMessage::ProtocolType::DoUDP, boost::none}; + return {DnstapMessage::ProtocolType::DoUDP, std::nullopt}; } if (protocol == dnsdist::Protocol::DoTCP) { - return {DnstapMessage::ProtocolType::DoTCP, boost::none}; + return {DnstapMessage::ProtocolType::DoTCP, std::nullopt}; } if (protocol == dnsdist::Protocol::DoT) { - return {DnstapMessage::ProtocolType::DoT, boost::none}; + return {DnstapMessage::ProtocolType::DoT, std::nullopt}; } if (protocol == dnsdist::Protocol::DoH) { return {DnstapMessage::ProtocolType::DoH, DnstapMessage::HttpProtocolType::HTTP2}; @@ -1482,13 +1482,13 @@ static std::tuplegetProtocol()); // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - DnstapMessage message(std::move(data), !dnsquestion->getHeader()->qr ? DnstapMessage::MessageType::client_query : DnstapMessage::MessageType::client_response, d_identity, &dnsquestion->ids.origRemote, &dnsquestion->ids.origDest, protocol, reinterpret_cast(dnsquestion->getData().data()), dnsquestion->getData().size(), &dnsquestion->getQueryRealTime(), nullptr, boost::none, httpProtocol); + DnstapMessage message(std::move(data), !dnsquestion->getHeader()->qr ? DnstapMessage::MessageType::client_query : DnstapMessage::MessageType::client_response, d_identity, &dnsquestion->ids.origRemote, &dnsquestion->ids.origDest, protocol, reinterpret_cast(dnsquestion->getData().data()), dnsquestion->getData().size(), &dnsquestion->getQueryRealTime(), nullptr, DNSName(), httpProtocol); { if (d_alterFunc) { auto lock = g_lua.lock(); @@ -1802,7 +1802,7 @@ public: auto [protocol, httpProtocol] = ProtocolToDNSTap(response->getProtocol()); // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - DnstapMessage message(std::move(data), DnstapMessage::MessageType::client_response, d_identity, &response->ids.origRemote, &response->ids.origDest, protocol, reinterpret_cast(response->getData().data()), response->getData().size(), &response->getQueryRealTime(), &now, boost::none, httpProtocol); + DnstapMessage message(std::move(data), DnstapMessage::MessageType::client_response, d_identity, &response->ids.origRemote, &response->ids.origDest, protocol, reinterpret_cast(response->getData().data()), response->getData().size(), &response->getQueryRealTime(), &now, DNSName(), httpProtocol); { if (d_alterFunc) { auto lock = g_lua.lock(); diff --git a/pdns/dnsdistdist/dnsdist-actions-factory.hh b/pdns/dnsdistdist/dnsdist-actions-factory.hh index f02f0be232..9c0a441aff 100644 --- a/pdns/dnsdistdist/dnsdist-actions-factory.hh +++ b/pdns/dnsdistdist/dnsdist-actions-factory.hh @@ -45,8 +45,8 @@ class KeyValueLookupKey; namespace dnsdist::actions { -using LuaActionFunction = std::function>(DNSQuestion* dnsquestion)>; -using LuaResponseActionFunction = std::function>(DNSResponse* response)>; +using LuaActionFunction = std::function>(DNSQuestion* dnsquestion)>; +using LuaResponseActionFunction = std::function>(DNSResponse* response)>; using LuaActionFFIFunction = std::function; using LuaResponseActionFFIFunction = std::function; diff --git a/pdns/dnsdistdist/dnsdist-cache.cc b/pdns/dnsdistdist/dnsdist-cache.cc index 64bdf7274b..74679f6e8d 100644 --- a/pdns/dnsdistdist/dnsdist-cache.cc +++ b/pdns/dnsdistdist/dnsdist-cache.cc @@ -50,7 +50,7 @@ DNSDistPacketCache::DNSDistPacketCache(CacheSettings settings) : } } -bool DNSDistPacketCache::getClientSubnet(const PacketBuffer& packet, size_t qnameWireLength, boost::optional& subnet) +bool DNSDistPacketCache::getClientSubnet(const PacketBuffer& packet, size_t qnameWireLength, std::optional& subnet) { uint16_t optRDPosition = 0; size_t remaining = 0; @@ -78,7 +78,7 @@ bool DNSDistPacketCache::getClientSubnet(const PacketBuffer& packet, size_t qnam return false; } -bool DNSDistPacketCache::cachedValueMatches(const CacheValue& cachedValue, uint16_t queryFlags, const DNSName& qname, uint16_t qtype, uint16_t qclass, bool receivedOverUDP, bool dnssecOK, const boost::optional& subnet) const +bool DNSDistPacketCache::cachedValueMatches(const CacheValue& cachedValue, uint16_t queryFlags, const DNSName& qname, uint16_t qtype, uint16_t qclass, bool receivedOverUDP, bool dnssecOK, const std::optional& subnet) const { if (cachedValue.queryFlags != queryFlags || cachedValue.dnssecOK != dnssecOK || cachedValue.receivedOverUDP != receivedOverUDP || cachedValue.qtype != qtype || cachedValue.qclass != qclass || cachedValue.qname != qname) { return false; @@ -125,7 +125,7 @@ bool DNSDistPacketCache::insertLocked(std::unordered_map& return false; } -void DNSDistPacketCache::insert(uint32_t key, const boost::optional& subnet, uint16_t queryFlags, bool dnssecOK, const DNSName& qname, uint16_t qtype, uint16_t qclass, const PacketBuffer& response, bool receivedOverUDP, uint8_t rcode, boost::optional tempFailureTTL) +void DNSDistPacketCache::insert(uint32_t key, const std::optional& subnet, uint16_t queryFlags, bool dnssecOK, const DNSName& qname, uint16_t qtype, uint16_t qclass, const PacketBuffer& response, bool receivedOverUDP, uint8_t rcode, std::optional tempFailureTTL) { if (response.size() < sizeof(dnsheader) || response.size() > getMaximumEntrySize()) { return; @@ -138,7 +138,7 @@ void DNSDistPacketCache::insert(uint32_t key, const boost::optional& su uint32_t minTTL{0}; if (rcode == RCode::ServFail || rcode == RCode::Refused) { - minTTL = tempFailureTTL == boost::none ? d_settings.d_tempFailureTTL : *tempFailureTTL; + minTTL = tempFailureTTL == std::nullopt ? d_settings.d_tempFailureTTL : *tempFailureTTL; if (minTTL == 0) { return; } @@ -218,7 +218,7 @@ void DNSDistPacketCache::insert(uint32_t key, const boost::optional& su } } -bool DNSDistPacketCache::get(DNSQuestion& dnsQuestion, uint16_t queryId, uint32_t* keyOut, boost::optional& subnet, bool dnssecOK, bool receivedOverUDP, uint32_t allowExpired, bool skipAging, bool truncatedOK, bool recordMiss) +bool DNSDistPacketCache::get(DNSQuestion& dnsQuestion, uint16_t queryId, uint32_t* keyOut, std::optional& subnet, bool dnssecOK, bool receivedOverUDP, uint32_t allowExpired, bool skipAging, bool truncatedOK, bool recordMiss) { if (dnsQuestion.ids.qtype == QType::AXFR || dnsQuestion.ids.qtype == QType::IXFR) { ++d_misses; @@ -534,7 +534,7 @@ uint64_t DNSDistPacketCache::dump(int fileDesc, bool rawResponse) rcode = dnsHeader.rcode; } - fprintf(filePtr.get(), "%s %" PRId64 " %s %s ; ecs %s, rcode %" PRIu8 ", key %" PRIu32 ", length %" PRIu16 ", received over UDP %d, added %" PRId64 ", dnssecOK %d, raw query flags %" PRIu16, value.qname.toString().c_str(), static_cast(value.validity - now), QClass(value.qclass).toString().c_str(), QType(value.qtype).toString().c_str(), value.subnet ? value.subnet.get().toString().c_str() : "empty", rcode, entry.first, value.len, value.receivedOverUDP ? 1 : 0, static_cast(value.added), value.dnssecOK ? 1 : 0, value.queryFlags); + fprintf(filePtr.get(), "%s %" PRId64 " %s %s ; ecs %s, rcode %" PRIu8 ", key %" PRIu32 ", length %" PRIu16 ", received over UDP %d, added %" PRId64 ", dnssecOK %d, raw query flags %" PRIu16, value.qname.toString().c_str(), static_cast(value.validity - now), QClass(value.qclass).toString().c_str(), QType(value.qtype).toString().c_str(), value.subnet ? value.subnet.value().toString().c_str() : "empty", rcode, entry.first, value.len, value.receivedOverUDP ? 1 : 0, static_cast(value.added), value.dnssecOK ? 1 : 0, value.queryFlags); if (rawResponse) { std::string rawDataResponse = Base64Encode(value.value); diff --git a/pdns/dnsdistdist/dnsdist-cache.hh b/pdns/dnsdistdist/dnsdist-cache.hh index c3e59c03e7..9f28dcbe33 100644 --- a/pdns/dnsdistdist/dnsdist-cache.hh +++ b/pdns/dnsdistdist/dnsdist-cache.hh @@ -57,8 +57,8 @@ public: DNSDistPacketCache(CacheSettings settings); - void insert(uint32_t key, const boost::optional& subnet, uint16_t queryFlags, bool dnssecOK, const DNSName& qname, uint16_t qtype, uint16_t qclass, const PacketBuffer& response, bool receivedOverUDP, uint8_t rcode, boost::optional tempFailureTTL); - bool get(DNSQuestion& dnsQuestion, uint16_t queryId, uint32_t* keyOut, boost::optional& subnet, bool dnssecOK, bool receivedOverUDP, uint32_t allowExpired = 0, bool skipAging = false, bool truncatedOK = true, bool recordMiss = true); + void insert(uint32_t key, const std::optional& subnet, uint16_t queryFlags, bool dnssecOK, const DNSName& qname, uint16_t qtype, uint16_t qclass, const PacketBuffer& response, bool receivedOverUDP, uint8_t rcode, std::optional tempFailureTTL); + bool get(DNSQuestion& dnsQuestion, uint16_t queryId, uint32_t* keyOut, std::optional& subnet, bool dnssecOK, bool receivedOverUDP, uint32_t allowExpired = 0, bool skipAging = false, bool truncatedOK = true, bool recordMiss = true); size_t purgeExpired(size_t upTo, time_t now); size_t expunge(size_t upTo = 0); size_t expungeByName(const DNSName& name, uint16_t qtype = QType::ANY, bool suffixMatch = false); @@ -94,7 +94,7 @@ public: uint32_t getKey(const DNSName::string_t& qname, size_t qnameWireLength, const PacketBuffer& packet, bool receivedOverUDP) const; static uint32_t getMinTTL(const char* packet, uint16_t length, bool* seenNoDataSOA); - static bool getClientSubnet(const PacketBuffer& packet, size_t qnameWireLength, boost::optional& subnet); + static bool getClientSubnet(const PacketBuffer& packet, size_t qnameWireLength, std::optional& subnet); private: struct CacheValue @@ -102,7 +102,7 @@ private: [[nodiscard]] time_t getTTD() const { return validity; } std::string value; DNSName qname; - boost::optional subnet; + std::optional subnet; uint16_t qtype{0}; uint16_t qclass{0}; uint16_t queryFlags{0}; @@ -142,7 +142,7 @@ private: std::atomic d_entriesCount{0}; }; - [[nodiscard]] bool cachedValueMatches(const CacheValue& cachedValue, uint16_t queryFlags, const DNSName& qname, uint16_t qtype, uint16_t qclass, bool receivedOverUDP, bool dnssecOK, const boost::optional& subnet) const; + [[nodiscard]] bool cachedValueMatches(const CacheValue& cachedValue, uint16_t queryFlags, const DNSName& qname, uint16_t qtype, uint16_t qclass, bool receivedOverUDP, bool dnssecOK, const std::optional& subnet) const; [[nodiscard]] uint32_t getShardIndex(uint32_t key) const; bool insertLocked(std::unordered_map& map, uint32_t key, CacheValue& newValue); diff --git a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc index 12b5c259fa..112de6227c 100644 --- a/pdns/dnsdistdist/dnsdist-configuration-yaml.cc +++ b/pdns/dnsdistdist/dnsdist-configuration-yaml.cc @@ -50,7 +50,6 @@ #include "dnsdist-configuration-yaml-internal.hh" #include -#include #include #include @@ -124,7 +123,7 @@ template static bool getOptionalLuaFunction(T& destination, const ::rust::string& functionName) { auto lua = g_lua.lock(); - auto function = lua->readVariable>(std::string(functionName)); + auto function = lua->readVariable>(std::string(functionName)); if (!function) { return false; } @@ -374,7 +373,7 @@ static bool handleTLSConfiguration(const dnsdist::rust::settings::BindConfigurat if (!bind.doh.responses_map.empty()) { auto newMap = std::make_shared>>(); for (const auto& responsesMap : bind.doh.responses_map) { - boost::optional> headers; + std::optional> headers; if (!responsesMap.headers.empty()) { headers = std::unordered_map(); for (const auto& header : responsesMap.headers) { @@ -1266,13 +1265,13 @@ bool loadConfigurationFromFile(const std::string& fileName, [[maybe_unused]] boo void addLuaBindingsForYAMLObjects([[maybe_unused]] LuaContext& luaCtx) { #if defined(HAVE_YAML_CONFIGURATION) - using ReturnValue = boost::optional, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr>>; + using ReturnValue = std::optional, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr, std::shared_ptr>>; luaCtx.writeFunction("getObjectFromYAMLConfiguration", [](const std::string& name) -> ReturnValue { auto map = s_registeredTypesMap.lock(); auto item = map->find(name); if (item == map->end()) { - return boost::none; + return std::nullopt; } if (auto* ptr = std::get_if>(&item->second)) { return ReturnValue(*ptr); @@ -1308,7 +1307,7 @@ void addLuaBindingsForYAMLObjects([[maybe_unused]] LuaContext& luaCtx) return ReturnValue(*ptr); } - return boost::none; + return std::nullopt; }); #endif /* HAVE_YAML_CONFIGURATION */ } @@ -1659,7 +1658,7 @@ std::shared_ptr getDnstapLogAction([[maybe_unused]] const Dnst if (!logger && !(dnsdist::configuration::yaml::s_inClientMode || dnsdist::configuration::yaml::s_inConfigCheckMode)) { throw std::runtime_error("Unable to find the dnstap logger named '" + std::string(config.logger_name) + "'"); } - boost::optional alterFuncHolder; + std::optional alterFuncHolder; dnsdist::actions::DnstapAlterFunction alterFunc; if (dnsdist::configuration::yaml::getLuaFunctionFromConfiguration(alterFunc, config.alter_function_name, config.alter_function_code, config.alter_function_file, "dnstap log action")) { alterFuncHolder = std::move(alterFunc); @@ -1678,7 +1677,7 @@ std::shared_ptr getDnstapLogResponseAction([[maybe_unu if (!logger && !(dnsdist::configuration::yaml::s_inClientMode || dnsdist::configuration::yaml::s_inConfigCheckMode)) { throw std::runtime_error("Unable to find the dnstap logger named '" + std::string(config.logger_name) + "'"); } - boost::optional alterFuncHolder; + std::optional alterFuncHolder; dnsdist::actions::DnstapAlterResponseFunction alterFunc; if (dnsdist::configuration::yaml::getLuaFunctionFromConfiguration(alterFunc, config.alter_function_name, config.alter_function_code, config.alter_function_file, "dnstap log response action")) { alterFuncHolder = std::move(alterFunc); diff --git a/pdns/dnsdistdist/dnsdist-console.cc b/pdns/dnsdistdist/dnsdist-console.cc index 9a6f36127e..43a363b667 100644 --- a/pdns/dnsdistdist/dnsdist-console.cc +++ b/pdns/dnsdistdist/dnsdist-console.cc @@ -399,7 +399,7 @@ void doConsole() g_outputBuffer.clear(); resetLuaSideEffect(); auto ret = lua->executeCode< - boost::optional< + std::optional< boost::variant< string, shared_ptr, @@ -540,7 +540,7 @@ static void controlClientThread(ConsoleConnection&& conn) g_outputBuffer.clear(); resetLuaSideEffect(); auto ret = lua->executeCode< - boost::optional< + std::optional< boost::variant< string, shared_ptr, diff --git a/pdns/dnsdistdist/dnsdist-dnsparser.hh b/pdns/dnsdistdist/dnsdist-dnsparser.hh index e9bb9691cd..88a93b47e9 100644 --- a/pdns/dnsdistdist/dnsdist-dnsparser.hh +++ b/pdns/dnsdistdist/dnsdist-dnsparser.hh @@ -73,9 +73,9 @@ namespace RecordParsers struct ResponseConfig { - boost::optional setAA{boost::none}; - boost::optional setAD{boost::none}; - boost::optional setRA{boost::none}; + std::optional setAA{std::nullopt}; + std::optional setAD{std::nullopt}; + std::optional setRA{std::nullopt}; uint32_t ttl{60}; }; void setResponseHeadersFromConfig(dnsheader& dnsheader, const ResponseConfig& config); diff --git a/pdns/dnsdistdist/dnsdist-doh-common.hh b/pdns/dnsdistdist/dnsdist-doh-common.hh index 74f12b2fac..8c1c6623cd 100644 --- a/pdns/dnsdistdist/dnsdist-doh-common.hh +++ b/pdns/dnsdistdist/dnsdist-doh-common.hh @@ -45,7 +45,7 @@ struct DOHServerConfig; class DOHResponseMapEntry { public: - DOHResponseMapEntry(const std::string& regex, uint16_t status, const PacketBuffer& content, const boost::optional>& headers) : + DOHResponseMapEntry(const std::string& regex, uint16_t status, const PacketBuffer& content, const std::optional>& headers) : d_regex(regex), d_customHeaders(headers), d_content(content), d_status(status) { if (status >= 400 && !d_content.empty() && d_content.at(d_content.size() - 1) != 0) { @@ -69,14 +69,14 @@ public: return d_content; } - const boost::optional>& getHeaders() const + const std::optional>& getHeaders() const { return d_customHeaders; } private: Regex d_regex; - boost::optional> d_customHeaders; + std::optional> d_customHeaders; PacketBuffer d_content; uint16_t d_status; }; diff --git a/pdns/dnsdistdist/dnsdist-dynblocks.cc b/pdns/dnsdistdist/dnsdist-dynblocks.cc index 9fd8125d3c..82b31f0959 100644 --- a/pdns/dnsdistdist/dnsdist-dynblocks.cc +++ b/pdns/dnsdistdist/dnsdist-dynblocks.cc @@ -28,7 +28,7 @@ void DynBlockRulesGroup::apply(const timespec& now) return; } - boost::optional blocks; + std::optional blocks; bool updated = false; for (const auto& entry : counts) { @@ -140,10 +140,10 @@ void DynBlockRulesGroup::applySMT(const struct timespec& now, StatNode& statNode auto ret = d_smtVisitor(*node_, self, children); block = std::get<0>(ret); if (block) { - if (boost::optional tmp = std::get<1>(ret)) { + if (std::optional tmp = std::get<1>(ret)) { blockParameters.d_reason = std::move(*tmp); } - if (boost::optional tmp = std::get<2>(ret)) { + if (std::optional tmp = std::get<2>(ret)) { blockParameters.d_action = static_cast(*tmp); } } @@ -316,7 +316,7 @@ bool addOrRefreshBlockSMT(SuffixDynamicRules& blocks, const timespec& now, DynBl } } -void DynBlockRulesGroup::addOrRefreshBlock(boost::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated, bool warning) +void DynBlockRulesGroup::addOrRefreshBlock(std::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated, bool warning) { /* network exclusions are address-based only (no port) */ if (d_excludedSubnets.match(requestor.getNetwork())) { diff --git a/pdns/dnsdistdist/dnsdist-dynblocks.hh b/pdns/dnsdistdist/dnsdist-dynblocks.hh index c21ca8be63..a04d88b4e7 100644 --- a/pdns/dnsdistdist/dnsdist-dynblocks.hh +++ b/pdns/dnsdistdist/dnsdist-dynblocks.hh @@ -257,7 +257,7 @@ public: d_respCacheMissRatioRule = std::move(rule); } - using smtVisitor_t = std::function, boost::optional>(const StatNode&, const StatNode::Stat&, const StatNode::Stat&)>; + using smtVisitor_t = std::function, std::optional>(const StatNode&, const StatNode::Stat&, const StatNode::Stat&)>; void setSuffixMatchRule(DynBlockRule&& rule, smtVisitor_t visitor) { @@ -362,15 +362,15 @@ private: void applySMT(const struct timespec& now, StatNode& statNodeRoot); bool checkIfQueryTypeMatches(const Rings::Query& query); bool checkIfResponseCodeMatches(const Rings::Response& response); - void addOrRefreshBlock(boost::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated, bool warning); + void addOrRefreshBlock(std::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated, bool warning); void addOrRefreshBlockSMT(SuffixDynamicRules& blocks, const struct timespec& now, const DNSName& name, const DynBlockRule& rule, bool& updated); - void addBlock(boost::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated) + void addBlock(std::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated) { addOrRefreshBlock(blocks, now, requestor, rule, updated, false); } - void handleWarning(boost::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated) + void handleWarning(std::optional& blocks, const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule& rule, bool& updated) { addOrRefreshBlock(blocks, now, requestor, rule, updated, true); } diff --git a/pdns/dnsdistdist/dnsdist-idstate.hh b/pdns/dnsdistdist/dnsdist-idstate.hh index eaa9975f97..cb2b2be4ba 100644 --- a/pdns/dnsdistdist/dnsdist-idstate.hh +++ b/pdns/dnsdistdist/dnsdist-idstate.hh @@ -177,7 +177,7 @@ struct InternalQueryState InternalQueryState partialCloneForXFR() const; - boost::optional subnet{boost::none}; // 40 + std::optional subnet{std::nullopt}; // 40 std::string poolName; // 32 #if !defined(DISABLE_PROTOBUF) std::string d_rawProtobufContent; // protobuf-encoded content to add to protobuf messages // 32 @@ -204,7 +204,7 @@ public: std::vector>> delayedResponseMsgs; #endif std::unique_ptr d_extendedError{nullptr}; - boost::optional tempFailureTTL{boost::none}; // 8 + std::optional tempFailureTTL{std::nullopt}; // 8 ClientState* cs{nullptr}; // 8 std::unique_ptr du; // 8 size_t d_proxyProtocolPayloadSize{0}; // 8 diff --git a/pdns/dnsdistdist/dnsdist-lua-actions.cc b/pdns/dnsdistdist/dnsdist-lua-actions.cc index 3a15cd2fe2..f79ec1b480 100644 --- a/pdns/dnsdistdist/dnsdist-lua-actions.cc +++ b/pdns/dnsdistdist/dnsdist-lua-actions.cc @@ -33,7 +33,7 @@ using responseParams_t = std::unordered_map>; -static dnsdist::ResponseConfig parseResponseConfig(boost::optional& vars) +static dnsdist::ResponseConfig parseResponseConfig(std::optional& vars) { dnsdist::ResponseConfig config; getOptionalValue(vars, "ttl", config.ttl); @@ -55,7 +55,7 @@ static std::vector convertLuaArrayToRegular(const LuaArray& luaArray) } template -std::optional boostToStandardOptional(const boost::optional& boostOpt) +std::optional boostToStandardOptional(const std::optional& boostOpt) { return boostOpt ? *boostOpt : std::optional(); } @@ -63,7 +63,7 @@ std::optional boostToStandardOptional(const boost::optional& boostOpt) // NOLINTNEXTLINE(readability-function-cognitive-complexity): this function declares Lua bindings, even with a good refactoring it will likely blow up the threshold void setupLuaActions(LuaContext& luaCtx) { - luaCtx.writeFunction("newRuleAction", [](const luadnsrule_t& dnsrule, std::shared_ptr action, boost::optional params) { + luaCtx.writeFunction("newRuleAction", [](const luadnsrule_t& dnsrule, std::shared_ptr action, std::optional params) { boost::uuids::uuid uuid{}; uint64_t creationOrder = 0; std::string name; @@ -110,7 +110,7 @@ void setupLuaActions(LuaContext& luaCtx) return dnsdist::actions::getLuaFFIResponseAction(std::move(function)); }); - luaCtx.writeFunction("SpoofAction", [](LuaTypeOrArrayOf inp, boost::optional vars) { + luaCtx.writeFunction("SpoofAction", [](LuaTypeOrArrayOf inp, std::optional vars) { vector addrs; if (auto* ipaddr = boost::get(&inp)) { addrs.emplace_back(*ipaddr); @@ -128,7 +128,7 @@ void setupLuaActions(LuaContext& luaCtx) return ret; }); - luaCtx.writeFunction("SpoofSVCAction", [](const LuaArray& parameters, boost::optional vars) { + luaCtx.writeFunction("SpoofSVCAction", [](const LuaArray& parameters, std::optional vars) { auto responseConfig = parseResponseConfig(vars); checkAllParametersConsumed("SpoofAction", vars); auto svcParams = convertLuaArrayToRegular(parameters); @@ -136,14 +136,14 @@ void setupLuaActions(LuaContext& luaCtx) return ret; }); - luaCtx.writeFunction("SpoofCNAMEAction", [](const std::string& cname, boost::optional vars) { + luaCtx.writeFunction("SpoofCNAMEAction", [](const std::string& cname, std::optional vars) { auto responseConfig = parseResponseConfig(vars); checkAllParametersConsumed("SpoofCNAMEAction", vars); auto ret = dnsdist::actions::getSpoofAction(DNSName(cname), responseConfig); return ret; }); - luaCtx.writeFunction("SpoofRawAction", [](LuaTypeOrArrayOf inp, boost::optional vars) { + luaCtx.writeFunction("SpoofRawAction", [](LuaTypeOrArrayOf inp, std::optional vars) { vector raws; if (const auto* str = boost::get(&inp)) { raws.push_back(*str); @@ -178,7 +178,7 @@ void setupLuaActions(LuaContext& luaCtx) return ret; }); - luaCtx.writeFunction("LimitTTLResponseAction", [](uint32_t min, uint32_t max, boost::optional> types) { + luaCtx.writeFunction("LimitTTLResponseAction", [](uint32_t min, uint32_t max, std::optional> types) { std::unordered_set capTypes; if (types) { capTypes.reserve(types->size()); @@ -226,14 +226,14 @@ void setupLuaActions(LuaContext& luaCtx) return dnsdist::actions::getClearRecordTypesResponseAction(std::move(qtypes)); }); - luaCtx.writeFunction("RCodeAction", [](uint8_t rcode, boost::optional vars) { + luaCtx.writeFunction("RCodeAction", [](uint8_t rcode, std::optional vars) { auto responseConfig = parseResponseConfig(vars); checkAllParametersConsumed("RCodeAction", vars); auto ret = dnsdist::actions::getRCodeAction(rcode, responseConfig); return ret; }); - luaCtx.writeFunction("ERCodeAction", [](uint8_t rcode, boost::optional vars) { + luaCtx.writeFunction("ERCodeAction", [](uint8_t rcode, std::optional vars) { auto responseConfig = parseResponseConfig(vars); checkAllParametersConsumed("ERCodeAction", vars); auto ret = dnsdist::actions::getERCodeAction(rcode, responseConfig); @@ -244,7 +244,7 @@ void setupLuaActions(LuaContext& luaCtx) // Used for both RemoteLogAction and RemoteLogResponseAction static const std::array s_validIpEncryptMethods = {"legacy", "ipcrypt-pfx"}; - luaCtx.writeFunction("RemoteLogAction", [](std::shared_ptr logger, boost::optional alterFunc, boost::optional> vars, boost::optional> metas) { + luaCtx.writeFunction("RemoteLogAction", [](std::shared_ptr logger, std::optional alterFunc, std::optional> vars, std::optional> metas) { if (logger) { // avoids potentially-evaluated-expression warning with clang. RemoteLoggerInterface& remoteLoggerRef = *logger; @@ -291,7 +291,7 @@ void setupLuaActions(LuaContext& luaCtx) return dnsdist::actions::getRemoteLogAction(config); }); - luaCtx.writeFunction("RemoteLogResponseAction", [](std::shared_ptr logger, boost::optional alterFunc, boost::optional includeCNAME, boost::optional> vars, boost::optional> metas, boost::optional delay) { + luaCtx.writeFunction("RemoteLogResponseAction", [](std::shared_ptr logger, std::optional alterFunc, std::optional includeCNAME, std::optional> vars, std::optional> metas, std::optional delay) { if (logger) { // avoids potentially-evaluated-expression warning with clang. RemoteLoggerInterface& remoteLoggerRef = *logger; @@ -343,16 +343,16 @@ void setupLuaActions(LuaContext& luaCtx) return dnsdist::actions::getRemoteLogResponseAction(config); }); - luaCtx.writeFunction("DnstapLogAction", [](const std::string& identity, std::shared_ptr logger, boost::optional alterFunc) { + luaCtx.writeFunction("DnstapLogAction", [](const std::string& identity, std::shared_ptr logger, std::optional alterFunc) { return dnsdist::actions::getDnstapLogAction(identity, std::move(logger), alterFunc ? std::move(*alterFunc) : std::optional()); }); - luaCtx.writeFunction("DnstapLogResponseAction", [](const std::string& identity, std::shared_ptr logger, boost::optional alterFunc) { + luaCtx.writeFunction("DnstapLogResponseAction", [](const std::string& identity, std::shared_ptr logger, std::optional alterFunc) { return dnsdist::actions::getDnstapLogResponseAction(identity, std::move(logger), alterFunc ? std::move(*alterFunc) : std::optional()); }); #endif /* DISABLE_PROTOBUF */ - luaCtx.writeFunction("TeeAction", [](const std::string& remote, boost::optional addECS, boost::optional local, boost::optional addProxyProtocol) { + luaCtx.writeFunction("TeeAction", [](const std::string& remote, std::optional addECS, std::optional local, std::optional addProxyProtocol) { std::optional localAddr; if (local) { localAddr = ComboAddress(*local, 0); @@ -361,7 +361,7 @@ void setupLuaActions(LuaContext& luaCtx) return dnsdist::actions::getTeeAction(ComboAddress(remote, 53), localAddr, addECS ? *addECS : false, addProxyProtocol ? *addProxyProtocol : false); }); - luaCtx.writeFunction("SetECSAction", [](const std::string& v4Netmask, boost::optional v6Netmask) { + luaCtx.writeFunction("SetECSAction", [](const std::string& v4Netmask, std::optional v6Netmask) { if (v6Netmask) { return dnsdist::actions::getSetECSAction(v4Netmask, *v6Netmask); } @@ -373,7 +373,7 @@ void setupLuaActions(LuaContext& luaCtx) }); #ifdef HAVE_DNS_OVER_HTTPS - luaCtx.writeFunction("HTTPStatusAction", [](uint16_t status, std::string body, boost::optional contentType, boost::optional vars) { + luaCtx.writeFunction("HTTPStatusAction", [](uint16_t status, std::string body, std::optional contentType, std::optional vars) { auto responseConfig = parseResponseConfig(vars); checkAllParametersConsumed("HTTPStatusAction", vars); auto ret = dnsdist::actions::getHTTPStatusAction(status, PacketBuffer(body.begin(), body.end()), contentType ? *contentType : "", responseConfig); @@ -391,7 +391,7 @@ void setupLuaActions(LuaContext& luaCtx) }); #endif /* defined(HAVE_LMDB) || defined(HAVE_CDB) */ - luaCtx.writeFunction("NegativeAndSOAAction", [](bool nxd, const std::string& zone, uint32_t ttl, const std::string& mname, const std::string& rname, uint32_t serial, uint32_t refresh, uint32_t retry, uint32_t expire, uint32_t minimum, boost::optional vars) { + luaCtx.writeFunction("NegativeAndSOAAction", [](bool nxd, const std::string& zone, uint32_t ttl, const std::string& mname, const std::string& rname, uint32_t serial, uint32_t refresh, uint32_t retry, uint32_t expire, uint32_t minimum, std::optional vars) { bool soaInAuthoritySection = false; getOptionalValue(vars, "soaInAuthoritySection", soaInAuthoritySection); auto responseConfig = parseResponseConfig(vars); diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc index dee2904ef3..bd430542b8 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc @@ -35,14 +35,14 @@ void setupLuaBindingsDNSCrypt([[maybe_unused]] LuaContext& luaCtx, [[maybe_unuse luaCtx.registerFunction("markInactive", &DNSCryptContext::markInactive); luaCtx.registerFunction("reloadCertificates", &DNSCryptContext::reloadCertificates); luaCtx.registerFunction("removeInactiveCertificate", &DNSCryptContext::removeInactiveCertificate); - luaCtx.registerFunction::*)(const std::string& certFile, const std::string& keyFile, boost::optional active)>("loadNewCertificate", [](std::shared_ptr& ctx, const std::string& certFile, const std::string& keyFile, boost::optional active) { + luaCtx.registerFunction::*)(const std::string& certFile, const std::string& keyFile, std::optional active)>("loadNewCertificate", [](std::shared_ptr& ctx, const std::string& certFile, const std::string& keyFile, std::optional active) { if (ctx == nullptr) { throw std::runtime_error("DNSCryptContext::loadNewCertificate() called on a nil value"); } ctx->loadNewCertificate(certFile, keyFile, active ? *active : true); }); - luaCtx.registerFunction::*)(const DNSCryptCert& newCert, const DNSCryptPrivateKey& newKey, boost::optional active)>("addNewCertificate", [](std::shared_ptr& ctx, const DNSCryptCert& newCert, const DNSCryptPrivateKey& newKey, boost::optional active) { + luaCtx.registerFunction::*)(const DNSCryptCert& newCert, const DNSCryptPrivateKey& newKey, std::optional active)>("addNewCertificate", [](std::shared_ptr& ctx, const DNSCryptCert& newCert, const DNSCryptPrivateKey& newKey, std::optional active) { if (ctx == nullptr) { throw std::runtime_error("DNSCryptContext::addNewCertificate() called on a nil value"); } @@ -62,12 +62,12 @@ void setupLuaBindingsDNSCrypt([[maybe_unused]] LuaContext& luaCtx, [[maybe_unuse return result; }); - luaCtx.registerFunction> (std::shared_ptr::*)(size_t idx)>("getCertificatePair", [](std::shared_ptr& ctx, size_t idx) { + luaCtx.registerFunction> (std::shared_ptr::*)(size_t idx)>("getCertificatePair", [](std::shared_ptr& ctx, size_t idx) { if (ctx == nullptr) { throw std::runtime_error("DNSCryptContext::getCertificatePair() called on a nil value"); } - boost::optional> result{boost::none}; + std::optional> result{std::nullopt}; auto pairs = ctx->getCertificates(); if (idx < pairs.size()) { result = pairs.at(idx); @@ -108,7 +108,7 @@ void setupLuaBindingsDNSCrypt([[maybe_unused]] LuaContext& luaCtx, [[maybe_unuse return ret.str(); }); - luaCtx.registerFunction version)>("generateAndLoadInMemoryCertificate", [](DNSCryptContext& ctx, const std::string& providerPrivateKeyFile, uint32_t serial, time_t begin, time_t end, boost::optional version) -> bool { + luaCtx.registerFunction version)>("generateAndLoadInMemoryCertificate", [](DNSCryptContext& ctx, const std::string& providerPrivateKeyFile, uint32_t serial, time_t begin, time_t end, std::optional version) -> bool { DNSCryptPrivateKey privateKey; DNSCryptCert cert; @@ -168,7 +168,7 @@ void setupLuaBindingsDNSCrypt([[maybe_unused]] LuaContext& luaCtx, [[maybe_unuse luaCtx.registerFunction("getTSStart", [](const DNSCryptCert& cert) { return ntohl(cert.getTSStart()); }); luaCtx.registerFunction("getTSEnd", [](const DNSCryptCert& cert) { return ntohl(cert.getTSEnd()); }); - luaCtx.writeFunction("generateDNSCryptCertificate", [client](const std::string& providerPrivateKeyFile, const std::string& certificateFile, const std::string& privateKeyFile, uint32_t serial, time_t begin, time_t end, boost::optional version) { + luaCtx.writeFunction("generateDNSCryptCertificate", [client](const std::string& providerPrivateKeyFile, const std::string& certificateFile, const std::string& privateKeyFile, uint32_t serial, time_t begin, time_t end, std::optional version) { setLuaNoSideEffect(); if (client) { return; diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc index 3d0754e263..1d64b84b4e 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc @@ -107,12 +107,12 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) "ecsOverride", [](const DNSQuestion& dnsQuestion) -> bool { return dnsQuestion.ecsOverride; }, [](DNSQuestion& dnsQuestion, bool ecsOverride) { dnsQuestion.ecsOverride = ecsOverride; }); luaCtx.registerMember( "ecsPrefixLength", [](const DNSQuestion& dnsQuestion) -> uint16_t { return dnsQuestion.ecsPrefixLength; }, [](DNSQuestion& dnsQuestion, uint16_t newPrefixLength) { dnsQuestion.ecsPrefixLength = newPrefixLength; }); - luaCtx.registerMember(DNSQuestion::*)>( + luaCtx.registerMember(DNSQuestion::*)>( "tempFailureTTL", - [](const DNSQuestion& dnsQuestion) -> boost::optional { + [](const DNSQuestion& dnsQuestion) -> std::optional { return dnsQuestion.ids.tempFailureTTL; }, - [](DNSQuestion& dnsQuestion, boost::optional newValue) { + [](DNSQuestion& dnsQuestion, std::optional newValue) { dnsQuestion.ids.tempFailureTTL = newValue; }); luaCtx.registerMember( @@ -204,7 +204,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return dnsQuestion.ids.queryRealTime.udiff(); }); - luaCtx.registerFunction("sendTrap", []([[maybe_unused]] const DNSQuestion& dnsQuestion, [[maybe_unused]] boost::optional reason) { + luaCtx.registerFunction("sendTrap", []([[maybe_unused]] const DNSQuestion& dnsQuestion, [[maybe_unused]] std::optional reason) { #ifdef HAVE_NET_SNMP if (g_snmpAgent != nullptr && dnsdist::configuration::getImmutableConfiguration().d_snmpTrapsEnabled) { g_snmpAgent->sendDNSTrap(dnsQuestion, reason ? *reason : ""); @@ -290,7 +290,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return true; }); - luaCtx.registerFunction, LuaArray>&, boost::optional)>("spoof", [](DNSQuestion& dnsQuestion, const boost::variant, LuaArray>& response, boost::optional typeForAny) { + luaCtx.registerFunction, LuaArray>&, std::optional)>("spoof", [](DNSQuestion& dnsQuestion, const boost::variant, LuaArray>& response, std::optional typeForAny) { dnsdist::ResponseConfig responseConfig; if (response.type() == typeid(LuaArray)) { std::vector data; @@ -318,7 +318,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) setEDNSOption(dnsQuestion, code, data); }); - luaCtx.registerFunction& extraText)>("setExtendedDNSError", [](DNSQuestion& dnsQuestion, uint16_t infoCode, const boost::optional& extraText) { + luaCtx.registerFunction& extraText)>("setExtendedDNSError", [](DNSQuestion& dnsQuestion, uint16_t infoCode, const std::optional& extraText) { EDNSExtendedError ede; ede.infoCode = infoCode; if (extraText) { @@ -572,7 +572,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return {}; }); - luaCtx.registerFunction("sendTrap", []([[maybe_unused]] const DNSResponse& dnsResponse, [[maybe_unused]] boost::optional reason) { + luaCtx.registerFunction("sendTrap", []([[maybe_unused]] const DNSResponse& dnsResponse, [[maybe_unused]] std::optional reason) { #ifdef HAVE_NET_SNMP if (g_snmpAgent != nullptr && dnsdist::configuration::getImmutableConfiguration().d_snmpTrapsEnabled) { g_snmpAgent->sendDNSTrap(dnsResponse, reason ? *reason : ""); @@ -653,7 +653,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return LuaAssociativeTable(); }); - luaCtx.registerFunction contentType)>("setHTTPResponse", [](DNSQuestion& dnsQuestion, uint64_t statusCode, const std::string& body, [[maybe_unused]] const boost::optional& contentType) { + luaCtx.registerFunction contentType)>("setHTTPResponse", [](DNSQuestion& dnsQuestion, uint64_t statusCode, const std::string& body, [[maybe_unused]] const std::optional& contentType) { if (dnsQuestion.ids.du == nullptr && dnsQuestion.ids.doh3u == nullptr) { return; } @@ -682,7 +682,7 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return setNegativeAndAdditionalSOA(dnsQuestion, nxd, DNSName(zone), ttl, DNSName(mname), DNSName(rname), serial, refresh, retry, expire, minimum, false); }); - luaCtx.registerFunction& extraText)>("setExtendedDNSError", [](DNSResponse& dnsResponse, uint16_t infoCode, const boost::optional& extraText) { + luaCtx.registerFunction& extraText)>("setExtendedDNSError", [](DNSResponse& dnsResponse, uint16_t infoCode, const std::optional& extraText) { EDNSExtendedError ede; ede.infoCode = infoCode; if (extraText) { @@ -716,8 +716,8 @@ void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx) return dnsdist::queueQueryResumptionEvent(std::move(query)); }); - luaCtx.registerFunction> (DNSResponse::*)(void) const>("getSelectedBackend", [](const DNSResponse& dnsResponse) { - return dnsResponse.d_downstream ? dnsResponse.d_downstream : boost::optional>(); + luaCtx.registerFunction> (DNSResponse::*)(void) const>("getSelectedBackend", [](const DNSResponse& dnsResponse) { + return dnsResponse.d_downstream ? dnsResponse.d_downstream : std::optional>(); }); luaCtx.registerFunction("getStaleCacheHit", [](DNSResponse& dnsResponse) { diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc index 702acfb1ad..88aa008a05 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc @@ -26,7 +26,7 @@ void setupLuaBindingsKVS([[maybe_unused]] LuaContext& luaCtx, [[maybe_unused]] bool client) { #ifdef HAVE_LMDB - luaCtx.writeFunction("newLMDBKVStore", [client](const std::string& fname, const std::string& dbName, boost::optional noLock) { + luaCtx.writeFunction("newLMDBKVStore", [client](const std::string& fname, const std::string& dbName, std::optional noLock) { if (client) { return std::shared_ptr(nullptr); } @@ -45,20 +45,20 @@ void setupLuaBindingsKVS([[maybe_unused]] LuaContext& luaCtx, [[maybe_unused]] b #if defined(HAVE_LMDB) || defined(HAVE_CDB) /* Key Value Store objects */ - luaCtx.writeFunction("KeyValueLookupKeySourceIP", [](boost::optional v4Mask, boost::optional v6Mask, boost::optional includePort) { + luaCtx.writeFunction("KeyValueLookupKeySourceIP", [](std::optional v4Mask, std::optional v6Mask, std::optional includePort) { return std::shared_ptr(new KeyValueLookupKeySourceIP(v4Mask ? *v4Mask : 32, v6Mask ? *v6Mask : 128, includePort ? *includePort : false)); }); - luaCtx.writeFunction("KeyValueLookupKeyQName", [](boost::optional wireFormat) { + luaCtx.writeFunction("KeyValueLookupKeyQName", [](std::optional wireFormat) { return std::shared_ptr(new KeyValueLookupKeyQName(wireFormat ? *wireFormat : true)); }); - luaCtx.writeFunction("KeyValueLookupKeySuffix", [](boost::optional minLabels, boost::optional wireFormat) { + luaCtx.writeFunction("KeyValueLookupKeySuffix", [](std::optional minLabels, std::optional wireFormat) { return std::shared_ptr(new KeyValueLookupKeySuffix(minLabels ? *minLabels : 0, wireFormat ? *wireFormat : true)); }); luaCtx.writeFunction("KeyValueLookupKeyTag", [](const std::string& tag) { return std::shared_ptr(new KeyValueLookupKeyTag(tag)); }); - luaCtx.registerFunction::*)(const boost::variant, boost::optional wireFormat)>("lookup", [](std::shared_ptr& kvs, const boost::variant keyVar, boost::optional wireFormat) { + luaCtx.registerFunction::*)(const boost::variant, std::optional wireFormat)>("lookup", [](std::shared_ptr& kvs, const boost::variant keyVar, std::optional wireFormat) { std::string result; if (!kvs) { return result; @@ -90,7 +90,7 @@ void setupLuaBindingsKVS([[maybe_unused]] LuaContext& luaCtx, [[maybe_unused]] b return result; }); - luaCtx.registerFunction::*)(const DNSName&, boost::optional minLabels, boost::optional wireFormat)>("lookupSuffix", [](std::shared_ptr& kvs, const DNSName& dn, boost::optional minLabels, boost::optional wireFormat) { + luaCtx.registerFunction::*)(const DNSName&, std::optional minLabels, std::optional wireFormat)>("lookupSuffix", [](std::shared_ptr& kvs, const DNSName& dn, std::optional minLabels, std::optional wireFormat) { std::string result; if (!kvs) { return result; diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc index 6a3fb0059a..2ccfa5b012 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc @@ -31,7 +31,7 @@ void setupLuaBindingsPacketCache(LuaContext& luaCtx, bool client) { /* PacketCache */ - luaCtx.writeFunction("newPacketCache", [client](size_t maxEntries, boost::optional>>> vars) { + luaCtx.writeFunction("newPacketCache", [client](size_t maxEntries, std::optional>>> vars) { DNSDistPacketCache::CacheSettings settings { .d_maxEntries = maxEntries, @@ -130,11 +130,11 @@ void setupLuaBindingsPacketCache(LuaContext& luaCtx, bool client) } return static_cast(0); }); - luaCtx.registerFunction::*)(const boost::variant& dname, boost::optional qtype, boost::optional suffixMatch)>("expungeByName", []( + luaCtx.registerFunction::*)(const boost::variant& dname, std::optional qtype, std::optional suffixMatch)>("expungeByName", []( std::shared_ptr& cache, const boost::variant& dname, - boost::optional qtype, - boost::optional suffixMatch) { + std::optional qtype, + std::optional suffixMatch) { DNSName qname; if (dname.type() == typeid(DNSName)) { qname = boost::get(dname); @@ -208,7 +208,7 @@ void setupLuaBindingsPacketCache(LuaContext& luaCtx, bool client) return results; }); - luaCtx.registerFunction::*)(const std::string& fname, boost::optional rawResponse)const>("dump", [](const std::shared_ptr& cache, const std::string& fname, boost::optional rawResponse) { + luaCtx.registerFunction::*)(const std::string& fname, std::optional rawResponse)const>("dump", [](const std::shared_ptr& cache, const std::string& fname, std::optional rawResponse) { if (cache) { int fd = open(fname.c_str(), O_CREAT | O_EXCL | O_WRONLY, 0660); diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc b/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc index 49f99ec366..f7c654b97f 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc @@ -33,7 +33,7 @@ #include "remote_logger_pool.hh" #ifdef HAVE_FSTRM -static void parseFSTRMOptions(boost::optional>& params, LuaAssociativeTable& options) +static void parseFSTRMOptions(std::optional>& params, LuaAssociativeTable& options) { if (!params) { return; @@ -72,8 +72,8 @@ void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.registerFunction sec, boost::optional uSec)>("setProtobufResponseType", - [](DNSDistProtoBufMessage& message, boost::optional sec, boost::optional uSec) { + luaCtx.registerFunction sec, std::optional uSec)>("setProtobufResponseType", + [](DNSDistProtoBufMessage& message, std::optional sec, std::optional uSec) { message.setType(pdns::ProtoZero::Message::MessageType::DNSResponseType); message.setQueryTime(sec ? *sec : 0, uSec ? *uSec : 0); }); @@ -88,25 +88,25 @@ void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool configCheck) luaCtx.registerFunction("setQueryTime", [](DNSDistProtoBufMessage& message, time_t sec, uint32_t usec) { message.setQueryTime(sec, usec); }); luaCtx.registerFunction("setResponseCode", [](DNSDistProtoBufMessage& message, uint8_t rcode) { message.setResponseCode(rcode); }); - luaCtx.registerFunction)>("setRequestor", [](DNSDistProtoBufMessage& message, const ComboAddress& addr, boost::optional port) { + luaCtx.registerFunction)>("setRequestor", [](DNSDistProtoBufMessage& message, const ComboAddress& addr, std::optional port) { message.setRequestor(addr); if (port) { message.setRequestorPort(*port); } }); - luaCtx.registerFunction)>("setRequestorFromString", [](DNSDistProtoBufMessage& message, const std::string& str, boost::optional port) { + luaCtx.registerFunction)>("setRequestorFromString", [](DNSDistProtoBufMessage& message, const std::string& str, std::optional port) { message.setRequestor(ComboAddress(str)); if (port) { message.setRequestorPort(*port); } }); - luaCtx.registerFunction)>("setResponder", [](DNSDistProtoBufMessage& message, const ComboAddress& addr, boost::optional port) { + luaCtx.registerFunction)>("setResponder", [](DNSDistProtoBufMessage& message, const ComboAddress& addr, std::optional port) { message.setResponder(addr); if (port) { message.setResponderPort(*port); } }); - luaCtx.registerFunction)>("setResponderFromString", [](DNSDistProtoBufMessage& message, const std::string& str, boost::optional port) { + luaCtx.registerFunction)>("setResponderFromString", [](DNSDistProtoBufMessage& message, const std::string& str, std::optional port) { message.setResponder(ComboAddress(str)); if (port) { message.setResponderPort(*port); @@ -121,7 +121,7 @@ void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool configCheck) }); /* RemoteLogger */ - luaCtx.writeFunction("newRemoteLogger", [client, configCheck](const std::string& remote, boost::optional timeout, boost::optional maxQueuedEntries, boost::optional reconnectWaitTime, boost::optional connectionCount) { + luaCtx.writeFunction("newRemoteLogger", [client, configCheck](const std::string& remote, std::optional timeout, std::optional maxQueuedEntries, std::optional reconnectWaitTime, std::optional connectionCount) { if (client || configCheck) { return std::shared_ptr(nullptr); } @@ -138,7 +138,7 @@ void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool configCheck) return std::shared_ptr(new RemoteLogger(ComboAddress(remote), timeout ? *timeout : 2, maxQueuedEntries ? (*maxQueuedEntries * 100) : 10000, reconnectWaitTime ? *reconnectWaitTime : 1, client)); }); - luaCtx.writeFunction("newFrameStreamUnixLogger", [client, configCheck]([[maybe_unused]] const std::string& address, [[maybe_unused]] boost::optional> params) { + luaCtx.writeFunction("newFrameStreamUnixLogger", [client, configCheck]([[maybe_unused]] const std::string& address, [[maybe_unused]] std::optional> params) { #ifdef HAVE_FSTRM if (client || configCheck) { return std::shared_ptr(nullptr); @@ -167,7 +167,7 @@ void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool configCheck) #endif /* HAVE_FSTRM */ }); - luaCtx.writeFunction("newFrameStreamTcpLogger", [client, configCheck]([[maybe_unused]] const std::string& address, [[maybe_unused]] boost::optional> params) { + luaCtx.writeFunction("newFrameStreamTcpLogger", [client, configCheck]([[maybe_unused]] const std::string& address, [[maybe_unused]] std::optional> params) { #if defined(HAVE_FSTRM) && defined(HAVE_FSTRM_TCP_WRITER_INIT) if (client || configCheck) { return std::shared_ptr(nullptr); diff --git a/pdns/dnsdistdist/dnsdist-lua-bindings.cc b/pdns/dnsdistdist/dnsdist-lua-bindings.cc index 48a82303f5..279135f4b5 100644 --- a/pdns/dnsdistdist/dnsdist-lua-bindings.cc +++ b/pdns/dnsdistdist/dnsdist-lua-bindings.cc @@ -255,7 +255,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return "lazy"; }); - luaCtx.registerFunction::*)(boost::optional newStatus)>("setAuto", [](std::shared_ptr& state, boost::optional newStatus) { + luaCtx.registerFunction::*)(std::optional newStatus)>("setAuto", [](std::shared_ptr& state, std::optional newStatus) { if (!state) { return; } @@ -264,7 +264,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } state->setAuto(); }); - luaCtx.registerFunction::*)(boost::optional newStatus)>("setActiveAuto", [](std::shared_ptr& state, boost::optional newStatus) { + luaCtx.registerFunction::*)(std::optional newStatus)>("setActiveAuto", [](std::shared_ptr& state, std::optional newStatus) { if (!state) { return; } @@ -273,7 +273,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } state->setActiveAuto(); }); - luaCtx.registerFunction::*)(boost::optional newStatus)>("setLazyAuto", [](std::shared_ptr& state, boost::optional newStatus) { + luaCtx.registerFunction::*)(std::optional newStatus)>("setLazyAuto", [](std::shared_ptr& state, std::optional newStatus) { if (!state) { return; } @@ -282,7 +282,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } state->setLazyAuto(); }); - luaCtx.registerFunction::*)(boost::optional>>)>("setHealthCheckParams", [](std::shared_ptr& state, boost::optional>> vars) { + luaCtx.registerFunction::*)(std::optional>>)>("setHealthCheckParams", [](std::shared_ptr& state, std::optional>> vars) { if (!state) { return; } @@ -443,7 +443,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) #ifndef DISABLE_COMBO_ADDR_BINDINGS /* ComboAddress */ luaCtx.writeFunction("newCA", [](const std::string& name) { return ComboAddress(name); }); - luaCtx.writeFunction("newCAFromRaw", [](const std::string& raw, boost::optional port) { + luaCtx.writeFunction("newCAFromRaw", [](const std::string& raw, std::optional port) { if (raw.size() == 4) { sockaddr_in sin4{}; memset(&sin4, 0, sizeof(sin4)); @@ -574,8 +574,8 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) // clang-format off luaCtx.registerFunction("check", (bool (SuffixMatchNode::*)(const DNSName&) const) &SuffixMatchNode::check); // clang-format on - luaCtx.registerFunction (SuffixMatchNode::*)(const DNSName&) const>("getBestMatch", [](const SuffixMatchNode& smn, const DNSName& needle) { - boost::optional result{boost::none}; + luaCtx.registerFunction (SuffixMatchNode::*)(const DNSName&) const>("getBestMatch", [](const SuffixMatchNode& smn, const DNSName& needle) { + std::optional result{std::nullopt}; auto res = smn.getBestMatch(needle); if (res) { result = *res; @@ -586,7 +586,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) #ifndef DISABLE_NETMASK_BINDINGS /* Netmask */ - luaCtx.writeFunction("newNetmask", [](boost::variant addrOrStr, boost::optional bits) { + luaCtx.writeFunction("newNetmask", [](boost::variant addrOrStr, std::optional bits) { if (addrOrStr.type() == typeid(ComboAddress)) { const auto& comboAddr = boost::get(addrOrStr); if (bits) { @@ -756,7 +756,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return std::make_shared(mapsConfig, format, external); }); - luaCtx.registerFunction::*)(const ComboAddress& addr, boost::optional action)>("block", [](const std::shared_ptr& bpf, const ComboAddress& addr, boost::optional action) { + luaCtx.registerFunction::*)(const ComboAddress& addr, std::optional action)>("block", [](const std::shared_ptr& bpf, const ComboAddress& addr, std::optional action) { if (bpf) { if (!action) { return bpf->block(addr, BPFFilter::MatchAction::Drop); @@ -779,7 +779,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return bpf->block(addr, match); } }); - luaCtx.registerFunction::*)(const string& range, uint32_t action, boost::optional force)>("addRangeRule", [](const std::shared_ptr& bpf, const string& range, uint32_t action, boost::optional force) { + luaCtx.registerFunction::*)(const string& range, uint32_t action, std::optional force)>("addRangeRule", [](const std::shared_ptr& bpf, const string& range, uint32_t action, std::optional force) { if (!bpf) { return; } @@ -799,7 +799,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return bpf->addRangeRule(Netmask(range), force ? *force : false, match); }); - luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype, boost::optional action)>("blockQName", [](const std::shared_ptr& bpf, const DNSName& qname, boost::optional qtype, boost::optional action) { + luaCtx.registerFunction::*)(const DNSName& qname, std::optional qtype, std::optional action)>("blockQName", [](const std::shared_ptr& bpf, const DNSName& qname, std::optional qtype, std::optional action) { if (bpf) { if (!action) { return bpf->block(qname, BPFFilter::MatchAction::Drop, qtype ? *qtype : 65535); @@ -851,7 +851,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) } return res; }); - luaCtx.registerFunction::*)(const DNSName& qname, boost::optional qtype)>("unblockQName", [](const std::shared_ptr& bpf, const DNSName& qname, boost::optional qtype) { + luaCtx.registerFunction::*)(const DNSName& qname, std::optional qtype)>("unblockQName", [](const std::shared_ptr& bpf, const DNSName& qname, std::optional qtype) { if (bpf) { return bpf->unblock(qname, qtype ? *qtype : 65535); } @@ -907,7 +907,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return std::make_shared(bpf); }); - luaCtx.registerFunction::*)(const ComboAddress& addr, boost::optional seconds)>("block", [](const std::shared_ptr& dbpf, const ComboAddress& addr, boost::optional seconds) { + luaCtx.registerFunction::*)(const ComboAddress& addr, std::optional seconds)>("block", [](const std::shared_ptr& dbpf, const ComboAddress& addr, std::optional seconds) { if (dbpf) { timespec until{}; clock_gettime(CLOCK_MONOTONIC, &until); @@ -1009,9 +1009,9 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return values; }); - luaCtx.writeFunction("newDOHResponseMapEntry", [](const std::string& regex, uint64_t status, const std::string& content, boost::optional> customHeaders) { + luaCtx.writeFunction("newDOHResponseMapEntry", [](const std::string& regex, uint64_t status, const std::string& content, std::optional> customHeaders) { checkParameterBound("newDOHResponseMapEntry", status, std::numeric_limits::max()); - boost::optional> headers{boost::none}; + std::optional> headers{std::nullopt}; if (customHeaders) { headers = LuaAssociativeTable(); for (const auto& header : *customHeaders) { @@ -1021,7 +1021,7 @@ void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck) return std::make_shared(regex, status, PacketBuffer(content.begin(), content.end()), headers); }); - luaCtx.writeFunction("newSVCRecordParameters", [](uint64_t priority, const std::string& target, boost::optional additionalParameters) { + luaCtx.writeFunction("newSVCRecordParameters", [](uint64_t priority, const std::string& target, std::optional additionalParameters) { checkParameterBound("newSVCRecordParameters", priority, std::numeric_limits::max()); SVCRecordParameters parameters; if (additionalParameters) { diff --git a/pdns/dnsdistdist/dnsdist-lua-ffi.cc b/pdns/dnsdistdist/dnsdist-lua-ffi.cc index c1b174ddb1..cfd51b39ce 100644 --- a/pdns/dnsdistdist/dnsdist-lua-ffi.cc +++ b/pdns/dnsdistdist/dnsdist-lua-ffi.cc @@ -233,7 +233,7 @@ uint16_t dnsdist_ffi_dnsquestion_get_ecs_prefix_length(const dnsdist_ffi_dnsques bool dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set(const dnsdist_ffi_dnsquestion_t* dq) { - return dq->dq->ids.tempFailureTTL != boost::none; + return dq->dq->ids.tempFailureTTL != std::nullopt; } uint32_t dnsdist_ffi_dnsquestion_get_temp_failure_ttl(const dnsdist_ffi_dnsquestion_t* dq) @@ -583,7 +583,7 @@ void dnsdist_ffi_dnsquestion_set_temp_failure_ttl(dnsdist_ffi_dnsquestion_t* dq, void dnsdist_ffi_dnsquestion_unset_temp_failure_ttl(dnsdist_ffi_dnsquestion_t* dq) { - dq->dq->ids.tempFailureTTL = boost::none; + dq->dq->ids.tempFailureTTL = std::nullopt; } void dnsdist_ffi_dnsquestion_set_tag(dnsdist_ffi_dnsquestion_t* dq, const char* label, const char* value) diff --git a/pdns/dnsdistdist/dnsdist-lua-inspection.cc b/pdns/dnsdistdist/dnsdist-lua-inspection.cc index eb10bedbb1..c44d9b6ee4 100644 --- a/pdns/dnsdistdist/dnsdist-lua-inspection.cc +++ b/pdns/dnsdistdist/dnsdist-lua-inspection.cc @@ -35,7 +35,7 @@ #include "statnode.hh" #ifndef DISABLE_TOP_N_BINDINGS -static LuaArray>> getGenResponses(uint64_t top, boost::optional labels, const std::function& pred) +static LuaArray>> getGenResponses(uint64_t top, std::optional labels, const std::function& pred) { setLuaNoSideEffect(); map counts; @@ -153,7 +153,7 @@ static void statNodeRespRing(statvisitor_t visitor, uint64_t seconds) root.visit([visitor = std::move(visitor)](const StatNode* node_, const StatNode::Stat& self, const StatNode::Stat& children) { visitor(*node_, self, children); }, node); } -static LuaArray> getRespRing(boost::optional rcode) +static LuaArray> getRespRing(std::optional rcode) { using entry_t = LuaAssociativeTable; LuaArray ret; @@ -163,7 +163,7 @@ static LuaArray> getRespRing(boost::optional parseGrepQParams(const LuaTypeOrArrayOf& inp, boost::optional>& options) +static std::optional parseGrepQParams(const LuaTypeOrArrayOf& inp, std::optional>& options) { GrepQParams result{}; @@ -364,9 +364,9 @@ static bool ringEntryMatches(const GrepQParams& params, const C& entry) } #ifndef DISABLE_DYNBLOCKS -using DynamicActionOptionalParameters = boost::optional>; +using DynamicActionOptionalParameters = std::optional>; -static void parseDynamicActionOptionalParameters(const std::string& directive, DynBlockRulesGroup::DynBlockRule& rule, const boost::optional& action, const DynamicActionOptionalParameters& optionalParameters) +static void parseDynamicActionOptionalParameters(const std::string& directive, DynBlockRulesGroup::DynBlockRule& rule, const std::optional& action, const DynamicActionOptionalParameters& optionalParameters) { if (action && *action == DNSAction::Action::SetTag) { if (!optionalParameters) { @@ -390,7 +390,7 @@ static void parseDynamicActionOptionalParameters(const std::string& directive, D void setupLuaInspection(LuaContext& luaCtx) { #ifndef DISABLE_TOP_N_BINDINGS - luaCtx.writeFunction("topClients", [](boost::optional top_) { + luaCtx.writeFunction("topClients", [](std::optional top_) { setLuaNoSideEffect(); uint64_t top = top_ ? *top_ : 10U; map counts; @@ -427,7 +427,7 @@ void setupLuaInspection(LuaContext& luaCtx) g_outputBuffer += (fmt % (count) % "Rest" % rest % (total > 0 ? 100.0 * rest / total : 100.0)).str(); }); - luaCtx.writeFunction("getTopQueries", [](uint64_t top, boost::optional labels) { + luaCtx.writeFunction("getTopQueries", [](uint64_t top, std::optional labels) { setLuaNoSideEffect(); map counts; unsigned int total = 0; @@ -514,13 +514,13 @@ void setupLuaInspection(LuaContext& luaCtx) return ret; }); - luaCtx.writeFunction("getTopResponses", [](uint64_t top, uint64_t kind, boost::optional labels) { + luaCtx.writeFunction("getTopResponses", [](uint64_t top, uint64_t kind, std::optional labels) { return getGenResponses(top, labels, [kind](const Rings::Response& resp) { return resp.dh.rcode == kind; }); }); luaCtx.executeCode(R"(function topResponses(top, kind, labels) top = top or 10; kind = kind or 0; for k,v in ipairs(getTopResponses(top, kind, labels)) do show(string.format("%4d %-40s %4d %4.1f%%",k,v[1],v[2],v[3])) end end)"); - luaCtx.writeFunction("getSlowResponses", [](uint64_t top, uint64_t msec, boost::optional labels, boost::optional timeouts) { + luaCtx.writeFunction("getSlowResponses", [](uint64_t top, uint64_t msec, std::optional labels, std::optional timeouts) { return getGenResponses(top, labels, [msec, timeouts](const Rings::Response& resp) { if (timeouts && *timeouts) { return resp.usec == std::numeric_limits::max(); @@ -554,7 +554,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); - luaCtx.writeFunction("grepq", [](const LuaTypeOrArrayOf& inp, boost::optional limit, boost::optional> options) { + luaCtx.writeFunction("grepq", [](const LuaTypeOrArrayOf& inp, std::optional limit, std::optional> options) { setLuaNoSideEffect(); auto paramsOrError = parseGrepQParams(inp, options); @@ -912,7 +912,7 @@ void setupLuaInspection(LuaContext& luaCtx) luaCtx.registerMember("bytes", &StatNode::Stat::bytes); luaCtx.registerMember("hits", &StatNode::Stat::hits); - luaCtx.writeFunction("statNodeRespRing", [](statvisitor_t visitor, boost::optional seconds) { + luaCtx.writeFunction("statNodeRespRing", [](statvisitor_t visitor, std::optional seconds) { statNodeRespRing(std::move(visitor), seconds ? *seconds : 0U); }); #endif /* DISABLE_DEPRECATED_DYNBLOCK */ @@ -920,7 +920,7 @@ void setupLuaInspection(LuaContext& luaCtx) /* DynBlockRulesGroup */ luaCtx.writeFunction("dynBlockRulesGroup", []() { return std::make_shared(); }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(unsigned int, unsigned int, const std::string&, unsigned int, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setQueryRate", [](std::shared_ptr& group, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, boost::optional warningRate, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(unsigned int, unsigned int, const std::string&, unsigned int, std::optional, std::optional, DynamicActionOptionalParameters)>("setQueryRate", [](std::shared_ptr& group, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, std::optional warningRate, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, rate, warningRate ? *warningRate : 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setQueryRate", rule, action, optionalParameters); @@ -928,7 +928,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(unsigned int, unsigned int, const std::string&, unsigned int, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setResponseByteRate", [](std::shared_ptr& group, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, boost::optional warningRate, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(unsigned int, unsigned int, const std::string&, unsigned int, std::optional, std::optional, DynamicActionOptionalParameters)>("setResponseByteRate", [](std::shared_ptr& group, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, std::optional warningRate, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, rate, warningRate ? *warningRate : 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setResponseByteRate", rule, action, optionalParameters); @@ -936,7 +936,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(unsigned int, const std::string&, unsigned int, boost::optional, DynBlockRulesGroup::smtVisitor_t, DynamicActionOptionalParameters)>("setSuffixMatchRule", [](std::shared_ptr& group, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, DynBlockRulesGroup::smtVisitor_t visitor, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(unsigned int, const std::string&, unsigned int, std::optional, DynBlockRulesGroup::smtVisitor_t, DynamicActionOptionalParameters)>("setSuffixMatchRule", [](std::shared_ptr& group, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, DynBlockRulesGroup::smtVisitor_t visitor, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, 0, 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setSuffixMatchRule", rule, action, optionalParameters); @@ -944,7 +944,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(unsigned int, const std::string&, unsigned int, boost::optional, dnsdist_ffi_stat_node_visitor_t, DynamicActionOptionalParameters)>("setSuffixMatchRuleFFI", [](std::shared_ptr& group, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, dnsdist_ffi_stat_node_visitor_t visitor, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(unsigned int, const std::string&, unsigned int, std::optional, dnsdist_ffi_stat_node_visitor_t, DynamicActionOptionalParameters)>("setSuffixMatchRuleFFI", [](std::shared_ptr& group, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, dnsdist_ffi_stat_node_visitor_t visitor, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, 0, 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setSuffixMatchRuleFFI", rule, action, optionalParameters); @@ -957,7 +957,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(uint8_t, unsigned int, unsigned int, const std::string&, unsigned int, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setRCodeRate", [](std::shared_ptr& group, uint8_t rcode, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, boost::optional warningRate, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(uint8_t, unsigned int, unsigned int, const std::string&, unsigned int, std::optional, std::optional, DynamicActionOptionalParameters)>("setRCodeRate", [](std::shared_ptr& group, uint8_t rcode, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, std::optional warningRate, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, rate, warningRate ? *warningRate : 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setRCodeRate", rule, action, optionalParameters); @@ -965,7 +965,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(uint8_t, double, unsigned int, const std::string&, unsigned int, size_t, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setRCodeRatio", [](std::shared_ptr& group, uint8_t rcode, double ratio, unsigned int seconds, const std::string& reason, unsigned int blockDuration, size_t minimumNumberOfResponses, boost::optional action, boost::optional warningRatio, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(uint8_t, double, unsigned int, const std::string&, unsigned int, size_t, std::optional, std::optional, DynamicActionOptionalParameters)>("setRCodeRatio", [](std::shared_ptr& group, uint8_t rcode, double ratio, unsigned int seconds, const std::string& reason, unsigned int blockDuration, size_t minimumNumberOfResponses, std::optional action, std::optional warningRatio, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRatioRule rule(reason, blockDuration, ratio, warningRatio ? *warningRatio : 0.0, seconds, action ? *action : DNSAction::Action::None, minimumNumberOfResponses); parseDynamicActionOptionalParameters("setRCodeRatio", rule, action, optionalParameters); @@ -973,7 +973,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(uint16_t, unsigned int, unsigned int, const std::string&, unsigned int, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setQTypeRate", [](std::shared_ptr& group, uint16_t qtype, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, boost::optional action, boost::optional warningRate, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(uint16_t, unsigned int, unsigned int, const std::string&, unsigned int, std::optional, std::optional, DynamicActionOptionalParameters)>("setQTypeRate", [](std::shared_ptr& group, uint16_t qtype, unsigned int rate, unsigned int seconds, const std::string& reason, unsigned int blockDuration, std::optional action, std::optional warningRate, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, rate, warningRate ? *warningRate : 0, seconds, action ? *action : DNSAction::Action::None); parseDynamicActionOptionalParameters("setQTypeRate", rule, action, optionalParameters); @@ -981,7 +981,7 @@ void setupLuaInspection(LuaContext& luaCtx) } }); // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - luaCtx.registerFunction::*)(double, unsigned int, const std::string&, unsigned int, size_t, double, boost::optional, boost::optional, DynamicActionOptionalParameters)>("setCacheMissRatio", [](std::shared_ptr& group, double ratio, unsigned int seconds, const std::string& reason, unsigned int blockDuration, size_t minimumNumberOfResponses, double minimumGlobalCacheHitRatio, boost::optional action, boost::optional warningRatio, DynamicActionOptionalParameters optionalParameters) { + luaCtx.registerFunction::*)(double, unsigned int, const std::string&, unsigned int, size_t, double, std::optional, std::optional, DynamicActionOptionalParameters)>("setCacheMissRatio", [](std::shared_ptr& group, double ratio, unsigned int seconds, const std::string& reason, unsigned int blockDuration, size_t minimumNumberOfResponses, double minimumGlobalCacheHitRatio, std::optional action, std::optional warningRatio, DynamicActionOptionalParameters optionalParameters) { if (group) { DynBlockRulesGroup::DynBlockCacheMissRatioRule rule(reason, blockDuration, ratio, warningRatio ? *warningRatio : 0.0, seconds, action ? *action : DNSAction::Action::None, minimumNumberOfResponses, minimumGlobalCacheHitRatio); parseDynamicActionOptionalParameters("setCacheMissRatio", rule, action, optionalParameters); @@ -1093,7 +1093,7 @@ void setupLuaInspection(LuaContext& luaCtx) luaCtx.writeFunction("addDynBlockSMT", // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - [](const LuaArray& names, const std::string& msg, boost::optional seconds, boost::optional action, DynamicActionOptionalParameters optionalParameters) { + [](const LuaArray& names, const std::string& msg, std::optional seconds, std::optional action, DynamicActionOptionalParameters optionalParameters) { if (names.empty()) { return; } @@ -1125,7 +1125,7 @@ void setupLuaInspection(LuaContext& luaCtx) luaCtx.writeFunction("addDynamicBlock", // NOLINTNEXTLINE(performance-unnecessary-value-param): optional parameters cannot be passed by const reference - [](const boost::variant& clientIP, const std::string& msg, const boost::optional action, const boost::optional seconds, boost::optional clientIPMask, boost::optional clientIPPortMask, DynamicActionOptionalParameters optionalParameters) { + [](const boost::variant& clientIP, const std::string& msg, const std::optional action, const std::optional seconds, std::optional clientIPMask, std::optional clientIPPortMask, DynamicActionOptionalParameters optionalParameters) { setLuaSideEffect(); ComboAddress clientIPCA; diff --git a/pdns/dnsdistdist/dnsdist-lua-rules.cc b/pdns/dnsdistdist/dnsdist-lua-rules.cc index e915f817aa..30d5f0db82 100644 --- a/pdns/dnsdistdist/dnsdist-lua-rules.cc +++ b/pdns/dnsdistdist/dnsdist-lua-rules.cc @@ -25,6 +25,7 @@ #include "dnsdist-rules-factory.hh" #include "dnsdist-rule-chains.hh" #include "dns_random.hh" +#include std::shared_ptr makeRule(const luadnsrule_t& var, const std::string& calledFrom) { @@ -81,7 +82,7 @@ static boost::uuids::uuid makeRuleID(std::string& identifier) return getUniqueID(identifier); } -void parseRuleParams(boost::optional& params, boost::uuids::uuid& uuid, std::string& name, uint64_t& creationOrder) +void parseRuleParams(std::optional& params, boost::uuids::uuid& uuid, std::string& name, uint64_t& creationOrder) { static uint64_t s_creationOrder = 0; @@ -97,7 +98,7 @@ void parseRuleParams(boost::optional& params, boost::uuids::uui using ruleparams_t = LuaAssociativeTable>>; template -static std::string rulesToString(const std::vector& rules, boost::optional& vars) +static std::string rulesToString(const std::vector& rules, std::optional& vars) { int num = 0; bool showUUIDs = false; @@ -130,7 +131,7 @@ static std::string rulesToString(const std::vector& rules, boost::optional -static void showRules(IdentifierT identifier, boost::optional& vars) +static void showRules(IdentifierT identifier, std::optional& vars) { setLuaNoSideEffect(); @@ -277,7 +278,7 @@ static std::vector getTopRules(const std::vector& rules, unsigned int top) } template -static void addRule(IdentifierT identifier, const std::string& methodName, const luadnsrule_t& var, const std::shared_ptr& action, boost::optional& params) +static void addRule(IdentifierT identifier, const std::string& methodName, const luadnsrule_t& var, const std::shared_ptr& action, std::optional& params) { setLuaSideEffect(); @@ -309,7 +310,7 @@ static LuaArray toLuaArray(std::vector&& rules) } template -static boost::optional getRuleFromSelector(const std::vector& rules, const boost::variant& selector) +static std::optional getRuleFromSelector(const std::vector& rules, const boost::variant& selector) { if (const auto* str = boost::get(&selector)) { /* let's see if this a UUID */ @@ -335,12 +336,12 @@ static boost::optional getRuleFromSelector(const std::vector& rules, const supplied position is out of bounds, this is fine */ return rules.at(*pos); } - return boost::none; + return std::nullopt; } namespace { -std::shared_ptr qnameSuffixRule(const boost::variant> names, boost::optional quiet) +std::shared_ptr qnameSuffixRule(const boost::variant> names, std::optional quiet) { if (names.type() == typeid(string)) { SuffixMatchNode smn; @@ -361,7 +362,7 @@ std::shared_ptr qnameSuffixRule(const boost::variant -std::optional boostToStandardOptional(const boost::optional& boostOpt) +std::optional boostToStandardOptional(const std::optional& boostOpt) { return boostOpt ? *boostOpt : std::optional(); } @@ -370,7 +371,7 @@ std::optional boostToStandardOptional(const boost::optional& boostOpt) void setupLuaRuleChainsManagement(LuaContext& luaCtx) { for (const auto& chain : dnsdist::rules::getResponseRuleChainDescriptions()) { - luaCtx.writeFunction("show" + chain.prefix + "ResponseRules", [&chain](boost::optional vars) { + luaCtx.writeFunction("show" + chain.prefix + "ResponseRules", [&chain](std::optional vars) { showRules(chain.identifier, vars); }); luaCtx.writeFunction("rm" + chain.prefix + "ResponseRule", [&chain](const boost::variant& identifier) { @@ -382,20 +383,20 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) luaCtx.writeFunction("mv" + chain.prefix + "ResponseRule", [&chain](unsigned int from, unsigned int dest) { mvRule(chain.identifier, from, dest); }); - luaCtx.writeFunction("get" + chain.prefix + "ResponseRule", [&chain](const boost::variant& selector) -> boost::optional { + luaCtx.writeFunction("get" + chain.prefix + "ResponseRule", [&chain](const boost::variant& selector) -> std::optional { const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getResponseRuleChain(chains, chain.identifier); return getRuleFromSelector(rules, selector); }); - luaCtx.writeFunction("getTop" + chain.prefix + "ResponseRules", [&chain](boost::optional top) { + luaCtx.writeFunction("getTop" + chain.prefix + "ResponseRules", [&chain](std::optional top) { setLuaNoSideEffect(); const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getResponseRuleChain(chains, chain.identifier); return toLuaArray(getTopRules(rules, (top ? *top : 10))); }); - luaCtx.writeFunction("top" + chain.prefix + "ResponseRules", [&chain](boost::optional top, boost::optional vars) { + luaCtx.writeFunction("top" + chain.prefix + "ResponseRules", [&chain](std::optional top, std::optional vars) { setLuaNoSideEffect(); const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getResponseRuleChain(chains, chain.identifier); @@ -412,7 +413,7 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) } for (const auto& chain : dnsdist::rules::getRuleChainDescriptions()) { - luaCtx.writeFunction("show" + chain.prefix + "Rules", [&chain](boost::optional vars) { + luaCtx.writeFunction("show" + chain.prefix + "Rules", [&chain](std::optional vars) { showRules(chain.identifier, vars); }); luaCtx.writeFunction("rm" + chain.prefix + "Rule", [&chain](const boost::variant& identifier) { @@ -424,20 +425,20 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) luaCtx.writeFunction("mv" + chain.prefix + "Rule", [&chain](unsigned int from, unsigned int dest) { mvRule(chain.identifier, from, dest); }); - luaCtx.writeFunction("get" + chain.prefix + "Rule", [&chain](const boost::variant& selector) -> boost::optional { + luaCtx.writeFunction("get" + chain.prefix + "Rule", [&chain](const boost::variant& selector) -> std::optional { const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getRuleChain(chains, chain.identifier); return getRuleFromSelector(rules, selector); }); - luaCtx.writeFunction("getTop" + chain.prefix + "Rules", [&chain](boost::optional top) { + luaCtx.writeFunction("getTop" + chain.prefix + "Rules", [&chain](std::optional top) { setLuaNoSideEffect(); const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getRuleChain(chains, chain.identifier); return toLuaArray(getTopRules(rules, (top ? *top : 10))); }); - luaCtx.writeFunction("top" + chain.prefix + "Rules", [&chain](boost::optional top, boost::optional vars) { + luaCtx.writeFunction("top" + chain.prefix + "Rules", [&chain](std::optional top, std::optional vars) { setLuaNoSideEffect(); const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& rules = dnsdist::rules::getRuleChain(chains, chain.identifier); @@ -471,7 +472,7 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) for (const auto& chain : dnsdist::rules::getRuleChainDescriptions()) { auto fullName = std::string("add") + chain.prefix + std::string("Action"); - luaCtx.writeFunction(fullName, [&fullName, &chain](const luadnsrule_t& var, boost::variant, std::shared_ptr> era, boost::optional params) { + luaCtx.writeFunction(fullName, [&fullName, &chain](const luadnsrule_t& var, boost::variant, std::shared_ptr> era, std::optional params) { if (era.type() != typeid(std::shared_ptr)) { throw std::runtime_error(fullName + "() can only be called with query-related actions, not response-related ones. Are you looking for addResponseAction()?"); } @@ -481,7 +482,7 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) fullName = std::string("get") + chain.prefix + std::string("Action"); luaCtx.writeFunction(fullName, [&chain](unsigned int num) { setLuaNoSideEffect(); - boost::optional> ret; + std::optional> ret; const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& ruleactions = dnsdist::rules::getRuleChain(chains, chain.identifier); if (num < ruleactions.size()) { @@ -493,7 +494,7 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) for (const auto& chain : dnsdist::rules::getResponseRuleChainDescriptions()) { const auto fullName = std::string("add") + chain.prefix + std::string("ResponseAction"); - luaCtx.writeFunction(fullName, [&fullName, &chain](const luadnsrule_t& var, boost::variant, std::shared_ptr> era, boost::optional params) { + luaCtx.writeFunction(fullName, [&fullName, &chain](const luadnsrule_t& var, boost::variant, std::shared_ptr> era, std::optional params) { if (era.type() != typeid(std::shared_ptr)) { throw std::runtime_error(fullName + "() can only be called with response-related actions, not query-related ones. Are you looking for addAction()?"); } @@ -502,7 +503,7 @@ void setupLuaRuleChainsManagement(LuaContext& luaCtx) }); } - luaCtx.writeFunction("benchRule", [](const std::shared_ptr& rule, boost::optional times_, boost::optional suffix_) { + luaCtx.writeFunction("benchRule", [](const std::shared_ptr& rule, std::optional times_, std::optional suffix_) { setLuaNoSideEffect(); unsigned int times = times_ ? *times_ : 100000; DNSName suffix(suffix_ ? *suffix_ : "powerdns.com"); @@ -566,7 +567,7 @@ void setupLuaSelectors(LuaContext& luaCtx) luaCtx.writeFunction("SuffixMatchNodeRule", qnameSuffixRule); - luaCtx.writeFunction("NetmaskGroupRule", [](const boost::variant> netmasks, boost::optional src, boost::optional quiet) { + luaCtx.writeFunction("NetmaskGroupRule", [](const boost::variant> netmasks, std::optional src, std::optional quiet) { if (netmasks.type() == typeid(string)) { NetmaskGroup nmg; nmg.addMask(*boost::get(&netmasks)); @@ -678,9 +679,9 @@ void setupLuaSelectors(LuaContext& luaCtx) return std::shared_ptr(new QNameSetRule(names)); }); - // NOLINTNEXTLINE(performance-unnecessary-value-param): LuaWrapper does not play well with const boost::optional& - luaCtx.writeFunction("TagRule", [](const std::string& tag, boost::optional value) { - return std::shared_ptr(dnsdist::selectors::getTagSelector(tag, boostToStandardOptional(value), !value)); + // NOLINTNEXTLINE(performance-unnecessary-value-param): LuaWrapper does not play well with const std::optional& + luaCtx.writeFunction("TagRule", [](const std::string& tag, std::optional value) { + return std::shared_ptr(dnsdist::selectors::getTagSelector(tag, value, !value)); }); #if defined(HAVE_LMDB) || defined(HAVE_CDB) diff --git a/pdns/dnsdistdist/dnsdist-lua.cc b/pdns/dnsdistdist/dnsdist-lua.cc index 8acb9ab88e..4acdd1934c 100644 --- a/pdns/dnsdistdist/dnsdist-lua.cc +++ b/pdns/dnsdistdist/dnsdist-lua.cc @@ -122,7 +122,7 @@ void resetLuaSideEffect() using localbind_t = LuaAssociativeTable, LuaArray, LuaAssociativeTable, std::shared_ptr>>; -static void parseLocalBindVars(boost::optional& vars, bool& reusePort, int& tcpFastOpenQueueSize, std::string& interface, std::set& cpus, int& tcpListenQueueSize, uint64_t& maxInFlightQueriesPerConnection, uint64_t& tcpMaxConcurrentConnections, bool& enableProxyProtocol) +static void parseLocalBindVars(std::optional& vars, bool& reusePort, int& tcpFastOpenQueueSize, std::string& interface, std::set& cpus, int& tcpListenQueueSize, uint64_t& maxInFlightQueriesPerConnection, uint64_t& tcpMaxConcurrentConnections, bool& enableProxyProtocol) { if (vars) { LuaArray setCpus; @@ -142,7 +142,7 @@ static void parseLocalBindVars(boost::optional& vars, bool& reusePo } } #ifdef HAVE_XSK -static void parseXskVars(boost::optional& vars, std::shared_ptr& socket) +static void parseXskVars(std::optional& vars, std::shared_ptr& socket) { if (!vars) { return; @@ -197,7 +197,7 @@ static bool loadTLSCertificateAndKeys(const std::string& context, std::vector& vars) +static void parseTLSConfig(TLSConfig& config, const std::string& context, std::optional& vars) { getOptionalValue(vars, "ciphers", config.d_ciphers); getOptionalValue(vars, "ciphersTLS13", config.d_ciphers13); @@ -279,9 +279,9 @@ static void LuaThread(const std::string& code) context.writeFunction("submitToMainThread", [](std::string cmd, LuaAssociativeTable data) { auto lua = g_lua.lock(); // maybe offer more than `void` - auto func = lua->readVariable data)>>>("threadmessage"); + auto func = lua->readVariable data)>>>("threadmessage"); if (func) { - func.get()(std::move(cmd), std::move(data)); + (*func)(std::move(cmd), std::move(data)); } else { errlog("Lua thread called submitToMainThread but no threadmessage receiver is defined"); @@ -318,7 +318,7 @@ static bool checkConfigurationTime(const std::string& name) using newserver_t = LuaAssociativeTable, LuaArray>, DownstreamState::checkfunc_t>>; -static void handleNewServerHealthCheckParameters(boost::optional& vars, DownstreamState::Config& config) +static void handleNewServerHealthCheckParameters(std::optional& vars, DownstreamState::Config& config) { std::string valueStr; @@ -396,7 +396,7 @@ static void handleNewServerHealthCheckParameters(boost::optional& v getOptionalIntegerValue("newServer", vars, "rise", config.minRiseSuccesses); } -static void handleNewServerSourceParameter(boost::optional& vars, DownstreamState::Config& config) +static void handleNewServerSourceParameter(std::optional& vars, DownstreamState::Config& config) { std::string source; if (getOptionalValue(vars, "source", source) <= 0) { @@ -412,10 +412,10 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) dnsdist::lua::setupConfigurationItems(luaCtx); luaCtx.writeFunction("newServer", - [client, configCheck](boost::variant pvars, boost::optional qps) { + [client, configCheck](boost::variant pvars, std::optional qps) { setLuaSideEffect(); - boost::optional vars = newserver_t(); + std::optional vars = newserver_t(); DownstreamState::Config config; std::string serverAddressStr; @@ -739,7 +739,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); }); - luaCtx.writeFunction("setLocal", [client](const std::string& addr, boost::optional vars) { + luaCtx.writeFunction("setLocal", [client](const std::string& addr, std::optional vars) { setLuaSideEffect(); if (client) { return; @@ -811,7 +811,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.writeFunction("addLocal", [client](const std::string& addr, boost::optional vars) { + luaCtx.writeFunction("addLocal", [client](const std::string& addr, std::optional vars) { setLuaSideEffect(); if (client) { return; @@ -932,7 +932,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) typedef LuaAssociativeTable> showserversopts_t; - luaCtx.writeFunction("showServers", [](boost::optional vars) { + luaCtx.writeFunction("showServers", [](std::optional vars) { setLuaNoSideEffect(); bool showUUIDs = false; getOptionalValue(vars, "showUUIDs", showUUIDs); @@ -1012,7 +1012,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return getDownstreamCandidates(pool); }); - luaCtx.writeFunction("getServer", [client](boost::variant identifier) -> boost::optional> { + luaCtx.writeFunction("getServer", [client](boost::variant identifier) -> std::optional> { if (client) { return std::make_shared(ComboAddress()); } @@ -1030,15 +1030,15 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return states.at(*pos); } g_outputBuffer = "Error: trying to retrieve server " + std::to_string(*pos) + " while there is only " + std::to_string(states.size()) + "servers\n"; - return boost::none; + return std::nullopt; } g_outputBuffer = "Error: no server matched\n"; - return boost::none; + return std::nullopt; }); #ifndef DISABLE_CARBON - luaCtx.writeFunction("carbonServer", [](const std::string& address, boost::optional ourName, boost::optional interval, boost::optional namespace_name, boost::optional instance_name) { + luaCtx.writeFunction("carbonServer", [](const std::string& address, std::optional ourName, std::optional interval, std::optional namespace_name, std::optional instance_name) { setLuaSideEffect(); auto newEndpoint = dnsdist::Carbon::newEndpoint(address, (ourName ? *ourName : ""), @@ -1089,7 +1089,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) using webserveropts_t = LuaAssociativeTable>>; - luaCtx.writeFunction("setWebserverConfig", [](boost::optional vars) { + luaCtx.writeFunction("setWebserverConfig", [](std::optional vars) { setLuaSideEffect(); if (!vars) { @@ -1157,7 +1157,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return dnsdist::webserver::getConfig(); }); - luaCtx.writeFunction("hashPassword", [](const std::string& password, boost::optional workFactor) { + luaCtx.writeFunction("hashPassword", [](const std::string& password, std::optional workFactor) { if (workFactor) { return hashPassword(password, *workFactor, CredentialsHolder::s_defaultParallelFactor, CredentialsHolder::s_defaultBlockSize); } @@ -1256,7 +1256,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) g_outputBuffer = (fmt % size).str(); }); - luaCtx.writeFunction("getQueryCounters", [](boost::optional optMax) { + luaCtx.writeFunction("getQueryCounters", [](std::optional optMax) { setLuaNoSideEffect(); auto records = dnsdist::QueryCount::g_queryCountRecords.read_lock(); g_outputBuffer = "query counting is currently: "; @@ -1307,7 +1307,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) dnsdist::console::clearHistory(); }); - luaCtx.writeFunction("testCrypto", []([[maybe_unused]] boost::optional optTestMsg) { + luaCtx.writeFunction("testCrypto", []([[maybe_unused]] std::optional optTestMsg) { setLuaNoSideEffect(); #if defined(HAVE_LIBSODIUM) || defined(HAVE_LIBCRYPTO) try { @@ -1444,7 +1444,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) #ifndef DISABLE_DEPRECATED_DYNBLOCK luaCtx.writeFunction("addDynBlocks", - [](const std::unordered_map& addrs, const std::string& msg, boost::optional seconds, boost::optional action) { + [](const std::unordered_map& addrs, const std::string& msg, std::optional seconds, std::optional action) { if (addrs.empty()) { return; } @@ -1500,7 +1500,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) #endif /* DISABLE_DYNBLOCKS */ #ifdef HAVE_DNSCRYPT - luaCtx.writeFunction("addDNSCryptBind", [](const std::string& addr, const std::string& providerName, LuaTypeOrArrayOf certFiles, LuaTypeOrArrayOf keyFiles, boost::optional vars) { + luaCtx.writeFunction("addDNSCryptBind", [](const std::string& addr, const std::string& providerName, LuaTypeOrArrayOf certFiles, LuaTypeOrArrayOf keyFiles, std::optional vars) { if (!checkConfigurationTime("addDNSCryptBind")) { return; } @@ -1599,7 +1599,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) luaCtx.writeFunction("getDNSCryptBind", [](uint64_t idx) { setLuaNoSideEffect(); - boost::optional> ret{boost::none}; + std::optional> ret{std::nullopt}; /* we are only interested in distinct DNSCrypt binds, and we have two frontends (UDP and TCP) per bind sharing the same context so we need to retrieve @@ -1705,7 +1705,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) errlog("Error while opening the verbose logging destination file %s: %s", dest, e.what()); } }); - luaCtx.writeFunction("setStructuredLogging", [](bool enable, boost::optional> options) { + luaCtx.writeFunction("setStructuredLogging", [](bool enable, std::optional> options) { std::string levelPrefix; std::string timeFormat; if (options) { @@ -1750,7 +1750,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) luaCtx.writeFunction("getBind", [](uint64_t num) { setLuaNoSideEffect(); - boost::optional ret{boost::none}; + std::optional ret{std::nullopt}; auto frontends = dnsdist::getFrontends(); if (num < frontends.size()) { ret = frontends[num].get(); @@ -1763,7 +1763,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return dnsdist::getFrontends().size(); }); - luaCtx.writeFunction("help", [](boost::optional command) { + luaCtx.writeFunction("help", [](std::optional command) { setLuaNoSideEffect(); g_outputBuffer = ""; #ifndef DISABLE_COMPLETION @@ -1814,7 +1814,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) #ifndef DISABLE_DYNBLOCKS #ifndef DISABLE_DEPRECATED_DYNBLOCK - luaCtx.writeFunction("addBPFFilterDynBlocks", [](const std::unordered_map& addrs, const std::shared_ptr& dynbpf, boost::optional seconds, boost::optional msg) { + luaCtx.writeFunction("addBPFFilterDynBlocks", [](const std::unordered_map& addrs, const std::shared_ptr& dynbpf, std::optional seconds, std::optional msg) { if (!dynbpf) { return; } @@ -1924,7 +1924,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) s_included = false; }); - luaCtx.writeFunction("setAPIWritable", [](bool writable, boost::optional apiConfigDir) { + luaCtx.writeFunction("setAPIWritable", [](bool writable, std::optional apiConfigDir) { if (apiConfigDir && apiConfigDir->empty()) { errlog("The API configuration directory value cannot be empty!"); g_outputBuffer = "The API configuration directory value cannot be empty!"; @@ -1939,7 +1939,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) setLuaSideEffect(); }); - luaCtx.writeFunction("setRingBuffersSize", [client](uint64_t capacity, boost::optional numberOfShards) { + luaCtx.writeFunction("setRingBuffersSize", [client](uint64_t capacity, std::optional numberOfShards) { if (client) { return; } @@ -1995,7 +1995,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); #ifdef HAVE_NET_SNMP - luaCtx.writeFunction("snmpAgent", [client, configCheck](bool enableTraps, boost::optional daemonSocket) { + luaCtx.writeFunction("snmpAgent", [client, configCheck](bool enableTraps, std::optional daemonSocket) { if (client || configCheck) { return; } @@ -2128,7 +2128,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); typedef std::unordered_map tlscertificateopts_t; - luaCtx.writeFunction("newTLSCertificate", [client]([[maybe_unused]] const std::string& cert, [[maybe_unused]] boost::optional opts) { + luaCtx.writeFunction("newTLSCertificate", [client]([[maybe_unused]] const std::string& cert, [[maybe_unused]] std::optional opts) { std::shared_ptr result = nullptr; if (client) { return result; @@ -2149,7 +2149,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return result; }); - luaCtx.writeFunction("addDOHLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] boost::optional, LuaArray, LuaArray>>> certFiles, [[maybe_unused]] boost::optional> keyFiles, [[maybe_unused]] boost::optional> urls, [[maybe_unused]] boost::optional vars) { + luaCtx.writeFunction("addDOHLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] std::optional, LuaArray, LuaArray>>> certFiles, [[maybe_unused]] std::optional> keyFiles, [[maybe_unused]] std::optional> urls, [[maybe_unused]] std::optional vars) { if (client) { return; } @@ -2318,7 +2318,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); // NOLINTNEXTLINE(performance-unnecessary-value-param): somehow clang-tidy gets confused about the fact vars could be const while it cannot - luaCtx.writeFunction("addDOH3Local", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] boost::optional vars) { + luaCtx.writeFunction("addDOH3Local", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] std::optional vars) { if (client) { return; } @@ -2396,7 +2396,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); // NOLINTNEXTLINE(performance-unnecessary-value-param): somehow clang-tidy gets confused about the fact vars could be const while it cannot - luaCtx.writeFunction("addDOQLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] boost::optional vars) { + luaCtx.writeFunction("addDOQLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] std::optional vars) { if (client) { return; } @@ -2497,8 +2497,8 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); #ifdef HAVE_DNS_OVER_QUIC - luaCtx.writeFunction("getDOQFrontend", [client](uint64_t index) -> boost::optional> { - boost::optional> result{boost::none}; + luaCtx.writeFunction("getDOQFrontend", [client](uint64_t index) -> std::optional> { + std::optional> result{std::nullopt}; if (client) { return std::shared_ptr(); } @@ -2579,8 +2579,8 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); #ifdef HAVE_DNS_OVER_HTTP3 - luaCtx.writeFunction("getDOH3Frontend", [client](uint64_t index) -> boost::optional> { - boost::optional> result{boost::none}; + luaCtx.writeFunction("getDOH3Frontend", [client](uint64_t index) -> std::optional> { + std::optional> result{std::nullopt}; if (client) { return std::shared_ptr(); } @@ -2648,8 +2648,8 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) #endif }); - luaCtx.writeFunction("getDOHFrontend", [client]([[maybe_unused]] uint64_t index) -> boost::optional> { - boost::optional> result{boost::none}; + luaCtx.writeFunction("getDOHFrontend", [client]([[maybe_unused]] uint64_t index) -> std::optional> { + std::optional> result{std::nullopt}; if (client) { return std::shared_ptr(); } @@ -2749,7 +2749,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) } }); - luaCtx.writeFunction("addTLSLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] boost::optional vars) { + luaCtx.writeFunction("addTLSLocal", [client]([[maybe_unused]] const std::string& addr, [[maybe_unused]] const boost::variant, LuaArray, LuaArray>>& certFiles, [[maybe_unused]] const LuaTypeOrArrayOf& keyFiles, [[maybe_unused]] std::optional vars) { if (client) { return; } @@ -2878,8 +2878,8 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) #endif }); - luaCtx.writeFunction("getTLSFrontend", [client]([[maybe_unused]] uint64_t index) -> boost::optional> { - boost::optional> result{boost::none}; + luaCtx.writeFunction("getTLSFrontend", [client]([[maybe_unused]] uint64_t index) -> std::optional> { + std::optional> result{std::nullopt}; if (client) { return std::shared_ptr(); } @@ -3051,7 +3051,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) }); #if defined(HAVE_LIBSSL) && !defined(HAVE_TLS_PROVIDERS) - luaCtx.writeFunction("loadTLSEngine", [client](const std::string& engineName, boost::optional defaultString) { + luaCtx.writeFunction("loadTLSEngine", [client](const std::string& engineName, std::optional defaultString) { if (client) { return; } @@ -3087,16 +3087,16 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) newThread.detach(); }); - luaCtx.writeFunction("declareMetric", [](const std::string& name, const std::string& type, const std::string& description, boost::optional> opts) { + luaCtx.writeFunction("declareMetric", [](const std::string& name, const std::string& type, const std::string& description, std::optional> opts) { bool withLabels = false; std::optional customName = std::nullopt; if (opts) { - auto* optCustomName = boost::get(&opts.get()); + auto* optCustomName = boost::get(&opts.value()); if (optCustomName != nullptr) { customName = std::optional(*optCustomName); } if (!customName) { - boost::optional vars = {boost::get(opts.get())}; + std::optional vars = {boost::get(opts.value())}; getOptionalValue(vars, "customName", customName); getOptionalValue(vars, "withLabels", withLabels); checkAllParametersConsumed("declareMetric", vars); @@ -3111,15 +3111,15 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return true; }); // NOLINTNEXTLINE(performance-unnecessary-value-param) - luaCtx.writeFunction("incMetric", [](const std::string& name, boost::optional> opts) { - auto incOpts = opts.get_value_or(1); + luaCtx.writeFunction("incMetric", [](const std::string& name, std::optional> opts) { + auto incOpts = opts.value_or(1); uint64_t step = 1; std::unordered_map labels; if (auto* custom_step = boost::get(&incOpts)) { step = *custom_step; } else { - boost::optional vars = {boost::get(incOpts)}; + std::optional vars = {boost::get(incOpts)}; getOptionalValue(vars, "step", step); getOptionalValue>(vars, "labels", labels); checkAllParametersConsumed("incMetric", vars); @@ -3133,15 +3133,15 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) return std::get(result); }); // NOLINTNEXTLINE(performance-unnecessary-value-param) - luaCtx.writeFunction("decMetric", [](const std::string& name, boost::optional> opts) { - auto decOpts = opts.get_value_or(1); + luaCtx.writeFunction("decMetric", [](const std::string& name, std::optional> opts) { + auto decOpts = opts.value_or(1); uint64_t step = 1; std::unordered_map labels; if (auto* custom_step = boost::get(&decOpts)) { step = *custom_step; } else { - boost::optional vars = {boost::get(decOpts)}; + std::optional vars = {boost::get(decOpts)}; getOptionalValue(vars, "step", step); getOptionalValue>(vars, "labels", labels); checkAllParametersConsumed("decMetric", vars); @@ -3154,7 +3154,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) } return std::get(result); }); - luaCtx.writeFunction("setMetric", [](const std::string& name, const double value, boost::optional opts) -> double { + luaCtx.writeFunction("setMetric", [](const std::string& name, const double value, std::optional opts) -> double { std::unordered_map labels; if (opts) { getOptionalValue>(opts, "labels", labels); @@ -3168,7 +3168,7 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck) } return std::get(result); }); - luaCtx.writeFunction("getMetric", [](const std::string& name, boost::optional opts) { + luaCtx.writeFunction("getMetric", [](const std::string& name, std::optional opts) { std::unordered_map labels; if (opts) { getOptionalValue>(opts, "labels", labels); diff --git a/pdns/dnsdistdist/dnsdist-lua.hh b/pdns/dnsdistdist/dnsdist-lua.hh index 47ab0b258e..42d4f0ef93 100644 --- a/pdns/dnsdistdist/dnsdist-lua.hh +++ b/pdns/dnsdistdist/dnsdist-lua.hh @@ -41,7 +41,7 @@ using luaruleparams_t = LuaAssociativeTable; using luadnsrule_t = boost::variant, std::shared_ptr, DNSName, LuaArray>; std::shared_ptr makeRule(const luadnsrule_t& var, const std::string& calledFrom); -void parseRuleParams(boost::optional& params, boost::uuids::uuid& uuid, std::string& name, uint64_t& creationOrder); +void parseRuleParams(std::optional& params, boost::uuids::uuid& uuid, std::string& name, uint64_t& creationOrder); void checkParameterBound(const std::string& parameter, uint64_t value, uint64_t max = std::numeric_limits::max()); void setupLua(LuaContext& luaCtx, bool client, bool configCheck, const std::string& config); @@ -112,7 +112,7 @@ void loadLuaConfigurationFile(LuaContext& luaCtx, const std::string& config, boo * returns: -1 if type wasn't compatible, 0 if not found or number of element(s) found */ template -static inline int getOptionalValue(boost::optional& vars, const std::string& key, T& value, bool warnOnWrongType = true) +static inline int getOptionalValue(std::optional& vars, const std::string& key, T& value, bool warnOnWrongType = true) { /* nothing found, nothing to return */ if (!vars) { @@ -136,7 +136,7 @@ static inline int getOptionalValue(boost::optional& vars, const std::string& } template -static inline int getOptionalIntegerValue(const std::string& func, boost::optional& vars, const std::string& key, T& value) +static inline int getOptionalIntegerValue(const std::string& func, std::optional& vars, const std::string& key, T& value) { std::string valueStr; auto ret = getOptionalValue(vars, key, valueStr, true); @@ -153,7 +153,7 @@ static inline int getOptionalIntegerValue(const std::string& func, boost::option } template -static inline void checkAllParametersConsumed(const std::string& func, const boost::optional& vars) +static inline void checkAllParametersConsumed(const std::string& func, const std::optional& vars) { /* no vars */ if (!vars) { diff --git a/pdns/dnsdistdist/dnsdist-nghttp2-in.cc b/pdns/dnsdistdist/dnsdist-nghttp2-in.cc index 6161bbfa82..1c2b51bb05 100644 --- a/pdns/dnsdistdist/dnsdist-nghttp2-in.cc +++ b/pdns/dnsdistdist/dnsdist-nghttp2-in.cc @@ -1237,12 +1237,12 @@ uint32_t IncomingHTTP2Connection::getConcurrentStreamsCount() const return d_currentStreams.size() + d_killedStreams.size(); } -boost::optional IncomingHTTP2Connection::getIdleClientReadTTD(struct timeval now) const +std::optional IncomingHTTP2Connection::getIdleClientReadTTD(struct timeval now) const { const auto& currentConfig = dnsdist::configuration::getCurrentRuntimeConfiguration(); auto idleTimeout = d_ci.cs->dohFrontend->d_idleTimeout; if (currentConfig.d_maxTCPConnectionDuration == 0 && idleTimeout == 0) { - return boost::none; + return std::nullopt; } if (currentConfig.d_maxTCPConnectionDuration > 0) { @@ -1269,7 +1269,7 @@ void IncomingHTTP2Connection::updateIO(IOState newState, const timeval& now) void IncomingHTTP2Connection::updateIO(IOState newState, const FDMultiplexer::callbackfunc_t& callback) { - boost::optional ttd{boost::none}; + std::optional ttd{std::nullopt}; if (newState == IOState::Async) { auto shared = shared_from_this(); diff --git a/pdns/dnsdistdist/dnsdist-nghttp2-in.hh b/pdns/dnsdistdist/dnsdist-nghttp2-in.hh index e14eee4395..82156f60c6 100644 --- a/pdns/dnsdistdist/dnsdist-nghttp2-in.hh +++ b/pdns/dnsdistdist/dnsdist-nghttp2-in.hh @@ -100,7 +100,7 @@ private: IOState handleHandshake(const struct timeval& now) override; bool hasPendingWrite() const; void writeToSocket(bool socketReady); - boost::optional getIdleClientReadTTD(struct timeval now) const; + std::optional getIdleClientReadTTD(struct timeval now) const; std::unique_ptr d_session{nullptr, nghttp2_session_del}; std::unordered_map d_currentStreams; diff --git a/pdns/dnsdistdist/dnsdist-nghttp2.cc b/pdns/dnsdistdist/dnsdist-nghttp2.cc index 071ae74a30..87fe34aa59 100644 --- a/pdns/dnsdistdist/dnsdist-nghttp2.cc +++ b/pdns/dnsdistdist/dnsdist-nghttp2.cc @@ -496,7 +496,7 @@ void DoHConnectionToBackend::updateIO(IOState newState, const FDMultiplexer::cal .tv_sec = 0, .tv_usec = 0}; gettimeofday(&now, nullptr); - boost::optional ttd{boost::none}; + std::optional ttd{std::nullopt}; if (!noTTD) { if (d_healthCheckQuery) { ttd = getBackendHealthCheckTTD(now); diff --git a/pdns/dnsdistdist/dnsdist-protobuf.hh b/pdns/dnsdistdist/dnsdist-protobuf.hh index 9b1f56f595..d32fc9b961 100644 --- a/pdns/dnsdistdist/dnsdist-protobuf.hh +++ b/pdns/dnsdistdist/dnsdist-protobuf.hh @@ -100,15 +100,15 @@ private: const DNSResponse* d_dr{nullptr}; const std::string* d_ServerIdentityRef{nullptr}; - boost::optional d_question{boost::none}; - boost::optional d_serverIdentity{boost::none}; - boost::optional d_requestor{boost::none}; - boost::optional d_responder{boost::none}; - boost::optional d_ednsSubnet{boost::none}; - boost::optional> d_time{boost::none}; - boost::optional> d_queryTime{boost::none}; - boost::optional d_bytes{boost::none}; - boost::optional d_rcode{boost::none}; + std::optional d_question{std::nullopt}; + std::optional d_serverIdentity{std::nullopt}; + std::optional d_requestor{std::nullopt}; + std::optional d_responder{std::nullopt}; + std::optional d_ednsSubnet{std::nullopt}; + std::optional> d_time{std::nullopt}; + std::optional> d_queryTime{std::nullopt}; + std::optional d_bytes{std::nullopt}; + std::optional d_rcode{std::nullopt}; pdns::ProtoZero::Message::MessageType d_type{pdns::ProtoZero::Message::MessageType::DNSQueryType}; bool d_includeCNAME{false}; diff --git a/pdns/dnsdistdist/dnsdist-rules-factory.hh b/pdns/dnsdistdist/dnsdist-rules-factory.hh index 81cf10b995..e540c0207b 100644 --- a/pdns/dnsdistdist/dnsdist-rules-factory.hh +++ b/pdns/dnsdistdist/dnsdist-rules-factory.hh @@ -1140,7 +1140,7 @@ private: class TagRule : public DNSRule { public: - TagRule(const std::string& tag, boost::optional value, bool emptyAsWildcard) : + TagRule(const std::string& tag, std::optional value, bool emptyAsWildcard) : d_value(std::move(value)), d_tag(tag), d_emptyAsWildcard(emptyAsWildcard) { } @@ -1168,7 +1168,7 @@ public: } private: - boost::optional d_value; + std::optional d_value; std::string d_tag; bool d_emptyAsWildcard; }; @@ -1403,7 +1403,7 @@ private: class ProxyProtocolValueRule : public DNSRule { public: - ProxyProtocolValueRule(uint8_t type, boost::optional value) : + ProxyProtocolValueRule(uint8_t type, std::optional value) : d_value(std::move(value)), d_type(type) { } @@ -1432,7 +1432,7 @@ public: } private: - boost::optional d_value; + std::optional d_value; uint8_t d_type; }; diff --git a/pdns/dnsdistdist/dnsdist-tcp-downstream.cc b/pdns/dnsdistdist/dnsdist-tcp-downstream.cc index ddea1fa2ff..f64d8573cd 100644 --- a/pdns/dnsdistdist/dnsdist-tcp-downstream.cc +++ b/pdns/dnsdistdist/dnsdist-tcp-downstream.cc @@ -508,7 +508,7 @@ void TCPConnectionToBackend::handleIO(std::shared_ptr& c conn->d_ioState->update(iostate, handleIOCallback, conn); } else { - boost::optional ttd{boost::none}; + std::optional ttd{std::nullopt}; if (iostate == IOState::NeedRead) { ttd = conn->getBackendReadTTD(now); } diff --git a/pdns/dnsdistdist/dnsdist-tcp-downstream.hh b/pdns/dnsdistdist/dnsdist-tcp-downstream.hh index 308c073c88..b6faa41aac 100644 --- a/pdns/dnsdistdist/dnsdist-tcp-downstream.hh +++ b/pdns/dnsdistdist/dnsdist-tcp-downstream.hh @@ -145,13 +145,13 @@ public: protected: bool reconnect(); - boost::optional getBackendHealthCheckTTD(const struct timeval& now) const + std::optional getBackendHealthCheckTTD(const struct timeval& now) const { if (d_ds == nullptr) { throw std::runtime_error("getBackendReadTTD() without any backend selected"); } if (d_ds->d_config.checkTimeout == 0) { - return boost::none; + return std::nullopt; } struct timeval res = now; @@ -162,13 +162,13 @@ protected: return res; } - boost::optional getBackendReadTTD(const struct timeval& now) const + std::optional getBackendReadTTD(const struct timeval& now) const { if (d_ds == nullptr) { throw std::runtime_error("getBackendReadTTD() without any backend selected"); } if (d_ds->d_config.tcpRecvTimeout == 0) { - return boost::none; + return std::nullopt; } struct timeval res = now; @@ -177,13 +177,13 @@ protected: return res; } - boost::optional getBackendWriteTTD(const struct timeval& now) const + std::optional getBackendWriteTTD(const struct timeval& now) const { if (d_ds == nullptr) { throw std::runtime_error("getBackendWriteTTD() called without any backend selected"); } if (d_ds->d_config.tcpSendTimeout == 0) { - return boost::none; + return std::nullopt; } struct timeval res = now; @@ -192,13 +192,13 @@ protected: return res; } - boost::optional getBackendConnectTTD(const struct timeval& now) const + std::optional getBackendConnectTTD(const struct timeval& now) const { if (d_ds == nullptr) { throw std::runtime_error("getBackendConnectTTD() called without any backend selected"); } if (d_ds->d_config.tcpConnectTimeout == 0) { - return boost::none; + return std::nullopt; } struct timeval res = now; diff --git a/pdns/dnsdistdist/dnsdist-tcp-upstream.hh b/pdns/dnsdistdist/dnsdist-tcp-upstream.hh index d592262fa2..c9dc5e5f43 100644 --- a/pdns/dnsdistdist/dnsdist-tcp-upstream.hh +++ b/pdns/dnsdistdist/dnsdist-tcp-upstream.hh @@ -51,8 +51,8 @@ public: void resetForNewQuery(); - boost::optional getClientReadTTD(timeval now) const; - boost::optional getClientWriteTTD(const timeval& now) const; + std::optional getClientReadTTD(timeval now) const; + std::optional getClientWriteTTD(const timeval& now) const; bool maxConnectionDurationReached(unsigned int maxConnectionDuration, const timeval& now) const; std::shared_ptr getDownstreamConnection(std::shared_ptr& backend, const std::unique_ptr>& tlvs, const struct timeval& now); diff --git a/pdns/dnsdistdist/dnsdist-tcp.cc b/pdns/dnsdistdist/dnsdist-tcp.cc index 26a49b19d1..689e5f7f60 100644 --- a/pdns/dnsdistdist/dnsdist-tcp.cc +++ b/pdns/dnsdistdist/dnsdist-tcp.cc @@ -326,11 +326,11 @@ void IncomingTCPConnectionState::resetForNewQuery() d_readIOsCurrentQuery = 0; } -boost::optional IncomingTCPConnectionState::getClientReadTTD(timeval now) const +std::optional IncomingTCPConnectionState::getClientReadTTD(timeval now) const { const auto& runtimeConfiguration = dnsdist::configuration::getCurrentRuntimeConfiguration(); if (!isNearTCPLimits() && runtimeConfiguration.d_maxTCPConnectionDuration == 0 && runtimeConfiguration.d_tcpRecvTimeout == 0) { - return boost::none; + return std::nullopt; } size_t maxTCPConnectionDuration = runtimeConfiguration.d_maxTCPConnectionDuration; @@ -362,11 +362,11 @@ boost::optional IncomingTCPConnectionState::getClientReadTTD(timeval no return now; } -boost::optional IncomingTCPConnectionState::getClientWriteTTD(const timeval& now) const +std::optional IncomingTCPConnectionState::getClientWriteTTD(const timeval& now) const { const auto& runtimeConfiguration = dnsdist::configuration::getCurrentRuntimeConfiguration(); if (runtimeConfiguration.d_maxTCPConnectionDuration == 0 && runtimeConfiguration.d_tcpSendTimeout == 0) { - return boost::none; + return std::nullopt; } timeval res(now); diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index eec766b434..4e85d911b0 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -552,7 +552,7 @@ bool processResponseAfterRules(PacketBuffer& response, DNSResponse& dnsResponse, } { auto cacheInsertCloser = dnsResponse.ids.getCloser("packetCacheInsert", __func__); // NOLINT(cppcoreguidelines-pro-bounds-array-to-pointer-decay) - dnsResponse.ids.packetCache->insert(cacheKey, zeroScope ? boost::none : dnsResponse.ids.subnet, dnsResponse.ids.cacheFlags, dnsResponse.ids.dnssecOK ? *dnsResponse.ids.dnssecOK : false, dnsResponse.ids.qname, dnsResponse.ids.qtype, dnsResponse.ids.qclass, response, dnsResponse.ids.forwardedOverUDP, dnsResponse.getHeader()->rcode, dnsResponse.ids.tempFailureTTL); + dnsResponse.ids.packetCache->insert(cacheKey, zeroScope ? std::nullopt : dnsResponse.ids.subnet, dnsResponse.ids.cacheFlags, dnsResponse.ids.dnssecOK ? *dnsResponse.ids.dnssecOK : false, dnsResponse.ids.qname, dnsResponse.ids.qtype, dnsResponse.ids.qclass, response, dnsResponse.ids.forwardedOverUDP, dnsResponse.getHeader()->rcode, dnsResponse.ids.tempFailureTTL); } const auto& chains = dnsdist::configuration::getCurrentRuntimeConfiguration().d_ruleChains; const auto& cacheInsertedRespRuleActions = dnsdist::rules::getResponseRuleChain(chains, dnsdist::rules::ResponseRuleChain::CacheInsertedResponseRules); @@ -2396,7 +2396,7 @@ static void maintThread() { auto lua = g_lua.lock(); try { - auto maintenanceCallback = lua->readVariable>>("maintenance"); + auto maintenanceCallback = lua->readVariable>>("maintenance"); if (maintenanceCallback) { (*maintenanceCallback)(); } diff --git a/pdns/dnsdistdist/fuzz_dnsdistcache.cc b/pdns/dnsdistdist/fuzz_dnsdistcache.cc index 75c419c42f..234ef0962e 100644 --- a/pdns/dnsdistdist/fuzz_dnsdistcache.cc +++ b/pdns/dnsdistdist/fuzz_dnsdistcache.cc @@ -56,7 +56,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) const DNSName qname(reinterpret_cast(data), size, sizeof(dnsheader), false, &qtype, &qclass, &consumed); pcSkipCookies.getKey(qname.getStorage(), consumed, vect, false); pcHashCookies.getKey(qname.getStorage(), consumed, vect, false); - boost::optional subnet; + std::optional subnet; DNSDistPacketCache::getClientSubnet(vect, consumed, subnet); } catch (const std::exception& e) { diff --git a/pdns/dnsdistdist/tcpiohandler-mplexer.hh b/pdns/dnsdistdist/tcpiohandler-mplexer.hh index a69c7c1cad..33f46ed9c5 100644 --- a/pdns/dnsdistdist/tcpiohandler-mplexer.hh +++ b/pdns/dnsdistdist/tcpiohandler-mplexer.hh @@ -72,7 +72,7 @@ public: return result; } - void add(IOState iostate, FDMultiplexer::callbackfunc_t callback, FDMultiplexer::funcparam_t callbackData, boost::optional ttd) + void add(IOState iostate, FDMultiplexer::callbackfunc_t callback, FDMultiplexer::funcparam_t callbackData, std::optional ttd) { DEBUGLOG("in "<<__PRETTY_FUNCTION__<<" for fd "< ttd = boost::none) + void update(IOState iostate, FDMultiplexer::callbackfunc_t callback = FDMultiplexer::callbackfunc_t(), FDMultiplexer::funcparam_t callbackData = boost::any(), std::optional ttd = std::nullopt) { DEBUGLOG("in "<<__PRETTY_FUNCTION__<<" for fd "< subnet; + std::optional subnet; ids.queryRealTime.start(); DNSQuestion dq(ids, query); packetCache->get(dq, 0, &key, subnet, dnssecOK, receivedOverUDP); - packetCache->insert(key, subnet, *(getFlagsFromDNSHeader(dq.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + packetCache->insert(key, subnet, *(getFlagsFromDNSHeader(dq.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); std::string poolName("test-pool"); auto testPool = ServerPool(); diff --git a/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc b/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc index 58bf54894c..bb01c3d871 100644 --- a/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc +++ b/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc @@ -24,7 +24,6 @@ #ifndef DISABLE_PROTOBUF #ifndef BOOST_TEST_DYN_LINK #define BOOST_TEST_DYN_LINK -#include #endif #include diff --git a/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc b/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc index 4038655e10..296bc9a81b 100644 --- a/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc +++ b/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc @@ -1298,9 +1298,9 @@ BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesMetricsCache_GetTopN, TestFixture) { (void)node; (void)children; if (self.queries > 0) { - return std::tuple, boost::optional>(true, boost::none, boost::none); + return std::tuple, std::optional>(true, std::nullopt, std::nullopt); } - return std::tuple, boost::optional>(false, boost::none, boost::none); + return std::tuple, std::optional>(false, std::nullopt, std::nullopt); }); } @@ -1360,9 +1360,9 @@ BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesMetricsCache_GetTopN, TestFixture) { (void)node; (void)children; if (self.queries > 0) { - return std::tuple, boost::optional>(true, "blocked for a different reason", static_cast(DNSAction::Action::Truncate)); + return std::tuple, std::optional>(true, "blocked for a different reason", static_cast(DNSAction::Action::Truncate)); } - return std::tuple, boost::optional>(false, boost::none, boost::none); + return std::tuple, std::optional>(false, std::nullopt, std::nullopt); }); } @@ -1421,9 +1421,9 @@ BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesMetricsCache_GetTopN, TestFixture) { DynBlockRulesGroup::DynBlockRule rule(reason, blockDuration, 0, 0, numberOfSeconds, action); dbrg.setSuffixMatchRule(std::move(rule), [](const StatNode& node, const StatNode::Stat& self, const StatNode::Stat& children) { if (self.queries > 0) { - return std::tuple, boost::optional>(true, boost::none, boost::none); + return std::tuple, std::optional>(true, std::nullopt, std::nullopt); } - return std::tuple, boost::optional>(false, boost::none, boost::none); + return std::tuple, std::optional>(false, std::nullopt, std::nullopt); }); } diff --git a/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc b/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc index b45b33f011..8b96024450 100644 --- a/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc +++ b/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc @@ -1,5 +1,6 @@ #ifndef BOOST_TEST_DYN_LINK #define BOOST_TEST_DYN_LINK +#include #endif #define BOOST_TEST_NO_MAIN @@ -59,13 +60,13 @@ static void test_packetcache_simple(bool shuffle) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); if (found) { @@ -90,7 +91,7 @@ static void test_packetcache_simple(bool shuffle) GenericDNSPacketWriter pwQ(query, ids.qname, QType::A, QClass::IN, 0); pwQ.getHeader()->rd = 1; uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); if (found) { @@ -109,7 +110,7 @@ static void test_packetcache_simple(bool shuffle) GenericDNSPacketWriter pwQ(query, ids.qname, QType::A, QClass::IN, 0); pwQ.getHeader()->rd = 1; uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); if (localCache.get(dnsQuestion, pwQ.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP)) { matches++; @@ -186,13 +187,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheSharded) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::AAAA, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::AAAA, QClass::IN, response, receivedOverUDP, 0, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); if (found) { @@ -217,7 +218,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheSharded) GenericDNSPacketWriter pwQ(query, ids.qname, QType::AAAA, QClass::IN, 0); pwQ.getHeader()->rd = 1; uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); if (localCache.get(dnsQuestion, pwQ.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP)) { matches++; @@ -287,13 +288,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheTCP) { /* UDP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -302,14 +303,14 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheTCP) { /* same but over TCP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; ids.protocol = dnsdist::Protocol::DoTCP; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, !receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, !receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -353,20 +354,20 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheServFailTTL) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); // Insert with failure-TTL of 0 (-> should not enter cache). - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::ServFail, boost::optional(0)); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::ServFail, std::optional(0)); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); // Insert with failure-TTL non-zero (-> should enter cache). - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::ServFail, boost::optional(300)); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::ServFail, std::optional(300)); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -416,13 +417,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheNoDataTTL) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, name, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, name, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -478,13 +479,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheNXDomainTTL) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, name, QType::A, QClass::IN, response, receivedOverUDP, RCode::NXDomain, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, name, QType::A, QClass::IN, response, receivedOverUDP, RCode::NXDomain, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -525,7 +526,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheTruncated) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool allowTruncated = true; @@ -545,7 +546,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheTruncated) BOOST_REQUIRE_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, false, allowTruncated); BOOST_REQUIRE_EQUAL(found, false); @@ -566,7 +567,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheTruncated) BOOST_REQUIRE_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); allowTruncated = false; found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, false, allowTruncated); @@ -627,13 +628,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* UDP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -642,14 +643,14 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* same but over TCP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; ids.protocol = dnsdist::Protocol::DoTCP; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, !receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, !receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); BOOST_CHECK(!subnet); @@ -669,13 +670,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* UDP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, false); } @@ -683,14 +684,14 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* same but over TCP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; ids.protocol = dnsdist::Protocol::DoTCP; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, !receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, !receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, false); } @@ -727,13 +728,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* UDP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); } @@ -741,14 +742,14 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize) { /* same but over TCP */ uint32_t key = 0; - boost::optional subnet; + std::optional subnet; ids.protocol = dnsdist::Protocol::DoTCP; DNSQuestion dnsQuestion(ids, query); bool found = packetCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, !receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, boost::none); + packetCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, !receivedOverUDP, RCode::NoError, std::nullopt); found = packetCache.get(dnsQuestion, queryID, &key, subnet, dnssecOK, !receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, true); } @@ -787,11 +788,11 @@ static void threadMangler(unsigned int offset) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); s_localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); - s_localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + s_localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); } } catch (PDNSException& e) { @@ -819,7 +820,7 @@ static void threadReader(unsigned int offset) pwQ.getHeader()->rd = 1; uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = s_localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); if (!found) { @@ -892,7 +893,7 @@ BOOST_AUTO_TEST_CASE(test_PCCollision) uint16_t qid = 0x42; uint32_t key{}; uint32_t secondKey{}; - boost::optional subnetOut; + std::optional subnetOut; bool dnssecOK = false; /* lookup for a query with a first ECS value, @@ -928,7 +929,7 @@ BOOST_AUTO_TEST_CASE(test_PCCollision) pwR.addOpt(512, 0, 0, ednsOptions); pwR.commit(); - localCache.insert(key, subnetOut, *(getFlagsFromDNSHeader(pwR.getHeader())), dnssecOK, ids.qname, ids.qtype, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + localCache.insert(key, subnetOut, *(getFlagsFromDNSHeader(pwR.getHeader())), dnssecOK, ids.qname, ids.qtype, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), 1U); found = localCache.get(dnsQuestion, 0, &key, subnetOut, dnssecOK, receivedOverUDP); @@ -1031,7 +1032,7 @@ BOOST_AUTO_TEST_CASE(test_PCDNSSECCollision) ids.protocol = dnsdist::Protocol::DoUDP; uint16_t qid = 0x42; uint32_t key{}; - boost::optional subnetOut; + std::optional subnetOut; /* lookup for a query with DNSSEC OK, insert a corresponding response with DO set, @@ -1062,7 +1063,7 @@ BOOST_AUTO_TEST_CASE(test_PCDNSSECCollision) pwR.addOpt(512, 0, EDNS_HEADER_FLAG_DO); pwR.commit(); - localCache.insert(key, subnetOut, *(getFlagsFromDNSHeader(pwR.getHeader())), /* DNSSEC OK is set */ true, ids.qname, ids.qtype, QClass::IN, response, receivedOverUDP, RCode::NoError, boost::none); + localCache.insert(key, subnetOut, *(getFlagsFromDNSHeader(pwR.getHeader())), /* DNSSEC OK is set */ true, ids.qname, ids.qtype, QClass::IN, response, receivedOverUDP, RCode::NoError, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), 1U); found = localCache.get(dnsQuestion, 0, &key, subnetOut, false, receivedOverUDP); @@ -1114,7 +1115,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheInspection) pwR.commit(); } - localCache.insert(key++, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key++, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), key); } @@ -1156,7 +1157,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheInspection) pwR.commit(); } - localCache.insert(key++, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key++, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), key); } @@ -1179,7 +1180,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheInspection) pwR.addOpt(4096, 0, 0); pwR.commit(); - localCache.insert(key++, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key++, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), key); } @@ -1209,7 +1210,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheInspection) pwR.commit(); } - localCache.insert(key++, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key++, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), key); } @@ -1233,7 +1234,7 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheInspection) pwR.commit(); } - localCache.insert(key++, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key++, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, qname, QType::A, QClass::IN, response, receivedOverUDP, 0, std::nullopt); BOOST_CHECK_EQUAL(localCache.getSize(), key); } @@ -1353,13 +1354,13 @@ BOOST_AUTO_TEST_CASE(test_PacketCacheXFR) pwR.commit(); uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); BOOST_CHECK(!subnet); - localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, ids.qtype, ids.qclass, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, subnet, *(getFlagsFromDNSHeader(dnsQuestion.getHeader().get())), dnssecOK, ids.qname, ids.qtype, ids.qclass, response, receivedOverUDP, 0, std::nullopt); found = localCache.get(dnsQuestion, pwR.getHeader()->id, &key, subnet, dnssecOK, receivedOverUDP, 0, true); BOOST_CHECK_EQUAL(found, false); } @@ -1494,13 +1495,13 @@ static void test_packetcache_shuffle( PacketBuffer response; create_shuffle_response(addresses, ids.qname, response, testqtype, testtype); - boost::optional subnet; + std::optional subnet; uint32_t key = 0; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, false); - localCache.insert(key, boost::none, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, ids.qname, testqtype, QClass::IN, response, receivedOverUDP, 0, boost::none); + localCache.insert(key, std::nullopt, *getFlagsFromDNSHeader(pwQ.getHeader()), dnssecOK, ids.qname, testqtype, QClass::IN, response, receivedOverUDP, 0, std::nullopt); } // now prepare all the possible permutations and save them, to compare later @@ -1558,7 +1559,7 @@ static void test_packetcache_shuffle( pwQ.getHeader()->rd = 1; uint32_t key = 0; - boost::optional subnet; + std::optional subnet; DNSQuestion dnsQuestion(ids, query); bool found = localCache.get(dnsQuestion, 0, &key, subnet, dnssecOK, receivedOverUDP); BOOST_CHECK_EQUAL(found, true); diff --git a/pdns/dnstap.cc b/pdns/dnstap.cc index a20957513c..e70f0b1b89 100644 --- a/pdns/dnstap.cc +++ b/pdns/dnstap.cc @@ -65,7 +65,7 @@ std::string&& DnstapMessage::getBuffer() return std::move(d_buffer); } -DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType type, const std::string& identity, const ComboAddress* requestor, const ComboAddress* responder, DnstapMessage::ProtocolType protocol, const char* packet, const size_t len, const struct timespec* queryTime, const struct timespec* responseTime, const boost::optional& auth, const boost::optional httpProtocol) : +DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType type, const std::string& identity, const ComboAddress* requestor, const ComboAddress* responder, DnstapMessage::ProtocolType protocol, const char* packet, const size_t len, const struct timespec* queryTime, const struct timespec* responseTime, const DNSName& auth, const std::optional httpProtocol) : d_buffer(std::move(buffer)) { protozero::pbf_writer pbf{d_buffer}; @@ -136,8 +136,8 @@ DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType ty pbf_message.add_enum(DnstapMessageFields::http_protocol, static_cast(*httpProtocol)); } - if (auth) { - pbf_message.add_bytes(DnstapMessageFields::query_zone, auth->toDNSString()); + if (!auth.empty()) { + pbf_message.add_bytes(DnstapMessageFields::query_zone, auth.toDNSString()); } pbf_message.commit(); diff --git a/pdns/dnstap.hh b/pdns/dnstap.hh index 070e2d0305..f634de9e85 100644 --- a/pdns/dnstap.hh +++ b/pdns/dnstap.hh @@ -67,7 +67,7 @@ public: HTTP3 = 3, }; - DnstapMessage(std::string&& buffer, MessageType type, const std::string& identity, const ComboAddress* requestor, const ComboAddress* responder, ProtocolType protocol, const char* packet, size_t len, const struct timespec* queryTime, const struct timespec* responseTime, const boost::optional& auth = boost::none, const boost::optional httpProtocol = boost::none); + DnstapMessage(std::string&& buffer, MessageType type, const std::string& identity, const ComboAddress* requestor, const ComboAddress* responder, ProtocolType protocol, const char* packet, size_t len, const struct timespec* queryTime, const struct timespec* responseTime, const DNSName& auth, const std::optional httpProtocol = std::nullopt); void setExtra(const std::string& extra); std::string&& getBuffer(); diff --git a/pdns/recursordist/lwres.cc b/pdns/recursordist/lwres.cc index 6171aca9ab..6f5fe215a7 100644 --- a/pdns/recursordist/lwres.cc +++ b/pdns/recursordist/lwres.cc @@ -191,7 +191,7 @@ static bool isEnabledForQueries(const std::shared_ptr>>& fstreamLoggers, const struct timeval& queryTime, const ComboAddress& localip, const ComboAddress& address, DnstapMessage::ProtocolType protocol, const boost::optional& auth, const vector& packet) +static void logFstreamQuery(const std::shared_ptr>>& fstreamLoggers, const struct timeval& queryTime, const ComboAddress& localip, const ComboAddress& address, DnstapMessage::ProtocolType protocol, const DNSName& auth, const vector& packet) { if (fstreamLoggers == nullptr) return; @@ -221,7 +221,7 @@ static bool isEnabledForResponses(const std::shared_ptr>>& fstreamLoggers, const ComboAddress& localip, const ComboAddress& address, DnstapMessage::ProtocolType protocol, const boost::optional& auth, const PacketBuffer& packet, const struct timeval& queryTime, const struct timeval& replyTime) +static void logFstreamResponse(const std::shared_ptr>>& fstreamLoggers, const ComboAddress& localip, const ComboAddress& address, DnstapMessage::ProtocolType protocol, const DNSName& auth, const PacketBuffer& packet, const struct timeval& queryTime, const struct timeval& replyTime) { if (fstreamLoggers == nullptr) return; @@ -731,7 +731,7 @@ static LWResult::Result asyncresolve(const OptLog& log, const ComboAddress& addr } #ifdef HAVE_FSTRM if (fstrmQEnabled) { - logFstreamQuery(fstrmLoggers, queryTime, localip, address, DnstapMessage::ProtocolType::DoUDP, context.d_auth ? context.d_auth : boost::none, vpacket); + logFstreamQuery(fstrmLoggers, queryTime, localip, address, DnstapMessage::ProtocolType::DoUDP, context.d_auth, vpacket); } #endif } diff --git a/pdns/recursordist/resolve-context.hh b/pdns/recursordist/resolve-context.hh index ba16b8bad9..354d81226a 100644 --- a/pdns/recursordist/resolve-context.hh +++ b/pdns/recursordist/resolve-context.hh @@ -32,8 +32,8 @@ struct ResolveContext { - ResolveContext(const boost::optional& uuid, DNSName name) : - d_initialRequestId(uuid), d_nsName(std::move(name)) + ResolveContext(const boost::optional& uuid, DNSName name, const DNSName& auth) : + d_initialRequestId(uuid), d_nsName(std::move(name)), d_auth(auth) {} ~ResolveContext() = default; @@ -44,5 +44,5 @@ struct ResolveContext boost::optional d_initialRequestId; DNSName d_nsName; - boost::optional d_auth; + DNSName d_auth; }; diff --git a/pdns/recursordist/syncres.cc b/pdns/recursordist/syncres.cc index e9e47d04de..d6c7b2ee2c 100644 --- a/pdns/recursordist/syncres.cc +++ b/pdns/recursordist/syncres.cc @@ -1459,8 +1459,7 @@ LWResult::Result SyncRes::asyncresolveWrapper(const OptLog& log, const ComboAddr int EDNSLevel = 0; auto luaconfsLocal = g_luaconfs.getLocal(); - ResolveContext ctx(d_initialRequestId, nsName); - ctx.d_auth = auth; + ResolveContext ctx(d_initialRequestId, nsName, auth); LWResult::Result ret{};