]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
First attempt at edns.py
authorPaul Hoffman <phoffman@proper.com>
Thu, 14 Oct 2021 01:30:47 +0000 (18:30 -0700)
committerPaul Hoffman <phoffman@proper.com>
Thu, 14 Oct 2021 01:30:47 +0000 (18:30 -0700)
examples/edns.py [new file with mode: 0755]

diff --git a/examples/edns.py b/examples/edns.py
new file mode 100755 (executable)
index 0000000..b398885
--- /dev/null
@@ -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()
+