From 41ba4f7a43f227a1871b1eff5672014738c8c371 Mon Sep 17 00:00:00 2001 From: Paul Hoffman Date: Wed, 13 Oct 2021 18:30:47 -0700 Subject: [PATCH] First attempt at edns.py --- examples/edns.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 examples/edns.py diff --git a/examples/edns.py b/examples/edns.py new file mode 100755 index 00000000..b3988851 --- /dev/null +++ b/examples/edns.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import dns.edns +import dns.message +import dns.query +import dns.resolver + +n = '.' +t = dns.rdatatype.SOA +a = '199.7.83.42' # Address of l.root-servers.net + +q_list = [] + +# A query without EDNS0 +q_list.append(dns.message.make_query(n, t)) + +# The same query, but with EDNS0 turned on with no options +q_list.append(dns.message.make_query(n, t, use_edns=0)) + +# With an NSID option (use_edns=0 is not needed if options are specified) +q_list.append(dns.message.make_query(n, t,\ + options=[dns.edns.GenericOption(dns.edns.OptionType.NSID, b'')])) + +# With a COOKIE +q_list.append(dns.message.make_query(n, t,\ + options=[dns.edns.GenericOption(dns.edns.OptionType.COOKIE, b'0xfe11ac99bebe3322')])) + +# With an ECS option using dns.edns.ECSOption to form the option +q_list.append(dns.message.make_query(n, t,\ + options=[dns.edns.ECSOption('192.168.0.0', 20)])) + +for q in q_list: + r = dns.query.udp(q, a) + if not r.options: + print('No EDNS options returned') + else: + for o in r.options: + print(o.otype.value, o.data) + print() + -- 2.47.3