debian-bookworm
ubuntu-focal
ubuntu-jammy
+ ubuntu-noble
ref:
description: git ref to checkout
type: string
pkghashes-debian-bookworm: ${{ steps.pkghashes.outputs.pkghashes-debian-bookworm }}
pkghashes-ubuntu-focal: ${{ steps.pkghashes.outputs.pkghashes-ubuntu-focal }}
pkghashes-ubuntu-jammy: ${{ steps.pkghashes.outputs.pkghashes-ubuntu-jammy }}
+ pkghashes-ubuntu-noble: ${{ steps.pkghashes.outputs.pkghashes-ubuntu-noble }}
srchashes: ${{ steps.srchashes.outputs.srchashes }}
steps:
- uses: actions/checkout@v4
debian-bookworm
ubuntu-focal
ubuntu-jammy
+ ubuntu-noble
ref:
description: git ref to checkout
type: string
}
boost::optional<Netmask> subnet{boost::none}; // 40
+ std::string poolName; // 32
ComboAddress origRemote; // 28
ComboAddress origDest; // 28
ComboAddress hopRemote;
ComboAddress hopLocal;
DNSName qname; // 24
- std::string poolName; // 24
- StopWatch queryRealTime{true}; // 24
- std::shared_ptr<DNSDistPacketCache> packetCache{nullptr}; // 16
#ifdef HAVE_XSK
- PacketBuffer xskPacketHeader; // 8
+ PacketBuffer xskPacketHeader; // 24
#endif /* HAVE_XSK */
+ StopWatch queryRealTime{true}; // 24
+ std::shared_ptr<DNSDistPacketCache> packetCache{nullptr}; // 16
std::unique_ptr<DNSCryptQuery> dnsCryptQuery{nullptr}; // 8
std::unique_ptr<QTag> qTag{nullptr}; // 8
std::unique_ptr<PacketBuffer> d_packet{nullptr}; // Initial packet, so we can restart the query from the response path if needed // 8
ClientState* cs{nullptr}; // 8
std::unique_ptr<DOHUnitInterface> du; // 8
size_t d_proxyProtocolPayloadSize{0}; // 8
- int32_t d_streamID{-1}; // 4
std::unique_ptr<DOQUnit> doqu{nullptr}; // 8
std::unique_ptr<DOH3Unit> doh3u{nullptr}; // 8
+ int32_t d_streamID{-1}; // 4
uint32_t cacheKey{0}; // 4
uint32_t cacheKeyNoECS{0}; // 4
// DoH-only */
if (trace.empty()) {
return;
}
+ if (t_tracefd < 0) {
+ std::istringstream buf(trace);
+ g_log << Logger::Warning << "=== START OF FAIL TRACE ====" << endl;
+ for (string line; std::getline(buf, line);) {
+ g_log << Logger::Warning << line << endl;
+ }
+ g_log << Logger::Warning << "=== END OF FAIL TRACE ====" << endl;
+ return;
+ }
timeval now{};
Utility::gettimeofday(&now);
int traceFd = dup(t_tracefd);
--- /dev/null
+import dns
+import os
+import time
+import subprocess
+from recursortests import RecursorTest
+
+class testTraceFail(RecursorTest):
+ _confdir = 'TraceFail'
+
+ _config_template = """
+trace=fail
+forward-zones-recurse=.=127.0.0.1:9999
+"""
+
+ @classmethod
+ def setUpClass(cls):
+
+ # we don't need all the auth stuff
+ cls.setUpSockets()
+ cls.startResponders()
+
+ confdir = os.path.join('configs', cls._confdir)
+ cls.createConfigDir(confdir)
+
+ cls.generateRecursorConfig(confdir)
+ cls.startRecursor(confdir, cls._recursorPort)
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.tearDownRecursor()
+
+ def testA(self):
+ query = dns.message.make_query('example', 'A', want_dnssec=False)
+ res = self.sendUDPQuery(query)
+ self.assertRcodeEqual(res, dns.rcode.SERVFAIL)
+
+ grepCmd = ['grep', 'END OF FAIL TRACE', 'configs/' + self._confdir + '/recursor.log']
+ ret = b''
+ for i in range(10):
+ time.sleep(1)
+ try:
+ ret = subprocess.check_output(grepCmd, stderr=subprocess.STDOUT)
+ except subprocess.CalledProcessError as e:
+ continue
+ print(b'A' + ret)
+ break
+ print(ret)
+ self.assertNotEqual(ret, b'')
zoneToCache(".", "axfr", "193.0.14.129") -- k-root
"""
+ @classmethod
+ def setUpClass(cls):
+
+ # we don't need all the auth stuff
+ cls.setUpSockets()
+ cls.startResponders()
+
+ confdir = os.path.join('configs', cls._confdir)
+ cls.createConfigDir(confdir)
+
+ cls.generateRecursorConfig(confdir)
+ cls.startRecursor(confdir, cls._recursorPort)
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.tearDownRecursor()
+
def testZTC(self):
grepCmd = ['grep', 'validationStatus="Secure"', 'configs/' + self._confdir + '/recursor.log']
ret = b''