]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Add a method to get the scoped subnet (aka Netmask) as suggested by @rgacogne 15040/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 17 Jan 2025 08:23:49 +0000 (09:23 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 17 Jan 2025 08:23:49 +0000 (09:23 +0100)
pdns/dnsproxy.cc
pdns/ednssubnet.hh
pdns/sdig.cc

index ec3827037bd8e7e38b0195c2fe2f5a9334218846..2f497f457141488cffb6b7ef0c8fc90c5f2b7c96 100644 (file)
@@ -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) {
index cc671d0346787cdeb16e0b1eb1036d68b225df86..70a8f395c1d7456b9cd9d3e0b25f5947f2657f2e 100644 (file)
@@ -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);
index 0a7dec1eeb19eb8090c0ea85150db89eed988cfc..9f3a3fc6a16c569e4bdced72e885f7314ac6243f 100644 (file)
@@ -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;
         }