From 82839cf9360e4ba0752bae2d29cae3f905ade803 Mon Sep 17 00:00:00 2001 From: Otto Date: Wed, 31 Mar 2021 10:39:35 +0200 Subject: [PATCH] Make QClass constants type QClass instead of enum --- pdns/dnsdistdist/dnsdist-secpoll.cc | 2 +- pdns/qtype.hh | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pdns/dnsdistdist/dnsdist-secpoll.cc b/pdns/dnsdistdist/dnsdist-secpoll.cc index 8737dec479..5742aba4a4 100644 --- a/pdns/dnsdistdist/dnsdist-secpoll.cc +++ b/pdns/dnsdistdist/dnsdist-secpoll.cc @@ -170,7 +170,7 @@ static std::string getSecPollStatus(const std::string& queriedName, int timeout= if (receivedName != sentName || receivedType != QType::TXT || receivedClass != QClass::IN) { if (g_verbose) { - warnlog("Invalid answer, either the qname (%s / %s), qtype (%s / %s) or qclass (%d / %d) does not match, received from the secpoll stub resolver %s", receivedName, sentName, QType(receivedType).getName(), QType(QType::TXT).getName(), receivedClass, QClass::IN, dest.toString()); + warnlog("Invalid answer, either the qname (%s / %s), qtype (%s / %s) or qclass (%s / %s) does not match, received from the secpoll stub resolver %s", receivedName, sentName, QType(receivedType).getName(), QType(QType::TXT).getName(), QClass(receivedClass).toString(), QClass::IN.toString(), dest.toString()); } continue; } diff --git a/pdns/qtype.hh b/pdns/qtype.hh index 02c5ef57f3..b0ca39d3a4 100644 --- a/pdns/qtype.hh +++ b/pdns/qtype.hh @@ -146,19 +146,32 @@ inline size_t hash_value(const QType qtype) { struct QClass { - enum QClassEnum : uint16_t { IN = 1, CHAOS = 3, NONE = 254, ANY = 255 }; + constexpr QClass(uint16_t code = 0) : qclass(code) {} - QClass(uint16_t code = 0) : qclass(code) {} - - operator uint16_t() const { + constexpr operator uint16_t() const { return qclass; } - uint16_t getCode() const + constexpr uint16_t getCode() const { return qclass; } const std::string toString() const; + static const QClass IN; + static const QClass CHAOS; + static const QClass NONE; + static const QClass ANY; + private: uint16_t qclass; }; + +constexpr QClass QClass::IN(1); +constexpr QClass QClass::CHAOS(3); +constexpr QClass QClass::NONE(254); +constexpr QClass QClass::ANY(255); + +inline std::ostream& operator<<(std::ostream& s, QClass qclass) +{ + return s << qclass.toString(); +} -- 2.47.2