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, [email protected]

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