NAME

Net::DNS::Codes - collection of C library DNS codes

SYNOPSIS

  use Net::DNS::Codes qw(
	:header
	:RRs
	:constants
	:all
    (or any individual item)
  );

  --------- :header -------

  $textval = RBitsTxt->{masked_bits};
  $textval = RcodeTxt->{numeric};
  $textval = OpcodeTxt->{numeric};
  $code = (one of text below)

QR AA TC RD RA MBZ Z AD CD

BITS_QUERY BITS_IQUERY BITS_STATUS BITS_NS_NOTIFY_OP BITS_NS_UPDATE_OP

QUERY IQUERY STATUS NS_NOTIFY_OP NS_UPDATE_OP

NOERROR FORMERR SERVFAIL NXDOMAIN NOTIMP REFUSED YXDOMAIN YXRRSET NXRRSET NOTAUTH NOTZONE BADSIG BADKEY BADTIME

for flag manipulation

RCODE_MASK BITS_OPCODE_MASK

------- :RRs -------

$textval = ClassTxt->{numeric};  
$textval = TypeTxt->{numeric};
$code = (one of text below)

C_IN C_CHAOS C_HS C_NONE C_ANY

T_A T_NS T_MD T_MF T_CNAME T_SOA T_MB T_MG T_MR T_NULL T_WKS T_PTR T_HINFO T_MINFO T_MX T_TXT T_RP T_AFSDB T_X25 T_ISDN T_RT T_NSAP T_NSAP_PTR T_SIG T_KEY T_PX T_GPOS T_AAAA T_LOC T_NXT T_EID T_NIMLOC T_SRV T_ATMA T_NAPTR T_KX T_CERT T_A6 T_DNAME T_SINK T_OPT T_TKEY T_TSIG T_IXFR T_AXFR T_MAILB T_MAILA T_ANY

------- :constants -------
$code = (one of test below)

PACKETSZ NS_PACKETSZ MAXDNAME NS_MAXDNAME MAXCDNAME NS_MAXCDNAME MAXLABEL NS_MAXLABEL HFIXEDSZ NS_HFIXEDSZ QFIXEDSZ NS_QFIXEDSZ RRFIXEDSZ NS_RRFIXEDSZ INT32SZ NS_INT32SZ INT16SZ NS_INT16SZ NS_INT8SZ INADDRSZ NS_INADDRSZ IN6ADDRSZ NS_IN6ADDRSZ INDIR_MASK NS_CMPRSFLGS NAMESERVER_PORT NS_DEFAULTPORT

$code = INT8SZ (not a DNS code, added for convenience)

DESCRIPTION

Net::DNS::Codes provides forward and reverse lookup for most common C library DNS codes as well as all the codes for the DNS HEADER field.

  • $bitmask = XX

      Return the bitmask for the code:
    
       15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   Rcode   |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
        0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
    
      QR		=>	1000_0000_0000_0000
      BitsOpcode	=>	Opcode binary value
    			left shifted 11 bits
      AA		=>	100_0000_0000
      TC		=>	10_0000_0000
      RD		=>	1_0000_0000
      RA		=>	1000_0000
      MBZ or Z	=>	100_0000
      AD		=>	10_0000
      CD		=>	1_0000
      Rcode		=>	Rcode binary value
    
      RCODE_MASK	=>	1111_1111_1111_0000
    
      where BitsOpcode =
    
      BITS_QUERY	    =>      0, 
      BITS_IQUERY	    =>      1000_0000_0000 # 1 << 11
      BITS_STATUS	    =>    1_0000_0000_0000 # 2 << 11
      BITS_NS_NOTIFY_OP =>   10_0000_0000_0000 # 4 << 11
      BITS_NS_UPDATE_OP =>   10_1000_0000_0000 # 5 << 11
    
      BITS_OPCODE_MASK  => 1000_0111_1111_1111
  • $textval = RBitsTxt->{masked_bits};

    Returns the TEXT string for the bit fields above.

    NOTE: that MBZ and Z have the same value. 
    The text string 'MBZ' is returned for 0x1 << 6
  • $textval = RcodeTxt->{numeric};

      Return the TEXT string for numeric code.
    
    	NOERROR		=> 0,
    	FORMERR		=> 1,
    	SERVFAIL	=> 2,
    	NXDOMAIN	=> 3,
    	NOTIMP		=> 4,
    	REFUSED		=> 5,
    	YXDOMAIN	=> 6,
    	YXRRSET		=> 7,
    	NXRRSET		=> 8,
    	NOTAUTH		=> 9,
    	NOTZONE		=> 10,
    	BADSIG		=> 16,
    	BADKEY		=> 17,
    	BADTIME		=> 18,
  • $textval = OpcodeTxt->{numeric};

      Return the TEXT string for numeric code.
    
    	QUERY		=> 0,
    	IQUERY		=> 1,
    	STATUS		=> 2, 
    	NS_NOTIFY_OP	=> 4, 
    	NS_UPDATE_OP	=> 5,  
  • $textval = ClassTxt->{numeric};

      Return the TEXT string for numeric code.
    
    	C_IN	    => 1,
    	C_CHAOS	 => 3,
    	C_HS	    => 4,
    	C_NONE	  => 254,
    	C_ANY	   => 255,
  • $textval = TypeTxt->{numeric};

      Return the TEXT string for numeric code.
    
      T_A		=> 1,	# rfc1035.txt
      T_NS		=> 2,	# rfc1035.txt
      T_MD		=> 3,	# rfc1035.txt
      T_MF		=> 4,	# rfc1035.txt
      T_CNAME	=> 5,	# rfc1035.txt
      T_SOA		=> 6,	# rfc1035.txt
      T_MB		=> 7,	# rfc1035.txt
      T_MG		=> 8,	# rfc1035.txt
      T_MR		=> 9,	# rfc1035.txt
      T_NULL	=> 10,	# rfc1035.txt
      T_WKS		=> 11,	# rfc1035.txt
      T_PTR		=> 12,	# rfc1035.txt
      T_HINFO	=> 13,	# rfc1035.txt
      T_MINFO	=> 14,	# rfc1035.txt
      T_MX		=> 15,	# rfc1035.txt
      T_TXT		=> 16,	# rfc1035.txt
      T_RP		=> 17,	# rfc1183.txt
      T_AFSDB	=> 18,	# rfc1183.txt
      T_X25		=> 19,	# rfc1183.txt
      T_ISDN	=> 20,	# rfc1183.txt
      T_RT		=> 21,	# rfc1183.txt
      T_NSAP	=> 22,	# rfc1706.txt
      T_NSAP_PTR	=> 23,	# rfc1348.txt
      T_SIG		=> 24,	# rfc2535.txt
      T_KEY		=> 25,	# rfc2535.txt
      T_PX		=> 26,	# rfc2163.txt
      T_GPOS	=> 27,	# rfc1712.txt
      T_AAAA	=> 28,	# rfc1886.txt
      T_LOC		=> 29,	# rfc1876.txt
      T_NXT		=> 30,	# rfc2535.txt
      T_EID		=> 31,	# draft-ietf-nimrod-dns-02.txt
      T_NIMLOC	=> 32,	# draft-ietf-nimrod-dns-02.txt
      T_SRV		=> 33,	# rfc2052.txt
      T_ATMA	=> 34,	# af-saa-0069.000.txt
      T_NAPTR	=> 35,	# rfc2168.txt
      T_KX		=> 36,	# rfc2230.txt
      T_CERT	=> 37,	# rfc2538.txt
      T_A6		=> 38,	# rfc2874.txt
      T_DNAME	=> 39,	# rfc2672.txt
      T_SINK	=> 40,	# draft-ietf-dnsind-kitchen-sink-01.txt
      T_OPT		=> 41,	# rfc2671.txt
      T_APL		=> 42,	# rfc3123.txt
      T_DS		=> 43,	# draft-ietf-dnsext-delegation-signer-15.txt
      T_SSHFP	=> 44,	# rfc4255.txt
      T_IPSECKEY	=> 45,	# rfc4025.txt
      T_RRSIG	=> 46,	# rfc4034.txt
      T_NSEC	=> 47,	# rfc4034.txt
      T_DNSKEY	=> 48,	# rfc4034.txt
      T_DHCID	=> 49,	# rfc4701.txt
      T_NSEC3	=> 50,	# rfc5155.txt
      T_NSEC3PARAM	=> 51,	# rfc5155.txt
    	# unassigned 52 - 54
      T_HIP		=> 55,	# rfc5205.txt
      T_NINFO	=> 56,	# unknown
      T_RKEY	=> 57,	# draft-reid-dnsext-rkey-00.txt
      T_ALINK	=> 58,	# draft-ietf-dnsop-dnssec-trust-history-02.txt
      T_CDS		=> 59,	# draft-barwood-dnsop-ds-publish-02.txt
    	# unassigned 60 - 98
      T_UINFO	=> 100,	# reserved
      T_UID		=> 101,	# reserved
      T_GID		=> 102,	# reserved
      T_UNSPEC	=> 103,	# reserved
    	# unassigned 104 - 248
      T_TKEY	=> 249,	# rfc2930.txt
      T_TSIG	=> 250,	# rfc2931.txt
      T_IXFR	=> 251,	# rfc1995.txt
      T_AXFR	=> 252,	# rfc1035.txt
      T_MAILB	=> 253,	# rfc973.txt
      T_MAILA	=> 254,	# rfc973.txt
      T_ANY		=> 255,	# rfc1886.txt
  • (various constants)

    PACKETSZ        NS_PACKETSZ     512
    MAXDNAME        NS_MAXDNAME     1025
    MAXCDNAME       NS_MAXCDNAME    255 
    MAXLABEL        NS_MAXLABEL     63  
    HFIXEDSZ        NS_HFIXEDSZ     12  
    QFIXEDSZ        NS_QFIXEDSZ     4   
    RRFIXEDSZ       NS_RRFIXEDSZ    10  
    INT32SZ         NS_INT32SZ      4   
    INT16SZ         NS_INT16SZ      2   
    INT8SZ          NS_INT8SZ       1   
    INADDRSZ        NS_INADDRSZ     4   
    IN6ADDRSZ       NS_IN6ADDRSZ    16  
    INDIR_MASK      NS_CMPRSFLGS    0xc0
    NAMESERVER_PORT NS_DEFAULTPORT  53  

INSTALLATION

To install this module, type:

perl Makfile.PL
make
make test
make install

EXPORT_OK

------- for tag :header -------

RBitsTxt RcodeTxt OpcodeTxt

QR AA TC RD RA MBZ Z AD CD

BITS_QUERY BITS_IQUERY BITS_STATUS BITS_NS_NOTIFY_OP BITS_NS_UPDATE_OP

QUERY IQUERY STATUS NS_NOTIFY_OP NS_UPDATE_OP

NOERROR FORMERR SERVFAIL NXDOMAIN NOTIMP REFUSED YXDOMAIN YXRRSET NXRRSET NOTAUTH NOTZONE BADSIG BADKEY BADTIME

BITS_OPCODE_MASK RCODE_MASK

------- for tag :RRs -------

$textval = ClassTxt->{numeric};  
$textval = TypeTxt->{numeric};
$code = (one of text below)

C_IN C_CHAOS C_HS C_NONE C_ANY

T_A T_NS T_MD T_MF T_CNAME T_SOA T_MB T_MG T_MR T_NULL T_WKS T_PTR T_HINFO T_MINFO T_MX T_TXT T_RP T_AFSDB T_X25 T_ISDN T_RT T_NSAP T_NSAP_PTR T_SIG T_KEY T_PX T_GPOS T_AAAA T_LOC T_NXT T_EID T_NIMLOC T_SRV T_ATMA T_NAPTR T_KX T_CERT T_A6 T_DNAME T_SINK T_OPT T_APL T_DS T_SSHFP T_IPSECKEY T_RRSIG T_NSEC T_DNSKEY T_DHCID T_NSEC3 T_NSEC3PARAM T_HIP T_NINFO T_RKEY T_ALINK T_CDS T_UINFO T_UID T_GID T_UNSPEC T_TKEY T_TSIG T_IXFR T_AXFR T_MAILB T_MAILA T_ANY

------- for tag :constants -------

PACKETSZ NS_PACKETSZ MAXDNAME NS_MAXDNAME MAXCDNAME NS_MAXCDNAME MAXLABEL NS_MAXLABEL HFIXEDSZ NS_HFIXEDSZ QFIXEDSZ NS_QFIXEDSZ RRFIXEDSZ NS_RRFIXEDSZ INT32SZ NS_INT32SZ INT16SZ NS_INT16SZ NS_INT8SZ INADDRSZ NS_INADDRSZ IN6ADDRSZ NS_IN6ADDRSZ INDIR_MASK NS_CMPRSFLGS NAMESERVER_PORT NS_DEFAULTPORT INT8SZ

EXPORT_TAGS

:header
:RRs
:constants
:all

AUTHOR

Michael Robinton, michael@bizsystems.com

COPYRIGHT

Copyright 2003 - 2014, Michael Robinton & BizSystems This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

SEE ALSO

perl(1), /usr/include/resolv.h /usr/include/arpa/nameser.h /usr/include/namser_compat.h