From fa8f73a745dd671a211b0f2ad902e310820854bb Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Fri, 14 Nov 2025 10:36:00 +0100 Subject: [PATCH] dnsdist: Apply clang-tidy recommendations to the packet cache code Signed-off-by: Remi Gacogne --- pdns/dnsdistdist/dnsdist-cache.cc | 3 +- pdns/dnsdistdist/dnsdist-cache.hh | 62 ++++++++++++++++++------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/pdns/dnsdistdist/dnsdist-cache.cc b/pdns/dnsdistdist/dnsdist-cache.cc index e0adb1cb03..64bdf7274b 100644 --- a/pdns/dnsdistdist/dnsdist-cache.cc +++ b/pdns/dnsdistdist/dnsdist-cache.cc @@ -30,7 +30,6 @@ #include "packetcache.hh" #include "base64.hh" -// NOLINTNEXTLINE(bugprone-easily-swappable-parameters): too cumbersome to change at this point DNSDistPacketCache::DNSDistPacketCache(CacheSettings settings) : d_settings(std::move(settings)) { @@ -461,7 +460,7 @@ uint32_t DNSDistPacketCache::getMinTTL(const char* packet, uint16_t length, bool return getDNSPacketMinTTL(packet, length, seenNoDataSOA); } -uint32_t DNSDistPacketCache::getKey(const DNSName::string_t& qname, size_t qnameWireLength, const PacketBuffer& packet, bool receivedOverUDP) +uint32_t DNSDistPacketCache::getKey(const DNSName::string_t& qname, size_t qnameWireLength, const PacketBuffer& packet, bool receivedOverUDP) const { uint32_t result = 0; /* skip the query ID */ diff --git a/pdns/dnsdistdist/dnsdist-cache.hh b/pdns/dnsdistdist/dnsdist-cache.hh index 71239a4d3e..c3e59c03e7 100644 --- a/pdns/dnsdistdist/dnsdist-cache.hh +++ b/pdns/dnsdistdist/dnsdist-cache.hh @@ -59,39 +59,39 @@ public: 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); - size_t purgeExpired(size_t upTo, const time_t now); + 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); - bool isFull(); - string toString(); - uint64_t getSize(); - uint64_t getHits() const { return d_hits.load(); } - uint64_t getMisses() const { return d_misses.load(); } - uint64_t getDeferredLookups() const { return d_deferredLookups.load(); } - uint64_t getDeferredInserts() const { return d_deferredInserts.load(); } - uint64_t getLookupCollisions() const { return d_lookupCollisions.load(); } - uint64_t getInsertCollisions() const { return d_insertCollisions.load(); } - uint64_t getMaxEntries() const { return d_settings.d_maxEntries; } - uint64_t getTTLTooShorts() const { return d_ttlTooShorts.load(); } - uint64_t getCleanupCount() const { return d_cleanupCount.load(); } - uint64_t getEntriesCount(); + [[nodiscard]] bool isFull(); + [[nodiscard]] string toString(); + [[nodiscard]] uint64_t getSize(); + [[nodiscard]] uint64_t getHits() const { return d_hits.load(); } + [[nodiscard]] uint64_t getMisses() const { return d_misses.load(); } + [[nodiscard]] uint64_t getDeferredLookups() const { return d_deferredLookups.load(); } + [[nodiscard]] uint64_t getDeferredInserts() const { return d_deferredInserts.load(); } + [[nodiscard]] uint64_t getLookupCollisions() const { return d_lookupCollisions.load(); } + [[nodiscard]] uint64_t getInsertCollisions() const { return d_insertCollisions.load(); } + [[nodiscard]] uint64_t getMaxEntries() const { return d_settings.d_maxEntries; } + [[nodiscard]] uint64_t getTTLTooShorts() const { return d_ttlTooShorts.load(); } + [[nodiscard]] uint64_t getCleanupCount() const { return d_cleanupCount.load(); } + [[nodiscard]] uint64_t getEntriesCount(); uint64_t dump(int fileDesc, bool rawResponse = false); /* get the list of domains (qnames) that contains the given address in an A or AAAA record */ - std::set getDomainsContainingRecords(const ComboAddress& addr); + [[nodiscard]] std::set getDomainsContainingRecords(const ComboAddress& addr); /* get the list of IP addresses contained in A or AAAA for a given domains (qname) */ - std::set getRecordsForDomain(const DNSName& domain); + [[nodiscard]] std::set getRecordsForDomain(const DNSName& domain); - bool isECSParsingEnabled() const { return d_settings.d_parseECS; } + [[nodiscard]] bool isECSParsingEnabled() const { return d_settings.d_parseECS; } - bool keepStaleData() const + [[nodiscard]] bool keepStaleData() const { return d_settings.d_keepStaleData; } - size_t getMaximumEntrySize() const { return d_settings.d_maximumEntrySize; } + [[nodiscard]] size_t getMaximumEntrySize() const { return d_settings.d_maximumEntrySize; } - uint32_t getKey(const DNSName::string_t& qname, size_t qnameWireLength, const PacketBuffer& packet, bool receivedOverUDP); + 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); @@ -99,7 +99,7 @@ public: private: struct CacheValue { - time_t getTTD() const { return validity; } + [[nodiscard]] time_t getTTD() const { return validity; } std::string value; DNSName qname; boost::optional subnet; @@ -116,27 +116,37 @@ private: class CacheShard { public: - CacheShard() + CacheShard() = default; + CacheShard(CacheShard&& /* old */) noexcept { } CacheShard(const CacheShard& /* old */) { } + CacheShard& operator=(CacheShard&& /* old */) noexcept + { + return *this; + } + CacheShard& operator=(const CacheShard& /* old */) + { + return *this; + } + ~CacheShard() = default; void setSize(size_t maxSize) { d_map.write_lock()->reserve(maxSize); } - SharedLockGuarded> d_map; + SharedLockGuarded> d_map{}; std::atomic d_entriesCount{0}; }; - 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; - uint32_t getShardIndex(uint32_t key) const; + [[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]] uint32_t getShardIndex(uint32_t key) const; bool insertLocked(std::unordered_map& map, uint32_t key, CacheValue& newValue); - std::vector d_shards; + std::vector d_shards{}; pdns::stat_t d_deferredLookups{0}; pdns::stat_t d_deferredInserts{0}; -- 2.47.3