diff --git a/pdns/dnsproxy.cc b/pdns/dnsproxy.cc index ec3827037bd8..2f497f457141 100644 --- a/pdns/dnsproxy.cc +++ b/pdns/dnsproxy.cc @@ -289,7 +289,7 @@ void DNSProxy::mainloop() // update the EDNS options with info from the resolver - issue #5469 // note that this relies on the ECS string encoder to use the source network, and only take the prefix length from scope iter->second.complete->d_eso.setScopePrefixLength(packet.d_eso.getScopePrefixLength()); - DLOG(g_log << "from dnsproxy::mainLoop: updated EDNS options from resolver EDNS source: " << iter->second.complete->d_eso.getSource().toString() << " EDNS scope: " << Netmask(iter->second.complete->d_eso.getSource().getNetwork(), iter->second.complete->d_eso.getScopePrefixLength()).toString() << endl); + DLOG(g_log << "from dnsproxy::mainLoop: updated EDNS options from resolver EDNS source: " << iter->second.complete->d_eso.getSource().toString() << " EDNS scope: " << iter->second.complete->d_eso.getScope().toString() << endl); if (mdp.d_header.rcode == RCode::NoError) { for (const auto& answer : mdp.d_answers) { diff --git a/pdns/ednssubnet.hh b/pdns/ednssubnet.hh index cc671d034678..70a8f395c1d7 100644 --- a/pdns/ednssubnet.hh +++ b/pdns/ednssubnet.hh @@ -50,6 +50,10 @@ public: { return scopeBits; } + [[nodiscard]] Netmask getScope() const + { + return {source.getNetwork(), scopeBits}; + } [[nodiscard]] std::string makeOptString() const; static bool getFromString(const std::string& options, EDNSSubnetOpts* eso); static bool getFromString(const char* options, unsigned int len, EDNSSubnetOpts* eso); diff --git a/pdns/sdig.cc b/pdns/sdig.cc index 0a7dec1eeb19..9f3a3fc6a16c 100644 --- a/pdns/sdig.cc +++ b/pdns/sdig.cc @@ -171,7 +171,7 @@ static void printReply(const string& reply, bool showflags, bool hidesoadetails, EDNSSubnetOpts reso; if (EDNSSubnetOpts::getFromString(iter->second, &reso)) { cerr << "EDNS Subnet response: " << reso.getSource().toString() - << ", scope: " << Netmask(reso.getSource().getNetwork(), reso.getScopePrefixLength()).toString() + << ", scope: " << reso.getScope().toString() << ", family = " << std::to_string(reso.getFamily()) << endl; }