Package dns :: Module message
[hide private]
[frames] | no frames]

Module message

source code

DNS Messages

Classes [hide private]
  ShortHeader
The DNS packet passed to from_wire() is too short.
  TrailingJunk
The DNS packet passed to from_wire() has extra junk at the end of it.
  UnknownHeaderField
The header field name was not recognized when converting from text into a message.
  BadEDNS
An OPT record occurred somewhere other than the start of the additional data section.
  BadTSIG
A TSIG record occurred somewhere other than the end of the additional data section.
  UnknownTSIGKey
A TSIG with an unknown key was received.
  Message
A DNS message.
  _WireReader
Wire format reader.
  _TextReader
Text format reader.
Functions [hide private]
 
from_wire(wire, keyring=None, request_mac='', xfr=False, origin=None, tsig_ctx=None, multi=False, first=True, question_only=False, one_rr_per_rrset=False, ignore_trailing=False)
Convert a DNS wire format message into a message object.
source code
 
from_text(text)
Convert the text format message into a message object.
source code
 
from_file(f)
Read the next text format message from the specified file.
source code
 
make_query(qname, rdtype, rdclass=1, use_edns=None, want_dnssec=False, ednsflags=None, payload=None, request_payload=None, options=None)
Make a query message.
source code
 
make_response(query, recursion_available=False, our_payload=8192, fudge=300)
Make a message which is a response for the specified query.
source code
Variables [hide private]
  QUESTION = 0
  ANSWER = 1
  AUTHORITY = 2
  ADDITIONAL = 3
  __package__ = 'dns'
Function Details [hide private]

from_wire(wire, keyring=None, request_mac='', xfr=False, origin=None, tsig_ctx=None, multi=False, first=True, question_only=False, one_rr_per_rrset=False, ignore_trailing=False)

source code 

Convert a DNS wire format message into a message object.

*keyring*, a ``dict``, the keyring to use if the message is signed.

*request_mac*, a ``binary``. If the message is a response to a TSIG-signed request, *request_mac* should be set to the MAC of that request.

*xfr*, a ``bool``, should be set to ``True`` if this message is part of a zone transfer.

*origin*, a ``dns.name.Name`` or ``None``. If the message is part of a zone transfer, *origin* should be the origin name of the zone.

*tsig_ctx*, a ``hmac.HMAC`` objext, the ongoing TSIG context, used when validating zone transfers.

*multi*, a ``bool``, should be set to ``True`` if this message part of a multiple message sequence.

*first*, a ``bool``, should be set to ``True`` if this message is stand-alone, or the first message in a multi-message sequence.

*question_only*, a ``bool``. If ``True``, read only up to the end of the question section.

*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.

*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the message.

Raises ``dns.message.ShortHeader`` if the message is less than 12 octets long.

Raises ``dns.messaage.TrailingJunk`` if there were octets in the message past the end of the proper DNS message, and *ignore_trailing* is ``False``.

Raises ``dns.message.BadEDNS`` if an OPT record was in the wrong section, or occurred more than once.

Raises ``dns.message.BadTSIG`` if a TSIG record was not the last record of the additional data section.

Returns a ``dns.message.Message``.

from_text(text)

source code 

Convert the text format message into a message object.

*text*, a ``text``, the text format message.

Raises ``dns.message.UnknownHeaderField`` if a header is unknown.

Raises ``dns.exception.SyntaxError`` if the text is badly formed.

Returns a ``dns.message.Message object``

from_file(f)

source code 

Read the next text format message from the specified file.

*f*, a ``file`` or ``text``. If *f* is text, it is treated as the pathname of a file to open.

Raises ``dns.message.UnknownHeaderField`` if a header is unknown.

Raises ``dns.exception.SyntaxError`` if the text is badly formed.

Returns a ``dns.message.Message object``

make_query(qname, rdtype, rdclass=1, use_edns=None, want_dnssec=False, ednsflags=None, payload=None, request_payload=None, options=None)

source code 

Make a query message.

The query name, type, and class may all be specified either as objects of the appropriate type, or as strings.

The query will have a randomly chosen query id, and its DNS flags will be set to dns.flags.RD.

qname, a ``dns.name.Name`` or ``text``, the query name.

*rdtype*, an ``int`` or ``text``, the desired rdata type.

*rdclass*, an ``int`` or ``text``, the desired rdata class; the default is class IN.

*use_edns*, an ``int``, ``bool`` or ``None``. The EDNS level to use; the default is None (no EDNS). See the description of dns.message.Message.use_edns() for the possible values for use_edns and their meanings.

*want_dnssec*, a ``bool``. If ``True``, DNSSEC data is desired.

*ednsflags*, an ``int``, the EDNS flag values.

*payload*, an ``int``, is the EDNS sender's payload field, which is the maximum size of UDP datagram the sender can handle. I.e. how big a response to this message can be.

*request_payload*, an ``int``, is the EDNS payload size to use when sending this message. If not specified, defaults to the value of *payload*.

*options*, a list of ``dns.edns.Option`` objects or ``None``, the EDNS options.

Returns a ``dns.message.Message``

make_response(query, recursion_available=False, our_payload=8192, fudge=300)

source code 

Make a message which is a response for the specified query. The message returned is really a response skeleton; it has all of the infrastructure required of a response, but none of the content.

The response's question section is a shallow copy of the query's question section, so the query's question RRsets should not be changed.

*query*, a ``dns.message.Message``, the query to respond to.

*recursion_available*, a ``bool``, should RA be set in the response?

*our_payload*, an ``int``, the payload size to advertise in EDNS responses.

*fudge*, an ``int``, the TSIG time fudge.

Returns a ``dns.message.Message`` object.