delay1.example. 3600 IN SOA {soa}
delay1.example. 3600 IN NS n1.delay1.example.
ns1.delay1.example. 3600 IN A {prefix}.16
+8.delay1.example. 3600 IN A 192.0.2.100
*.delay1.example. 0 LUA TXT ";" "local socket=require('socket')" "socket.sleep(tonumber(qname:getRawLabels()[1])/10)" "return 'a'"
+*.delay1.example. 0 LUA AAAA ";" "local socket=require('socket')" "socket.sleep(tonumber(qname:getRawLabels()[1])/10)" "return '1::2'"
""",
'delay2.example': """
class DNS64RecursorTest(RecursorTest):
- _auth_zones = {
- '8': {'threads': 1,
- 'zones': ['ROOT']}
- }
-
_confdir = 'DNS64'
_config_template = """
auth-zones=example.dns64=configs/%s/example.dns64.zone
self.assertRcodeEqual(res, dns.rcode.NOERROR)
self.assertRRsetInAnswer(res, expected)
- # If the AAAA FormFails, we still should get a dns64 result
- def testFormErrAAAA(self):
- qname = 'formerr.example.dns64.'
- expected = dns.rrset.from_text(qname, 0, dns.rdataclass.IN, 'AAAA', '64:ff9b::c000:22b')
+ # If the AAAA is handled by Lua code, we should not get a dns64 result
+ def testFormerr(self):
+ qname = 'formerr.example.dns64'
+
+ query = dns.message.make_query(qname, 'AAAA', want_dnssec=True)
+ for method in ("sendUDPQuery", "sendTCPQuery"):
+ sender = getattr(self, method)
+ res = sender(query)
+ self.assertRcodeEqual(res, dns.rcode.FORMERR)
+
+ # If the AAAA times out, we still should get a dns64 result
+ def testTimeout(self):
+ qname = '8.delay1.example.'
+ expected = dns.rrset.from_text(qname, 0, dns.rdataclass.IN, 'AAAA', '64:ff9b::c000:264')
query = dns.message.make_query(qname, 'AAAA', want_dnssec=True)
for method in ("sendUDPQuery", "sendTCPQuery"):