]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests/tkey.py
7 def ensure(data
, offset
, value
):
8 if (data
[offset
:offset
+len(value
)] != value
):
9 raise Exception("Mismatch at packet offset {0!s} {1!r} != {2!r}".format(offset
,data
[offset
:offset
+len(value
)], value
))
12 s
= socket
.socket(socket
.AF_INET
, socket
.SOCK_DGRAM
)
14 msg
= b
"\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"
16 s
.sendto(msg
, (host
, port
))
18 data
, addr
= s
.recvfrom(512)
20 # make sure the data validates
23 ensure(data
, 0, msg
[0:2])
25 # has one question, one answer
26 ensure(data
, 4, b
"\x00\x01")
27 ensure(data
, 6, b
"\x00\x01")
29 # question is tkey.unit.test ANY TKEY?
30 ensure(data
, 12, b
"\x04tkey\x04unit\x04test\x00\x00\xf9\x00\xff")
31 # answer is called tkey.unit.test ANY TKEY (compressed it seems)
32 ensure(data
, 32, b
"\xc0\x0c\x00\xf9\x00\xff")
34 # and then ensure we get an BADALGO or error, at least.
35 if (data
[64:66] == "\x00\x00"):
36 raise Exception("At packet offset {0!s}: expected {2!r}, got {1!r}".format(offset
,data
[offset
:offset
+len(value
)], value
))
38 print("Got expected TKEY response\n")
40 if (len(sys
.argv
) < 3):
41 print("Usage: tkey.py host port")
44 if __name__
== '__main__':
45 main(sys
.argv
[1], int(sys
.argv
[2]))