def make_query(qname, rdtype, rdclass=dns.rdataclass.IN, use_edns=None,
want_dnssec=False, ednsflags=None, payload=None,
- request_payload=None, options=None, idna_codec=None):
+ request_payload=None, options=None, idna_codec=None,
+ id=None):
"""Make a query message.
The query name, type, and class may all be specified either
encoder/decoder. If ``None``, the default IDNA 2003 encoder/decoder
is used.
+ *id*, an ``int`` or ``None``, the desired query id. The default is
+ ``None``, which generates a random query id.
+
Returns a ``dns.message.QueryMessage``
"""
qname = dns.name.from_text(qname, idna_codec=idna_codec)
rdtype = dns.rdatatype.RdataType.make(rdtype)
rdclass = dns.rdataclass.RdataClass.make(rdclass)
- m = QueryMessage()
+ m = QueryMessage(id=id)
m.flags |= dns.flags.RD
m.find_rrset(m.question, qname, rdclass, rdtype, create=True,
force_unique=True)
self.assertEqual(q.payload, 4096)
self.assertEqual(q.options, ())
+ def test_setting_id(self):
+ q = dns.message.make_query('www.dnspython.org.', 'a', id=12345)
+ self.assertEqual(q.id, 12345)
+
def test_generic_message_class(self):
q1 = dns.message.Message(id=1)
q1.set_opcode(dns.opcode.NOTIFY)