From: Aki Tuomi Date: Wed, 18 Feb 2015 19:39:19 +0000 (+0200) Subject: Regression test for TKEY support X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~98^2~44^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0072e6df352eb070076a8f6ea11c518136f137c;p=thirdparty%2Fpdns.git Regression test for TKEY support --- diff --git a/regression-tests/tests/tkey-awareness/command b/regression-tests/tests/tkey-awareness/command new file mode 100755 index 0000000000..9784f83e9a --- /dev/null +++ b/regression-tests/tests/tkey-awareness/command @@ -0,0 +1,3 @@ +#!/bin/sh + +tkey.py $nameserver $port diff --git a/regression-tests/tests/tkey-awareness/description b/regression-tests/tests/tkey-awareness/description new file mode 100644 index 0000000000..2a2d221e62 --- /dev/null +++ b/regression-tests/tests/tkey-awareness/description @@ -0,0 +1 @@ +Make sure TKEY query is understood and rejected properly diff --git a/regression-tests/tests/tkey-awareness/expected_result b/regression-tests/tests/tkey-awareness/expected_result new file mode 100644 index 0000000000..8f2ed26141 --- /dev/null +++ b/regression-tests/tests/tkey-awareness/expected_result @@ -0,0 +1,2 @@ +Got expected TKEY response + diff --git a/regression-tests/tkey.py b/regression-tests/tkey.py new file mode 100755 index 0000000000..04c700b08c --- /dev/null +++ b/regression-tests/tkey.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +import socket; +import select; +import sys; + +def ensure(data, offset, value): + if (data[offset:offset+len(value)] != value): + raise Exception("Mismatch at packet offset {0!s} {1!r} != {2!r}".format(offset,data[offset:offset+len(value)], value)) + +def main(host, port): + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + + msg = "\xaa\x77\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff\x00\x00\x00\x00\x00\x22\x03bad\04algo\x00\x00\x00\x30\x39\x00\x00\x30\x39\x00\x03\x00\x00\x00\x04test\x00\x00" + + s.sendto(msg, (host, port)) + s.settimeout(2) + data, addr = s.recvfrom(512) + + # make sure the data validates + + # transaction id + ensure(data, 0, msg[0:2]) + + # has one question, one answer + ensure(data, 4, "\x00\x01") + ensure(data, 6, "\x00\x01") + + # question is tkey.unit.test ANY TKEY? + ensure(data, 12, "\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff") + # answer is called tkey.unit.test ANY TKEY (compressed it seems) + ensure(data, 32, "\xc0\x0c\x00\xf9\x00\xff") + + # and then ensure we get an BADALGO or error, at least. + if (data[64:66] == "\x00\x00"): + raise Exception("At packet offset {0!s}: expected {2!r}, got {1!r}".format(offset,data[offset:offset+len(value)], value)) + + print "Got expected TKEY response\n" + +if (len(sys.argv) < 3): + print "Usage: tkey.py host port" + sys.exit(1) + +if __name__ == '__main__': + main(sys.argv[1], int(sys.argv[2]))