From: Pieter Lexis Date: Thu, 19 Apr 2018 08:10:07 +0000 (+0200) Subject: More EDNS tests X-Git-Tag: dnsdist-1.3.1~50^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2b54bebb0e4dd9b44f2b74d5b42c184a64963785;p=thirdparty%2Fpdns.git More EDNS tests --- diff --git a/regression-tests.recursor-dnssec/test_EDNS.py b/regression-tests.recursor-dnssec/test_EDNS.py new file mode 100644 index 0000000000..eebbc2f2c7 --- /dev/null +++ b/regression-tests.recursor-dnssec/test_EDNS.py @@ -0,0 +1,41 @@ +import dns +import os +import socket +import struct +import threading +import time + +from recursortests import RecursorTest +from twisted.internet.protocol import DatagramProtocol +from twisted.internet import reactor + +ednsBufferReactorRunning = False + +class EDNSTest(RecursorTest): + """ + These tests are designed to check if we respond correctly to EDNS queries + from clients. Note that buffer-size tests go into test_EDNSBufferSize + """ + _confdir = 'EDNS' + + def testEDNSUnknownOpt(self): + """ + Ensure the recursor does not reply with an unknown option when one is + sent in the query + """ + query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=0, + payload=4096) + unknownOpt = dns.edns.GenericOption(65005, b'1234567890') + query.options = [unknownOpt] + response = self.sendUDPQuery(query) + self.assertRcodeEqual(response, dns.rcode.NOERROR) + self.assertEqual(response.options, []) + + def testEDNSBadVers(self): + """ + Ensure the rcode is BADVERS when we send an unsupported EDNS version + """ + query = dns.message.make_query('version.bind.', 'TXT', 'CH', use_edns=5, + payload=4096) + response = self.sendUDPQuery(query) + self.assertRcodeEqual(response, dns.rcode.BADVERS)