]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.recursor-dnssec/test_EDNS.py
Merge pull request #13509 from rgacogne/ddist-teeaction-proxyprotocol
[thirdparty/pdns.git] / regression-tests.recursor-dnssec / test_EDNS.py
1 import dns
2 import os
3 import socket
4 import struct
5 import threading
6 import time
7 import sys
8 from unittest import SkipTest
9
10 from recursortests import RecursorTest
11 from twisted.internet.protocol import DatagramProtocol
12 from twisted.internet import reactor
13
14 ednsBufferReactorRunning = False
15
16 class EDNSTest(RecursorTest):
17 """
18 These tests are designed to check if we respond correctly to EDNS queries
19 from clients. Note that buffer-size tests go into test_EDNSBufferSize
20 """
21 _confdir = 'EDNS'
22
23 def testEDNSUnknownOpt(self):
24 """
25 Ensure the recursor does not reply with an unknown option when one is
26 sent in the query
27 """
28 unknownOpt = dns.edns.GenericOption(65005, b'1234567890')
29 query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=0,
30 payload=4096, options=[unknownOpt])
31 response = self.sendUDPQuery(query)
32 self.assertRcodeEqual(response, dns.rcode.NOERROR)
33 self.assertEqual(response.options, ())
34
35 def testEDNSBadVers(self):
36 """
37 Ensure the rcode is BADVERS when we send an unsupported EDNS version and
38 the query is not processed any further.
39 """
40 if sys.version_info >= (3, 11) and sys.version_info <= (3, 11, 3):
41 raise SkipTest("Test skipped, see https://github.com/PowerDNS/pdns/pull/12912")
42 query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=5,
43 payload=4096)
44 response = self.sendUDPQuery(query)
45 self.assertRcodeEqual(response, dns.rcode.BADVERS)
46 self.assertEqual(response.answer, [])