Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
dnsjit.core.object.dns(3)  Library Functions Manual  dnsjit.core.object.dns(3)

NAME
       dnsjit.core.object.dns -	Container of a DNS message

SYNOPSIS
   Parse DNS header and	check if query or response
	 local dns = require("dnsjit.core.object.dns").new(payload)
	 if dns:parse_header() == 0 then
	   if dns.qr ==	0 then
	     print(dns.id, dns.opcode_tostring(dns.opcode))
	   else
	     print(dns.id, dns.rcode_tostring(dns.rcode))
	   end
	 end

   Print a DNS payload
	 local dns = require("dnsjit.core.object.dns").new(payload)
	 dns:print()

   Parse a DNS payload
	 local dns = require("dnsjit.core.object.dns").new(payload)
	 local qs, q_labels, rrs, rr_labels = dns:parse()
	 if qs and q_labels then
	   ...
	   if rrs and rr_labels	then
	     ...
	   end
	 end

DESCRIPTION
       The object that describes a DNS message.

   Attributes
       includes_dnslen
	      If  non-zero then	this indicates that the	DNS length is included
	      in the payload (for example if the transport is  TCP)  and  will
	      affect parsing of	it.

       have_dnslen
	      Set if the dnslen	was included in	the payload and	could be read.

       have_id
	      Set if there is a	DNS ID.

       have_qr
	      Set if there is a	QR flag.

       have_opcode
	      Set if there is an OPCODE.

       have_aa
	      Set if there is a	AA flag.

       have_tc
	      Set if there is a	TC flag.

       have_rd
	      Set if there is a	RD flag.

       have_ra
	      Set if there is a	RA flag.

       have_z Set if there is a	Z flag.

       have_ad
	      Set if there is a	AD flag.

       have_cd
	      Set if there is a	CD flag.

       have_rcode
	      Set if there is a	RCODE.

       have_qdcount
	      Set if there is an QDCOUNT.

       have_ancount
	      Set if there is an ANCOUNT.

       have_nscount
	      Set if there is a	NSCOUNT.

       have_arcount
	      Set if there is an ARCOUNT.

       dnslen The DNS length found in the payload.

       id     The DNS ID.

       qr     The QR flag.

       opcode The OPCODE.

       aa     The AA flag.

       tc     The TC flag.

       rd     The RD flag.

       ra     The RA flag.

       z      The Z flag.

       ad     The AD flag.

       cd     The CD flag.

       rcode  The RCODE.

       qdcount
	      The QDCOUNT.

       ancount
	      The ANCOUNT.

       nscount
	      The NSCOUNT.

       arcount
	      The ARCOUNT.

   Constants
       The   following	 tables	  exists   for	 DNS  parameters,  taken  from
       https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml on
       the 2016-12-09.

       CLASS, CLASS_STR, TYPE, TYPE_STR, OPCODE, OPCODE_STR, RCODE, RCODE_STR,
       AFSDB, AFSDB_STR, DHCID,	DHCID_STR, ENDS0, ENDS0_STR

       The *_STR tables	can be used to get a  textual  representation  of  the
       numbers,	see also class_tostring(), type_tostring(), opcode_tostring(),
       rcode_tostring(),      afsdb_tostring(),	     dhcid_tostring()	   and
       edns0_tostring().

   Functions
       Dns.new(obj)
	      Create a new DNS object, optionally on-top of another object.

       Dns:type()
	      Return the textual type of the object.

       Dns:prev()
	      Return the previous object.

       Dns:cast()
	      Cast the object to the underlining object	module and return it.

       Dns:uncast()
	      Cast the object to the generic object module and return it.

       Dns:copy()
	      Make a copy of the object	and return it.

       Dns:free()
	      Free the object, should only be used on copies or	otherwise  al-
	      located.

       Dns:reset()
	      Reset the	object readying	it for reuse.

       Dns:log()
	      Return the Log object to control logging of this module.

       Dns:parse_header()
	      Begin parsing the	underlaying object, first the header is	parsed
	      then  optionally	continue  calling  parse_q() for the number of
	      questions	(see qdcount).	After that continue calling parse_rr()
	      for the number of	answers, authorities and additionals  resource
	      records  (see  ancount, nscount and arcount).  Returns 0 on suc-
	      cess or negative integer on error	which can be for malformed  or
	      truncated	DNS (-2) or if more space for labels is	needed (-3).

       Dns:parse_q(q, labels, num_labels)
	      Parse the	next resource record as	a question.  Returns 0 on suc-
	      cess  or negative	integer	on error which can be for malformed or
	      truncated	DNS (-2) or if more space for labels is	needed (-3).

       Dns:parse_rr(rr,	labels,	num_labels)
	      Parse the	next resource record.  Returns 0 on success  or	 nega-
	      tive  integer  on	 error which can be for	malformed or truncated
	      DNS (-2) or if more space	for labels is needed (-3).

       Dns:parse(num_labels)
	      Begin  parsing  the  underlaying	object	using  parse_header(),
	      parse_q()	 and  parse_rr().  The optional	num_labels can be used
	      to set a specific	number of labels used for  each	 question  and
	      resource	record (default	16).  Returns result code, an array of
	      questions, an array of question labels,  an  array  of  resource
	      records and an array of resource records labels.	Result code is
	      0	 on success or negative	integer	on error which can be for mal-
	      formed or	truncated DNS (-2) or if  more	space  for  labels  is
	      needed (-3).

       Dns:print(num_labels)
	      Begin  parsing  the  underlaying	object	using  parse_header(),
	      parse_q()	and parse_rr(),	and print it's content.	 The  optional
	      num_labels  can  be used to set a	specific number	of labels used
	      for each question	and resource record (default 16).

       Dns.class_tostring(class)
	      Return the textual name for a class.

       Dns.type_tostring(type)
	      Return the textual name for a type.

       Dns.opcode_tostring(opcode)
	      Return the textual name for an opcode.

       Dns.rcode_tostring(rcode)
	      Return the textual name for a rcode.

       Dns.afsdb_tostring(afsdb)
	      Return the textual name for an afsdb subtype.

       Dns.dhcid_tostring(dhcid)
	      Return the textual name for a dhcid type.

       Dns.edns0_tostring(edns0)
	      Return the textual name for an EDNS0 OPT record.

SEE ALSO
       dnsjit.core.object(3),  dnsjit.core.object.payload(3),  dnsjit.core.ob-
       ject.dns.label(3),     dnsjit.core.object.dns.q(3),     dnsjit.core.ob-
       ject.dns.rr(3)

AUTHORS	and CONTRIBUTORS
       Jerry Lundstrm (DNS-OARC), Tom Kek (CZ.NIC), Petr  paek (ISC)

       Maintained by DNS-OARC

	      https://www.dns-oarc.net/

BUGS
       For issues and feature requests please use:

	      https://github.com/DNS-OARC/dnsjit/issues

       For question and	help please use:

	      admin@dns-oarc.net

dnsjit				     1.4.0	     dnsjit.core.object.dns(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dnsjit.core.object.dns&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help