summaryrefslogtreecommitdiff
path: root/contrib/DNS-LDNS/lib/DNS/LDNS.pm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/DNS-LDNS/lib/DNS/LDNS.pm')
-rw-r--r--contrib/DNS-LDNS/lib/DNS/LDNS.pm1310
1 files changed, 1310 insertions, 0 deletions
diff --git a/contrib/DNS-LDNS/lib/DNS/LDNS.pm b/contrib/DNS-LDNS/lib/DNS/LDNS.pm
new file mode 100644
index 0000000000000..d2fe20e193b30
--- /dev/null
+++ b/contrib/DNS-LDNS/lib/DNS/LDNS.pm
@@ -0,0 +1,1310 @@
+package DNS::LDNS;
+
+use 5.014002;
+use strict;
+use warnings;
+use Carp;
+
+require Exporter;
+use AutoLoader;
+
+our @ISA = qw(Exporter);
+
+# Items to export into callers namespace by default. Note: do not export
+# names by default without a very good reason. Use EXPORT_OK instead.
+# Do not simply export all your public functions/methods/constants.
+
+our %EXPORT_TAGS = ( 'all' => [ qw(
+ LDNS_AA
+ LDNS_AD
+ LDNS_CD
+ LDNS_CERT_ACPKIX
+ LDNS_CERT_IACPKIX
+ LDNS_CERT_IPGP
+ LDNS_CERT_IPKIX
+ LDNS_CERT_ISPKI
+ LDNS_CERT_OID
+ LDNS_CERT_PGP
+ LDNS_CERT_PKIX
+ LDNS_CERT_SPKI
+ LDNS_CERT_URI
+ LDNS_DEFAULT_EXP_TIME
+ LDNS_DEFAULT_TTL
+ LDNS_DH
+ LDNS_DNSSEC_KEYPROTO
+ LDNS_DSA
+ LDNS_DSA_NSEC3
+ LDNS_ECC
+ LDNS_ECC_GOST
+ LDNS_HASH_GOST
+ LDNS_IP4ADDRLEN
+ LDNS_IP6ADDRLEN
+ LDNS_KEY_REVOKE_KEY
+ LDNS_KEY_SEP_KEY
+ LDNS_KEY_ZONE_KEY
+ LDNS_MAX_DOMAINLEN
+ LDNS_MAX_KEYLEN
+ LDNS_MAX_LABELLEN
+ LDNS_MAX_PACKETLEN
+ LDNS_MAX_POINTERS
+ LDNS_MAX_RDFLEN
+ LDNS_NSEC3_MAX_ITERATIONS
+ LDNS_NSEC3_VARS_OPTOUT_MASK
+ LDNS_PACKET_ANSWER
+ LDNS_PACKET_IQUERY
+ LDNS_PACKET_NODATA
+ LDNS_PACKET_NOTIFY
+ LDNS_PACKET_NXDOMAIN
+ LDNS_PACKET_QUERY
+ LDNS_PACKET_QUESTION
+ LDNS_PACKET_REFERRAL
+ LDNS_PACKET_STATUS
+ LDNS_PACKET_UNKNOWN
+ LDNS_PACKET_UPDATE
+ LDNS_PORT
+ LDNS_PRIVATEDNS
+ LDNS_PRIVATEOID
+ LDNS_QR
+ LDNS_RA
+ LDNS_RCODE_FORMERR
+ LDNS_RCODE_NOERROR
+ LDNS_RCODE_NOTAUTH
+ LDNS_RCODE_NOTIMPL
+ LDNS_RCODE_NOTZONE
+ LDNS_RCODE_NXDOMAIN
+ LDNS_RCODE_NXRRSET
+ LDNS_RCODE_REFUSED
+ LDNS_RCODE_SERVFAIL
+ LDNS_RCODE_YXDOMAIN
+ LDNS_RCODE_YXRRSET
+ LDNS_RD
+ LDNS_RDATA_FIELD_DESCRIPTORS_COMMON
+ LDNS_RDF_SIZE_16BYTES
+ LDNS_RDF_SIZE_6BYTES
+ LDNS_RDF_SIZE_BYTE
+ LDNS_RDF_SIZE_DOUBLEWORD
+ LDNS_RDF_SIZE_WORD
+ LDNS_RDF_TYPE_A
+ LDNS_RDF_TYPE_AAAA
+ LDNS_RDF_TYPE_ALG
+ LDNS_RDF_TYPE_APL
+ LDNS_RDF_TYPE_ATMA
+ LDNS_RDF_TYPE_B32_EXT
+ LDNS_RDF_TYPE_B64
+ LDNS_RDF_TYPE_CERT_ALG
+ LDNS_RDF_TYPE_CLASS
+ LDNS_RDF_TYPE_DNAME
+ LDNS_RDF_TYPE_HEX
+ LDNS_RDF_TYPE_INT16
+ LDNS_RDF_TYPE_INT16_DATA
+ LDNS_RDF_TYPE_INT32
+ LDNS_RDF_TYPE_INT8
+ LDNS_RDF_TYPE_IPSECKEY
+ LDNS_RDF_TYPE_LOC
+ LDNS_RDF_TYPE_NONE
+ LDNS_RDF_TYPE_NSAP
+ LDNS_RDF_TYPE_NSEC
+ LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
+ LDNS_RDF_TYPE_NSEC3_SALT
+ LDNS_RDF_TYPE_PERIOD
+ LDNS_RDF_TYPE_SERVICE
+ LDNS_RDF_TYPE_STR
+ LDNS_RDF_TYPE_TIME
+ LDNS_RDF_TYPE_HIP
+ LDNS_RDF_TYPE_TSIGTIME
+ LDNS_RDF_TYPE_TYPE
+ LDNS_RDF_TYPE_UNKNOWN
+ LDNS_RDF_TYPE_WKS
+ LDNS_RESOLV_ANCHOR
+ LDNS_RESOLV_DEFDOMAIN
+ LDNS_RESOLV_INET
+ LDNS_RESOLV_INET6
+ LDNS_RESOLV_INETANY
+ LDNS_RESOLV_KEYWORD
+ LDNS_RESOLV_KEYWORDS
+ LDNS_RESOLV_NAMESERVER
+ LDNS_RESOLV_OPTIONS
+ LDNS_RESOLV_RTT_INF
+ LDNS_RESOLV_RTT_MIN
+ LDNS_RESOLV_SEARCH
+ LDNS_RESOLV_SORTLIST
+ LDNS_RR_CLASS_ANY
+ LDNS_RR_CLASS_CH
+ LDNS_RR_CLASS_COUNT
+ LDNS_RR_CLASS_FIRST
+ LDNS_RR_CLASS_HS
+ LDNS_RR_CLASS_IN
+ LDNS_RR_CLASS_LAST
+ LDNS_RR_CLASS_NONE
+ LDNS_RR_COMPRESS
+ LDNS_RR_NO_COMPRESS
+ LDNS_RR_OVERHEAD
+ LDNS_RR_TYPE_A
+ LDNS_RR_TYPE_A6
+ LDNS_RR_TYPE_AAAA
+ LDNS_RR_TYPE_AFSDB
+ LDNS_RR_TYPE_ANY
+ LDNS_RR_TYPE_APL
+ LDNS_RR_TYPE_ATMA
+ LDNS_RR_TYPE_AXFR
+ LDNS_RR_TYPE_CERT
+ LDNS_RR_TYPE_CNAME
+ LDNS_RR_TYPE_COUNT
+ LDNS_RR_TYPE_DHCID
+ LDNS_RR_TYPE_DLV
+ LDNS_RR_TYPE_DNAME
+ LDNS_RR_TYPE_DNSKEY
+ LDNS_RR_TYPE_DS
+ LDNS_RR_TYPE_EID
+ LDNS_RR_TYPE_FIRST
+ LDNS_RR_TYPE_GID
+ LDNS_RR_TYPE_GPOS
+ LDNS_RR_TYPE_HINFO
+ LDNS_RR_TYPE_IPSECKEY
+ LDNS_RR_TYPE_ISDN
+ LDNS_RR_TYPE_IXFR
+ LDNS_RR_TYPE_KEY
+ LDNS_RR_TYPE_KX
+ LDNS_RR_TYPE_LAST
+ LDNS_RR_TYPE_LOC
+ LDNS_RR_TYPE_MAILA
+ LDNS_RR_TYPE_MAILB
+ LDNS_RR_TYPE_MB
+ LDNS_RR_TYPE_MD
+ LDNS_RR_TYPE_MF
+ LDNS_RR_TYPE_MG
+ LDNS_RR_TYPE_MINFO
+ LDNS_RR_TYPE_MR
+ LDNS_RR_TYPE_MX
+ LDNS_RR_TYPE_NAPTR
+ LDNS_RR_TYPE_NIMLOC
+ LDNS_RR_TYPE_NS
+ LDNS_RR_TYPE_NSAP
+ LDNS_RR_TYPE_NSAP_PTR
+ LDNS_RR_TYPE_NSEC
+ LDNS_RR_TYPE_NSEC3
+ LDNS_RR_TYPE_NSEC3PARAM
+ LDNS_RR_TYPE_NSEC3PARAMS
+ LDNS_RR_TYPE_NULL
+ LDNS_RR_TYPE_NXT
+ LDNS_RR_TYPE_OPT
+ LDNS_RR_TYPE_PTR
+ LDNS_RR_TYPE_PX
+ LDNS_RR_TYPE_RP
+ LDNS_RR_TYPE_RRSIG
+ LDNS_RR_TYPE_RT
+ LDNS_RR_TYPE_SIG
+ LDNS_RR_TYPE_SINK
+ LDNS_RR_TYPE_SOA
+ LDNS_RR_TYPE_SPF
+ LDNS_RR_TYPE_SRV
+ LDNS_RR_TYPE_SSHFP
+ LDNS_RR_TYPE_TALINK
+ LDNS_RR_TYPE_TSIG
+ LDNS_RR_TYPE_TXT
+ LDNS_RR_TYPE_UID
+ LDNS_RR_TYPE_UINFO
+ LDNS_RR_TYPE_UNSPEC
+ LDNS_RR_TYPE_WKS
+ LDNS_RR_TYPE_X25
+ LDNS_RSAMD5
+ LDNS_RSASHA1
+ LDNS_RSASHA1_NSEC3
+ LDNS_RSASHA256
+ LDNS_RSASHA512
+ LDNS_SECTION_ADDITIONAL
+ LDNS_SECTION_ANSWER
+ LDNS_SECTION_ANY
+ LDNS_SECTION_ANY_NOQUESTION
+ LDNS_SECTION_AUTHORITY
+ LDNS_SECTION_QUESTION
+ LDNS_SHA1
+ LDNS_SHA256
+ LDNS_SIGNATURE_LEAVE_ADD_NEW
+ LDNS_SIGNATURE_LEAVE_NO_ADD
+ LDNS_SIGNATURE_REMOVE_ADD_NEW
+ LDNS_SIGNATURE_REMOVE_NO_ADD
+ LDNS_SIGN_DSA
+ LDNS_SIGN_DSA_NSEC3
+ LDNS_SIGN_ECC_GOST
+ LDNS_SIGN_HMACSHA1
+ LDNS_SIGN_HMACSHA256
+ LDNS_SIGN_RSAMD5
+ LDNS_SIGN_RSASHA1
+ LDNS_SIGN_RSASHA1_NSEC3
+ LDNS_SIGN_RSASHA256
+ LDNS_SIGN_RSASHA512
+ LDNS_STATUS_ADDRESS_ERR
+ LDNS_STATUS_CERT_BAD_ALGORITHM
+ LDNS_STATUS_CRYPTO_ALGO_NOT_IMPL
+ LDNS_STATUS_CRYPTO_BOGUS
+ LDNS_STATUS_CRYPTO_EXPIRATION_BEFORE_INCEPTION
+ LDNS_STATUS_CRYPTO_NO_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_DS
+ LDNS_STATUS_CRYPTO_NO_MATCHING_KEYTAG_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_RRSIG
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DS
+ LDNS_STATUS_CRYPTO_SIG_EXPIRED
+ LDNS_STATUS_CRYPTO_SIG_NOT_INCEPTED
+ LDNS_STATUS_CRYPTO_TSIG_BOGUS
+ LDNS_STATUS_CRYPTO_TSIG_ERR
+ LDNS_STATUS_CRYPTO_TYPE_COVERED_ERR
+ LDNS_STATUS_CRYPTO_UNKNOWN_ALGO
+ LDNS_STATUS_CRYPTO_VALIDATED
+ LDNS_STATUS_DDD_OVERFLOW
+ LDNS_STATUS_DNSSEC_EXISTENCE_DENIED
+ LDNS_STATUS_DNSSEC_NSEC3_ORIGINAL_NOT_FOUND
+ LDNS_STATUS_DNSSEC_NSEC_RR_NOT_COVERED
+ LDNS_STATUS_DNSSEC_NSEC_WILDCARD_NOT_COVERED
+ LDNS_STATUS_DOMAINNAME_OVERFLOW
+ LDNS_STATUS_DOMAINNAME_UNDERFLOW
+ LDNS_STATUS_EMPTY_LABEL
+ LDNS_STATUS_ENGINE_KEY_NOT_LOADED
+ LDNS_STATUS_ERR
+ LDNS_STATUS_FILE_ERR
+ LDNS_STATUS_INTERNAL_ERR
+ LDNS_STATUS_INVALID_B32_EXT
+ LDNS_STATUS_INVALID_B64
+ LDNS_STATUS_INVALID_HEX
+ LDNS_STATUS_INVALID_INT
+ LDNS_STATUS_INVALID_IP4
+ LDNS_STATUS_INVALID_IP6
+ LDNS_STATUS_INVALID_POINTER
+ LDNS_STATUS_INVALID_STR
+ LDNS_STATUS_INVALID_TIME
+ LDNS_STATUS_LABEL_OVERFLOW
+ LDNS_STATUS_MEM_ERR
+ LDNS_STATUS_MISSING_RDATA_FIELDS_KEY
+ LDNS_STATUS_MISSING_RDATA_FIELDS_RRSIG
+ LDNS_STATUS_NETWORK_ERR
+ LDNS_STATUS_NOT_IMPL
+ LDNS_STATUS_NO_DATA
+ LDNS_STATUS_NSEC3_ERR
+ LDNS_STATUS_NULL
+ LDNS_STATUS_OK
+ LDNS_STATUS_PACKET_OVERFLOW
+ LDNS_STATUS_RES_NO_NS
+ LDNS_STATUS_RES_QUERY
+ LDNS_STATUS_SOCKET_ERROR
+ LDNS_STATUS_SSL_ERR
+ LDNS_STATUS_SYNTAX_ALG_ERR
+ LDNS_STATUS_SYNTAX_BAD_ESCAPE
+ LDNS_STATUS_SYNTAX_CLASS_ERR
+ LDNS_STATUS_SYNTAX_DNAME_ERR
+ LDNS_STATUS_SYNTAX_EMPTY
+ LDNS_STATUS_SYNTAX_ERR
+ LDNS_STATUS_SYNTAX_INCLUDE
+ LDNS_STATUS_SYNTAX_INCLUDE_ERR_NOTIMPL
+ LDNS_STATUS_SYNTAX_INTEGER_OVERFLOW
+ LDNS_STATUS_SYNTAX_ITERATIONS_OVERFLOW
+ LDNS_STATUS_SYNTAX_KEYWORD_ERR
+ LDNS_STATUS_SYNTAX_MISSING_VALUE_ERR
+ LDNS_STATUS_SYNTAX_ORIGIN
+ LDNS_STATUS_SYNTAX_RDATA_ERR
+ LDNS_STATUS_SYNTAX_TTL
+ LDNS_STATUS_SYNTAX_TTL_ERR
+ LDNS_STATUS_SYNTAX_TYPE_ERR
+ LDNS_STATUS_SYNTAX_VERSION_ERR
+ LDNS_STATUS_UNKNOWN_INET
+ LDNS_STATUS_WIRE_INCOMPLETE_ADDITIONAL
+ LDNS_STATUS_WIRE_INCOMPLETE_ANSWER
+ LDNS_STATUS_WIRE_INCOMPLETE_AUTHORITY
+ LDNS_STATUS_WIRE_INCOMPLETE_HEADER
+ LDNS_STATUS_WIRE_INCOMPLETE_QUESTION
+ LDNS_TC
+
+ dnssec_create_nsec
+ dnssec_create_nsec3
+ create_nsec
+ create_nsec3
+
+ rr_type2str
+ rr_class2str
+ rr_type_by_name
+ rr_class_by_name
+ pkt_opcode2str
+ pkt_rcode2str
+
+ errorstr_by_id
+ signing_algorithm_by_name
+ key_algorithm_supported
+ read_anchor_file
+) ] );
+
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+our @EXPORT = qw(
+ LDNS_AA
+ LDNS_AD
+ LDNS_CD
+ LDNS_CERT_ACPKIX
+ LDNS_CERT_IACPKIX
+ LDNS_CERT_IPGP
+ LDNS_CERT_IPKIX
+ LDNS_CERT_ISPKI
+ LDNS_CERT_OID
+ LDNS_CERT_PGP
+ LDNS_CERT_PKIX
+ LDNS_CERT_SPKI
+ LDNS_CERT_URI
+ LDNS_DEFAULT_EXP_TIME
+ LDNS_DEFAULT_TTL
+ LDNS_DH
+ LDNS_DNSSEC_KEYPROTO
+ LDNS_DSA
+ LDNS_DSA_NSEC3
+ LDNS_ECC
+ LDNS_ECC_GOST
+ LDNS_HASH_GOST
+ LDNS_IP4ADDRLEN
+ LDNS_IP6ADDRLEN
+ LDNS_KEY_REVOKE_KEY
+ LDNS_KEY_SEP_KEY
+ LDNS_KEY_ZONE_KEY
+ LDNS_MAX_DOMAINLEN
+ LDNS_MAX_KEYLEN
+ LDNS_MAX_LABELLEN
+ LDNS_MAX_PACKETLEN
+ LDNS_MAX_POINTERS
+ LDNS_MAX_RDFLEN
+ LDNS_NSEC3_MAX_ITERATIONS
+ LDNS_NSEC3_VARS_OPTOUT_MASK
+ LDNS_PACKET_ANSWER
+ LDNS_PACKET_IQUERY
+ LDNS_PACKET_NODATA
+ LDNS_PACKET_NOTIFY
+ LDNS_PACKET_NXDOMAIN
+ LDNS_PACKET_QUERY
+ LDNS_PACKET_QUESTION
+ LDNS_PACKET_REFERRAL
+ LDNS_PACKET_STATUS
+ LDNS_PACKET_UNKNOWN
+ LDNS_PACKET_UPDATE
+ LDNS_PORT
+ LDNS_PRIVATEDNS
+ LDNS_PRIVATEOID
+ LDNS_QR
+ LDNS_RA
+ LDNS_RCODE_FORMERR
+ LDNS_RCODE_NOERROR
+ LDNS_RCODE_NOTAUTH
+ LDNS_RCODE_NOTIMPL
+ LDNS_RCODE_NOTZONE
+ LDNS_RCODE_NXDOMAIN
+ LDNS_RCODE_NXRRSET
+ LDNS_RCODE_REFUSED
+ LDNS_RCODE_SERVFAIL
+ LDNS_RCODE_YXDOMAIN
+ LDNS_RCODE_YXRRSET
+ LDNS_RD
+ LDNS_RDATA_FIELD_DESCRIPTORS_COMMON
+ LDNS_RDF_SIZE_16BYTES
+ LDNS_RDF_SIZE_6BYTES
+ LDNS_RDF_SIZE_BYTE
+ LDNS_RDF_SIZE_DOUBLEWORD
+ LDNS_RDF_SIZE_WORD
+ LDNS_RDF_TYPE_A
+ LDNS_RDF_TYPE_AAAA
+ LDNS_RDF_TYPE_ALG
+ LDNS_RDF_TYPE_APL
+ LDNS_RDF_TYPE_ATMA
+ LDNS_RDF_TYPE_B32_EXT
+ LDNS_RDF_TYPE_B64
+ LDNS_RDF_TYPE_CERT_ALG
+ LDNS_RDF_TYPE_CLASS
+ LDNS_RDF_TYPE_DNAME
+ LDNS_RDF_TYPE_HEX
+ LDNS_RDF_TYPE_INT16
+ LDNS_RDF_TYPE_INT16_DATA
+ LDNS_RDF_TYPE_INT32
+ LDNS_RDF_TYPE_INT8
+ LDNS_RDF_TYPE_IPSECKEY
+ LDNS_RDF_TYPE_LOC
+ LDNS_RDF_TYPE_NONE
+ LDNS_RDF_TYPE_NSAP
+ LDNS_RDF_TYPE_NSEC
+ LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
+ LDNS_RDF_TYPE_NSEC3_SALT
+ LDNS_RDF_TYPE_PERIOD
+ LDNS_RDF_TYPE_SERVICE
+ LDNS_RDF_TYPE_STR
+ LDNS_RDF_TYPE_TIME
+ LDNS_RDF_TYPE_HIP
+ LDNS_RDF_TYPE_TSIGTIME
+ LDNS_RDF_TYPE_TYPE
+ LDNS_RDF_TYPE_UNKNOWN
+ LDNS_RDF_TYPE_WKS
+ LDNS_RESOLV_ANCHOR
+ LDNS_RESOLV_DEFDOMAIN
+ LDNS_RESOLV_INET
+ LDNS_RESOLV_INET6
+ LDNS_RESOLV_INETANY
+ LDNS_RESOLV_KEYWORD
+ LDNS_RESOLV_KEYWORDS
+ LDNS_RESOLV_NAMESERVER
+ LDNS_RESOLV_OPTIONS
+ LDNS_RESOLV_RTT_INF
+ LDNS_RESOLV_RTT_MIN
+ LDNS_RESOLV_SEARCH
+ LDNS_RESOLV_SORTLIST
+ LDNS_RR_CLASS_ANY
+ LDNS_RR_CLASS_CH
+ LDNS_RR_CLASS_COUNT
+ LDNS_RR_CLASS_FIRST
+ LDNS_RR_CLASS_HS
+ LDNS_RR_CLASS_IN
+ LDNS_RR_CLASS_LAST
+ LDNS_RR_CLASS_NONE
+ LDNS_RR_COMPRESS
+ LDNS_RR_NO_COMPRESS
+ LDNS_RR_OVERHEAD
+ LDNS_RR_TYPE_A
+ LDNS_RR_TYPE_A6
+ LDNS_RR_TYPE_AAAA
+ LDNS_RR_TYPE_AFSDB
+ LDNS_RR_TYPE_ANY
+ LDNS_RR_TYPE_APL
+ LDNS_RR_TYPE_ATMA
+ LDNS_RR_TYPE_AXFR
+ LDNS_RR_TYPE_CERT
+ LDNS_RR_TYPE_CNAME
+ LDNS_RR_TYPE_COUNT
+ LDNS_RR_TYPE_DHCID
+ LDNS_RR_TYPE_DLV
+ LDNS_RR_TYPE_DNAME
+ LDNS_RR_TYPE_DNSKEY
+ LDNS_RR_TYPE_DS
+ LDNS_RR_TYPE_EID
+ LDNS_RR_TYPE_FIRST
+ LDNS_RR_TYPE_GID
+ LDNS_RR_TYPE_GPOS
+ LDNS_RR_TYPE_HINFO
+ LDNS_RR_TYPE_IPSECKEY
+ LDNS_RR_TYPE_ISDN
+ LDNS_RR_TYPE_IXFR
+ LDNS_RR_TYPE_KEY
+ LDNS_RR_TYPE_KX
+ LDNS_RR_TYPE_LAST
+ LDNS_RR_TYPE_LOC
+ LDNS_RR_TYPE_MAILA
+ LDNS_RR_TYPE_MAILB
+ LDNS_RR_TYPE_MB
+ LDNS_RR_TYPE_MD
+ LDNS_RR_TYPE_MF
+ LDNS_RR_TYPE_MG
+ LDNS_RR_TYPE_MINFO
+ LDNS_RR_TYPE_MR
+ LDNS_RR_TYPE_MX
+ LDNS_RR_TYPE_NAPTR
+ LDNS_RR_TYPE_NIMLOC
+ LDNS_RR_TYPE_NS
+ LDNS_RR_TYPE_NSAP
+ LDNS_RR_TYPE_NSAP_PTR
+ LDNS_RR_TYPE_NSEC
+ LDNS_RR_TYPE_NSEC3
+ LDNS_RR_TYPE_NSEC3PARAM
+ LDNS_RR_TYPE_NSEC3PARAMS
+ LDNS_RR_TYPE_NULL
+ LDNS_RR_TYPE_NXT
+ LDNS_RR_TYPE_OPT
+ LDNS_RR_TYPE_PTR
+ LDNS_RR_TYPE_PX
+ LDNS_RR_TYPE_RP
+ LDNS_RR_TYPE_RRSIG
+ LDNS_RR_TYPE_RT
+ LDNS_RR_TYPE_SIG
+ LDNS_RR_TYPE_SINK
+ LDNS_RR_TYPE_SOA
+ LDNS_RR_TYPE_SPF
+ LDNS_RR_TYPE_SRV
+ LDNS_RR_TYPE_SSHFP
+ LDNS_RR_TYPE_TALINK
+ LDNS_RR_TYPE_TSIG
+ LDNS_RR_TYPE_TXT
+ LDNS_RR_TYPE_UID
+ LDNS_RR_TYPE_UINFO
+ LDNS_RR_TYPE_UNSPEC
+ LDNS_RR_TYPE_WKS
+ LDNS_RR_TYPE_X25
+ LDNS_RSAMD5
+ LDNS_RSASHA1
+ LDNS_RSASHA1_NSEC3
+ LDNS_RSASHA256
+ LDNS_RSASHA512
+ LDNS_SECTION_ADDITIONAL
+ LDNS_SECTION_ANSWER
+ LDNS_SECTION_ANY
+ LDNS_SECTION_ANY_NOQUESTION
+ LDNS_SECTION_AUTHORITY
+ LDNS_SECTION_QUESTION
+ LDNS_SHA1
+ LDNS_SHA256
+ LDNS_SIGNATURE_LEAVE_ADD_NEW
+ LDNS_SIGNATURE_LEAVE_NO_ADD
+ LDNS_SIGNATURE_REMOVE_ADD_NEW
+ LDNS_SIGNATURE_REMOVE_NO_ADD
+ LDNS_SIGN_DSA
+ LDNS_SIGN_DSA_NSEC3
+ LDNS_SIGN_ECC_GOST
+ LDNS_SIGN_HMACSHA1
+ LDNS_SIGN_HMACSHA256
+ LDNS_SIGN_RSAMD5
+ LDNS_SIGN_RSASHA1
+ LDNS_SIGN_RSASHA1_NSEC3
+ LDNS_SIGN_RSASHA256
+ LDNS_SIGN_RSASHA512
+ LDNS_STATUS_ADDRESS_ERR
+ LDNS_STATUS_CERT_BAD_ALGORITHM
+ LDNS_STATUS_CRYPTO_ALGO_NOT_IMPL
+ LDNS_STATUS_CRYPTO_BOGUS
+ LDNS_STATUS_CRYPTO_EXPIRATION_BEFORE_INCEPTION
+ LDNS_STATUS_CRYPTO_NO_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_DS
+ LDNS_STATUS_CRYPTO_NO_MATCHING_KEYTAG_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_RRSIG
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DS
+ LDNS_STATUS_CRYPTO_SIG_EXPIRED
+ LDNS_STATUS_CRYPTO_SIG_NOT_INCEPTED
+ LDNS_STATUS_CRYPTO_TSIG_BOGUS
+ LDNS_STATUS_CRYPTO_TSIG_ERR
+ LDNS_STATUS_CRYPTO_TYPE_COVERED_ERR
+ LDNS_STATUS_CRYPTO_UNKNOWN_ALGO
+ LDNS_STATUS_CRYPTO_VALIDATED
+ LDNS_STATUS_DDD_OVERFLOW
+ LDNS_STATUS_DNSSEC_EXISTENCE_DENIED
+ LDNS_STATUS_DNSSEC_NSEC3_ORIGINAL_NOT_FOUND
+ LDNS_STATUS_DNSSEC_NSEC_RR_NOT_COVERED
+ LDNS_STATUS_DNSSEC_NSEC_WILDCARD_NOT_COVERED
+ LDNS_STATUS_DOMAINNAME_OVERFLOW
+ LDNS_STATUS_DOMAINNAME_UNDERFLOW
+ LDNS_STATUS_EMPTY_LABEL
+ LDNS_STATUS_ENGINE_KEY_NOT_LOADED
+ LDNS_STATUS_ERR
+ LDNS_STATUS_FILE_ERR
+ LDNS_STATUS_INTERNAL_ERR
+ LDNS_STATUS_INVALID_B32_EXT
+ LDNS_STATUS_INVALID_B64
+ LDNS_STATUS_INVALID_HEX
+ LDNS_STATUS_INVALID_INT
+ LDNS_STATUS_INVALID_IP4
+ LDNS_STATUS_INVALID_IP6
+ LDNS_STATUS_INVALID_POINTER
+ LDNS_STATUS_INVALID_STR
+ LDNS_STATUS_INVALID_TIME
+ LDNS_STATUS_LABEL_OVERFLOW
+ LDNS_STATUS_MEM_ERR
+ LDNS_STATUS_MISSING_RDATA_FIELDS_KEY
+ LDNS_STATUS_MISSING_RDATA_FIELDS_RRSIG
+ LDNS_STATUS_NETWORK_ERR
+ LDNS_STATUS_NOT_IMPL
+ LDNS_STATUS_NO_DATA
+ LDNS_STATUS_NSEC3_ERR
+ LDNS_STATUS_NULL
+ LDNS_STATUS_OK
+ LDNS_STATUS_PACKET_OVERFLOW
+ LDNS_STATUS_RES_NO_NS
+ LDNS_STATUS_RES_QUERY
+ LDNS_STATUS_SOCKET_ERROR
+ LDNS_STATUS_SSL_ERR
+ LDNS_STATUS_SYNTAX_ALG_ERR
+ LDNS_STATUS_SYNTAX_BAD_ESCAPE
+ LDNS_STATUS_SYNTAX_CLASS_ERR
+ LDNS_STATUS_SYNTAX_DNAME_ERR
+ LDNS_STATUS_SYNTAX_EMPTY
+ LDNS_STATUS_SYNTAX_ERR
+ LDNS_STATUS_SYNTAX_INCLUDE
+ LDNS_STATUS_SYNTAX_INCLUDE_ERR_NOTIMPL
+ LDNS_STATUS_SYNTAX_INTEGER_OVERFLOW
+ LDNS_STATUS_SYNTAX_ITERATIONS_OVERFLOW
+ LDNS_STATUS_SYNTAX_KEYWORD_ERR
+ LDNS_STATUS_SYNTAX_MISSING_VALUE_ERR
+ LDNS_STATUS_SYNTAX_ORIGIN
+ LDNS_STATUS_SYNTAX_RDATA_ERR
+ LDNS_STATUS_SYNTAX_TTL
+ LDNS_STATUS_SYNTAX_TTL_ERR
+ LDNS_STATUS_SYNTAX_TYPE_ERR
+ LDNS_STATUS_SYNTAX_VERSION_ERR
+ LDNS_STATUS_UNKNOWN_INET
+ LDNS_STATUS_WIRE_INCOMPLETE_ADDITIONAL
+ LDNS_STATUS_WIRE_INCOMPLETE_ANSWER
+ LDNS_STATUS_WIRE_INCOMPLETE_AUTHORITY
+ LDNS_STATUS_WIRE_INCOMPLETE_HEADER
+ LDNS_STATUS_WIRE_INCOMPLETE_QUESTION
+ LDNS_TC
+
+ dnssec_create_nsec
+ dnssec_create_nsec3
+ create_nsec
+ create_nsec3
+
+ rr_type2str
+ rr_class2str
+ pkt_opcode2str
+ pkt_rcode2str
+ rr_type_by_name
+ rr_class_by_name
+ errorstr_by_id
+ signing_algorithm_by_name
+ key_algorithm_supported
+ read_anchor_file
+);
+
+our $VERSION = '0.06';
+
+sub AUTOLOAD {
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
+ # XS function.
+
+ my $constname;
+ our $AUTOLOAD;
+ ($constname = $AUTOLOAD) =~ s/.*:://;
+ croak "&DNS::LDNS::constant not defined" if $constname eq 'constant';
+ my ($error, $val) = constant($constname);
+ if ($error) { croak $error; }
+ {
+ no strict 'refs';
+ # Fixed between 5.005_53 and 5.005_61
+#XXX if ($] >= 5.00561) {
+#XXX *$AUTOLOAD = sub () { $val };
+#XXX }
+#XXX else {
+ *$AUTOLOAD = sub { $val };
+#XXX }
+ }
+ goto &$AUTOLOAD;
+}
+
+require XSLoader;
+XSLoader::load('DNS::LDNS', $VERSION);
+
+# Preloaded methods go here.
+
+our $last_status;
+our $line_nr;
+
+sub last_error {
+ return errorstr_by_id($DNS::LDNS::last_status);
+}
+
+require DNS::LDNS::RR;
+require DNS::LDNS::GC;
+require DNS::LDNS::RData;
+require DNS::LDNS::Zone;
+require DNS::LDNS::RRList;
+require DNS::LDNS::DNSSecZone;
+require DNS::LDNS::DNSSecRRSets;
+require DNS::LDNS::DNSSecRRs;
+require DNS::LDNS::DNSSecName;
+require DNS::LDNS::RBTree;
+require DNS::LDNS::RBNode;
+require DNS::LDNS::Resolver;
+require DNS::LDNS::Packet;
+require DNS::LDNS::Key;
+require DNS::LDNS::KeyList;
+require DNS::LDNS::DNSSecDataChain;
+require DNS::LDNS::DNSSecTrustTree;
+
+# Some default values used by the constructors
+our $DEFAULT_CLASS = &LDNS_RR_CLASS_IN;
+our $DEFAULT_TTL = 86400; # 1d
+our $DEFAULT_ORIGIN = new DNS::LDNS::RData(&LDNS_RDF_TYPE_DNAME, '.');
+our $DEFAULT_SOA_REFRESH = 86400; # 1d
+our $DEFAULT_SOA_RETRY = 3600; # 1h
+our $DEFAULT_SOA_EXPIRE = 604800; # 1w
+our $DEFAULT_SOA_MINIMUM = 10800; # 3h
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+
+=head1 NAME
+
+DNS::LDNS - Perl extension for the ldns library
+
+=head1 SYNOPSIS
+
+ use DNS::LDNS ':all'
+
+=head1 DESCRIPTION
+
+DNS::LDNS is a perl OO-wrapper for the ldns library. A complete list
+of object methods is found in the perldoc for each of the individual
+classes. You may also read the documentation of the ldns library
+(http://www.nlnetlabs.nl/projects/ldns).
+
+=head2 Brief examples of usage
+
+ use DNS::LDNS ':all';
+
+ my $z = new DNS::LDNS::Zone(filename => '/path/to/myzone');
+ print DNS::LDNS::last_error;
+ my $rr = new DNS::LDNS::RR('mylabel 3600 IN A 168.10.10.10');
+ print $z->soa->to_string;
+ my $rrlist = $z->rrs->push($rr);
+ print $z->to_string;
+
+ my $kl = new DNS::LDNS::KeyList;
+ $kl->push(new DNS::LDNS::Key(filename => 'key');
+ $kl->key(0)->set_pubkey_owner(
+ new DNS::LDNS::RData(LDNS_RDF_TYPE_DNAME, 'myzone.org'));
+ my $signedz = $z->sign($kl);
+ print $signedz->to_string;
+
+ my $r = new DNS::LDNS::Resolver(filename => '/my/resolv.conf');
+ my $p = $r->send(
+ new DNS::LDNS::RData(LDNS_RDF_TYPE_DNAME, 'www.google.com'),
+ LDNS_RR_TYPE_A, LDNS_RR_CLASS_IN, LDNS_RD);
+ print $p->answer->to_string;
+ print $p->authority->to_string;
+
+=head2 Classes
+
+A description of the classes included and how they map to the ldns
+library structures:
+
+=over 20
+
+=item B<DNS::LDNS>
+
+Base class with static functions and constants
+
+=item B<DNS::LDNS::Zone>
+
+Represents a parsed zonefile (maps to the ldns_zone struct)
+
+=item B<DNS::LDNS::RRList>
+
+Represents a list of RRs. This class is also used to represent an
+RRSet all the dnames and types are equal, (maps to the the
+ldns_rr_list struct)
+
+=item B<DNS::LDNS::RR>
+
+Represents a resource record (RR), (maps to the ldns_rr struct)
+
+=item B<DNS::LDNS::RData>
+
+Represents an rdata field or a dname in an RR (maps to the ldns_rdf
+struct)
+
+=item B<DNS::LDNS::Resolver>
+
+Represents a DNS resolver (maps to the ldns_resolver struct)
+
+=item B<DNS::LDNS::Packet>
+
+Represents a DNS package (maps to the ldns_pkt struct)
+
+=item B<DNS::LDNS::Key>
+
+Represents a DNSSec private key (maps to the ldns_key struct)
+
+=item B<DNS::LDNS::KeyList>
+
+Represents a linked list of keys (maps to the ldns_key_list struct)
+
+=item B<DNS::LDNS::DNSSecZone>
+
+Represents a zone with dnssec data (maps to the ldns_dnssec_zone
+struct)
+
+=item B<DNS::LDNS::RBTree>
+
+Represents a tree of DNSSecName nodes (maps to the ldns_rbtree struct)
+
+=item B<DNS::LDNS::RBNode>
+
+Represents a node in the RBTree (maps to the ldns_rbnode struct)
+
+=item B<DNS::LDNS::DNSSecName>
+
+Represents a dname in a DNSSecZone and holds a DNSSecRRSets list for
+this dname, possibly with signatures (maps to the ldns_dnssec_name
+struct)
+
+=item B<DNS::LDNS::DNSSecRRSets>
+
+Represents a linked list of DNSSec RR sets, possibly with signatures
+(maps to the ldns_dnssec_rrsets struct)
+
+=item B<DNS::LDNS::DNSSecRRs>
+
+Represents a linked list of RRs (maps to the ldns_dnssec_rrs struct)
+
+=item B<DNS::LDNS::DNSSecDataChain>
+
+Represents a chain of RR, DNSKEY, and DS data used for building a
+dnssec trust tree (maps to the ldns_dnssec_data_chain struct)
+
+=item B<DNS::LDNS::DNSSecTrustTree>
+
+Represents a tree of chained trust relationships from a signed RR to a
+set of trust anchors (maps to the ldns_dnssec_trust_tree struct).
+
+=item B<DNS::LDNS::GC>
+
+Garbage collector. Handles ownership dependencies and freeing data
+used by the other classes. Used internally only.
+
+=back
+
+One thing to note is that some of the classes have a seemingly
+overlapping functionality. The Zone and RRList are used to represent
+a generic zone. It may contain dnssec data but treats it like any
+other dns data and does not have any knowledge of its structure. The
+DNSSec* and RB* classes are building blocks for representing a signed
+zone in a more structured way.
+
+=head2 Static functions
+
+ str = rr_type2str(type)
+ str = rr_class2str(class)
+ type = rr_type_by_name(str)
+ class = rr_class_by_name(str)
+ str = pkt_opcode2str(opcode)
+ str = pkt_rcode2str(rcode)
+ error = errorstr_by_id(status)
+ str = DNS::LDNS::last_error
+ status = DNS::LDNS::last_status
+ rr = dnssec_create_nsec(from, to, type)
+ rr = dnssec_create_nsec3(from, to, algorithm, flags, iterations, salt)
+ rr = create_nsec(current, next, rrs)
+ rr = create_nsec3(cur_owner, cur_zone, algorithm, flags,
+ iterations, salt, empty_nonterminals)
+ algo = signing_algorithm_by_name(name)
+ bool = key_algorithm_supported(algorithm)
+ rr = read_anchor_file(filename)
+
+=head2 Object references and cloning
+
+Since some of the objects are found as sub objects within other
+objects, it is important to know how the wrapper classes handle
+object references, dependencies and cloning. The general rule is that
+accessor methods just return a reference to the object while methods
+inserting data inserts inserts a clone of the object. Most classes
+have a clone method which can be used if a cloned object is what you
+really want.
+
+=head3 Examples
+
+DNS::LDNS::Zone::rrs returns a reference to the DNS::LDNS::RRList
+within the zone, so if you make changes to the RRList you also
+changes the Zone object.
+
+DNS::LDNS::RRList::push(rr) clones the rr, then pushes the cloned rr
+to the list. Changing the rr afterwards will not change the list.
+
+An exception is the Key class which does not have a clone
+mechanism. In this case we allow a free Key to be added to only one
+KeyList. Adding it to multiple lists will provoke an error.
+
+The wrapper keeps track of allocated data structures and references.
+Whenever data is no longer referred to by a perl object, it will be
+freed.
+
+=head2 ERROR HANDLING
+
+The purpose for writing this wrapper class has been to be able to
+process zone file data with good time performance. Data checking and
+error handling is a bit sparse. Calling a method with wrong argument
+types will some times kill the application with an intelligible error
+message, in other cases it may provoke a segmentation fault. Using
+out-of-range data values, e.g. in array indexes, may also cause
+unexpected results.
+
+Most constructors and all methods returning a status will update the
+static DNS::LDNS::last_status variable. Most methods do not return a
+status and will not reset this variable even though they succeeds.
+
+=head2 EXPORT
+
+None by default.
+
+=head2 Exportable constants
+
+=head3 Status
+
+ LDNS_STATUS_ADDRESS_ERR
+ LDNS_STATUS_CERT_BAD_ALGORITHM
+ LDNS_STATUS_CRYPTO_ALGO_NOT_IMPL
+ LDNS_STATUS_CRYPTO_BOGUS
+ LDNS_STATUS_CRYPTO_EXPIRATION_BEFORE_INCEPTION
+ LDNS_STATUS_CRYPTO_NO_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_DS
+ LDNS_STATUS_CRYPTO_NO_MATCHING_KEYTAG_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_RRSIG
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DNSKEY
+ LDNS_STATUS_CRYPTO_NO_TRUSTED_DS
+ LDNS_STATUS_CRYPTO_SIG_EXPIRED
+ LDNS_STATUS_CRYPTO_SIG_NOT_INCEPTED
+ LDNS_STATUS_CRYPTO_TSIG_BOGUS
+ LDNS_STATUS_CRYPTO_TSIG_ERR
+ LDNS_STATUS_CRYPTO_TYPE_COVERED_ERR
+ LDNS_STATUS_CRYPTO_UNKNOWN_ALGO
+ LDNS_STATUS_CRYPTO_VALIDATED
+ LDNS_STATUS_DDD_OVERFLOW
+ LDNS_STATUS_DNSSEC_EXISTENCE_DENIED
+ LDNS_STATUS_DNSSEC_NSEC3_ORIGINAL_NOT_FOUND
+ LDNS_STATUS_DNSSEC_NSEC_RR_NOT_COVERED
+ LDNS_STATUS_DNSSEC_NSEC_WILDCARD_NOT_COVERED
+ LDNS_STATUS_DOMAINNAME_OVERFLOW
+ LDNS_STATUS_DOMAINNAME_UNDERFLOW
+ LDNS_STATUS_EMPTY_LABEL
+ LDNS_STATUS_ENGINE_KEY_NOT_LOADED
+ LDNS_STATUS_ERR
+ LDNS_STATUS_FILE_ERR
+ LDNS_STATUS_INTERNAL_ERR
+ LDNS_STATUS_INVALID_B32_EXT
+ LDNS_STATUS_INVALID_B64
+ LDNS_STATUS_INVALID_HEX
+ LDNS_STATUS_INVALID_INT
+ LDNS_STATUS_INVALID_IP4
+ LDNS_STATUS_INVALID_IP6
+ LDNS_STATUS_INVALID_POINTER
+ LDNS_STATUS_INVALID_STR
+ LDNS_STATUS_INVALID_TIME
+ LDNS_STATUS_LABEL_OVERFLOW
+ LDNS_STATUS_MEM_ERR
+ LDNS_STATUS_MISSING_RDATA_FIELDS_KEY
+ LDNS_STATUS_MISSING_RDATA_FIELDS_RRSIG
+ LDNS_STATUS_NETWORK_ERR
+ LDNS_STATUS_NOT_IMPL
+ LDNS_STATUS_NO_DATA
+ LDNS_STATUS_NSEC3_ERR
+ LDNS_STATUS_NULL
+ LDNS_STATUS_OK
+ LDNS_STATUS_PACKET_OVERFLOW
+ LDNS_STATUS_RES_NO_NS
+ LDNS_STATUS_RES_QUERY
+ LDNS_STATUS_SOCKET_ERROR
+ LDNS_STATUS_SSL_ERR
+ LDNS_STATUS_SYNTAX_ALG_ERR
+ LDNS_STATUS_SYNTAX_BAD_ESCAPE
+ LDNS_STATUS_SYNTAX_CLASS_ERR
+ LDNS_STATUS_SYNTAX_DNAME_ERR
+ LDNS_STATUS_SYNTAX_EMPTY
+ LDNS_STATUS_SYNTAX_ERR
+ LDNS_STATUS_SYNTAX_INCLUDE
+ LDNS_STATUS_SYNTAX_INCLUDE_ERR_NOTIMPL
+ LDNS_STATUS_SYNTAX_INTEGER_OVERFLOW
+ LDNS_STATUS_SYNTAX_ITERATIONS_OVERFLOW
+ LDNS_STATUS_SYNTAX_KEYWORD_ERR
+ LDNS_STATUS_SYNTAX_MISSING_VALUE_ERR
+ LDNS_STATUS_SYNTAX_ORIGIN
+ LDNS_STATUS_SYNTAX_RDATA_ERR
+ LDNS_STATUS_SYNTAX_TTL
+ LDNS_STATUS_SYNTAX_TTL_ERR
+ LDNS_STATUS_SYNTAX_TYPE_ERR
+ LDNS_STATUS_SYNTAX_VERSION_ERR
+ LDNS_STATUS_UNKNOWN_INET
+ LDNS_STATUS_WIRE_INCOMPLETE_ADDITIONAL
+ LDNS_STATUS_WIRE_INCOMPLETE_ANSWER
+ LDNS_STATUS_WIRE_INCOMPLETE_AUTHORITY
+ LDNS_STATUS_WIRE_INCOMPLETE_HEADER
+ LDNS_STATUS_WIRE_INCOMPLETE_QUESTION
+
+=head3 Resolver flags and constants
+
+ LDNS_RESOLV_ANCHOR
+ LDNS_RESOLV_DEFDOMAIN
+ LDNS_RESOLV_INET
+ LDNS_RESOLV_INET6
+ LDNS_RESOLV_INETANY
+ LDNS_RESOLV_KEYWORD
+ LDNS_RESOLV_KEYWORDS
+ LDNS_RESOLV_NAMESERVER
+ LDNS_RESOLV_OPTIONS
+ LDNS_RESOLV_RTT_INF
+ LDNS_RESOLV_RTT_MIN
+ LDNS_RESOLV_SEARCH
+ LDNS_RESOLV_SORTLIST
+
+=head3 Resolver query flags
+
+ LDNS_AA
+ LDNS_AD
+ LDNS_CD
+ LDNS_QR
+ LDNS_RA
+ LDNS_RD
+ LDNS_TC
+
+=head3 Resolver rcodes
+
+ LDNS_RCODE_FORMERR
+ LDNS_RCODE_NOERROR
+ LDNS_RCODE_NOTAUTH
+ LDNS_RCODE_NOTIMPL
+ LDNS_RCODE_NOTZONE
+ LDNS_RCODE_NXDOMAIN
+ LDNS_RCODE_NXRRSET
+ LDNS_RCODE_REFUSED
+ LDNS_RCODE_SERVFAIL
+ LDNS_RCODE_YXDOMAIN
+ LDNS_RCODE_YXRRSET
+
+=head3 Packet types
+
+ LDNS_PACKET_ANSWER
+ LDNS_PACKET_NODATA
+ LDNS_PACKET_NXDOMAIN
+ LDNS_PACKET_QUESTION
+ LDNS_PACKET_REFERRAL
+ LDNS_PACKET_UNKNOWN
+
+=head3 Packet opcodes
+
+ LDNS_PACKET_IQUERY
+ LDNS_PACKET_NOTIFY
+ LDNS_PACKET_QUERY
+ LDNS_PACKET_STATUS
+ LDNS_PACKET_UPDATE
+
+=head3 Packet sections
+
+ LDNS_SECTION_ADDITIONAL
+ LDNS_SECTION_ANSWER
+ LDNS_SECTION_ANY
+ LDNS_SECTION_ANY_NOQUESTION
+ LDNS_SECTION_AUTHORITY
+ LDNS_SECTION_QUESTION
+
+=head3 DNSSec constants
+
+ LDNS_DEFAULT_EXP_TIME
+ LDNS_MAX_KEYLEN
+ LDNS_DNSSEC_KEYPROTO
+
+=head3 DNSSec sign policies
+
+ LDNS_SIGNATURE_LEAVE_ADD_NEW
+ LDNS_SIGNATURE_LEAVE_NO_ADD
+ LDNS_SIGNATURE_REMOVE_ADD_NEW
+ LDNS_SIGNATURE_REMOVE_NO_ADD
+ LDNS_NSEC3_MAX_ITERATIONS
+
+=head3 Key flags
+
+ LDNS_KEY_REVOKE_KEY
+ LDNS_KEY_SEP_KEY
+ LDNS_KEY_ZONE_KEY
+
+=head3 Key algorithms
+
+ LDNS_DH
+ LDNS_DSA
+ LDNS_DSA_NSEC3
+ LDNS_ECC
+ LDNS_RSAMD5
+ LDNS_RSASHA1
+ LDNS_RSASHA1_NSEC3
+ LDNS_RSASHA256
+ LDNS_RSASHA512
+ LDNS_ECC_GOST
+ LDNS_PRIVATEDNS
+ LDNS_PRIVATEOID
+
+=head3 Signing algorithms
+
+ LDNS_SIGN_DSA
+ LDNS_SIGN_DSA_NSEC3
+ LDNS_SIGN_ECC_GOST
+ LDNS_SIGN_HMACSHA1
+ LDNS_SIGN_HMACSHA256
+ LDNS_SIGN_RSAMD5
+ LDNS_SIGN_RSASHA1
+ LDNS_SIGN_RSASHA1_NSEC3
+ LDNS_SIGN_RSASHA256
+ LDNS_SIGN_RSASHA512
+
+=head3 Hashing algorithm
+
+ LDNS_SHA1
+ LDNS_SHA256
+ LDNS_HASH_GOST
+
+=head3 Rdata constants
+
+ LDNS_MAX_RDFLEN
+ LDNS_NSEC3_VARS_OPTOUT_MASK
+
+ LDNS_RDF_SIZE_16BYTES
+ LDNS_RDF_SIZE_6BYTES
+ LDNS_RDF_SIZE_BYTE
+ LDNS_RDF_SIZE_DOUBLEWORD
+ LDNS_RDF_SIZE_WORD
+
+=head3 Rdata types
+
+ LDNS_RDF_TYPE_A
+ LDNS_RDF_TYPE_AAAA
+ LDNS_RDF_TYPE_ALG
+ LDNS_RDF_TYPE_APL
+ LDNS_RDF_TYPE_ATMA
+ LDNS_RDF_TYPE_B32_EXT
+ LDNS_RDF_TYPE_B64
+ LDNS_RDF_TYPE_CERT_ALG
+ LDNS_RDF_TYPE_CLASS
+ LDNS_RDF_TYPE_DNAME
+ LDNS_RDF_TYPE_HEX
+ LDNS_RDF_TYPE_INT16
+ LDNS_RDF_TYPE_INT16_DATA
+ LDNS_RDF_TYPE_INT32
+ LDNS_RDF_TYPE_INT8
+ LDNS_RDF_TYPE_IPSECKEY
+ LDNS_RDF_TYPE_LOC
+ LDNS_RDF_TYPE_NONE
+ LDNS_RDF_TYPE_NSAP
+ LDNS_RDF_TYPE_NSEC
+ LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
+ LDNS_RDF_TYPE_NSEC3_SALT
+ LDNS_RDF_TYPE_PERIOD
+ LDNS_RDF_TYPE_SERVICE
+ LDNS_RDF_TYPE_STR
+ LDNS_RDF_TYPE_TIME
+ LDNS_RDF_TYPE_HIP
+ LDNS_RDF_TYPE_TSIGTIME
+ LDNS_RDF_TYPE_TYPE
+ LDNS_RDF_TYPE_UNKNOWN
+ LDNS_RDF_TYPE_WKS
+
+=head3 Algorithms used in CERT RRs.
+
+ LDNS_CERT_ACPKIX
+ LDNS_CERT_IACPKIX
+ LDNS_CERT_IPGP
+ LDNS_CERT_IPKIX
+ LDNS_CERT_ISPKI
+ LDNS_CERT_OID
+ LDNS_CERT_PGP
+ LDNS_CERT_PKIX
+ LDNS_CERT_SPKI
+ LDNS_CERT_URI
+
+=head3 RR compress flag
+
+ LDNS_RR_COMPRESS
+ LDNS_RR_NO_COMPRESS
+
+=head3 RR classes
+
+ LDNS_RR_CLASS_ANY
+ LDNS_RR_CLASS_CH
+ LDNS_RR_CLASS_COUNT
+ LDNS_RR_CLASS_FIRST
+ LDNS_RR_CLASS_HS
+ LDNS_RR_CLASS_IN
+ LDNS_RR_CLASS_LAST
+ LDNS_RR_CLASS_NONE
+
+=head3 RR types
+
+ LDNS_RR_TYPE_A
+ LDNS_RR_TYPE_A6
+ LDNS_RR_TYPE_AAAA
+ LDNS_RR_TYPE_AFSDB
+ LDNS_RR_TYPE_ANY
+ LDNS_RR_TYPE_APL
+ LDNS_RR_TYPE_ATMA
+ LDNS_RR_TYPE_AXFR
+ LDNS_RR_TYPE_CERT
+ LDNS_RR_TYPE_CNAME
+ LDNS_RR_TYPE_COUNT
+ LDNS_RR_TYPE_DHCID
+ LDNS_RR_TYPE_DLV
+ LDNS_RR_TYPE_DNAME
+ LDNS_RR_TYPE_DNSKEY
+ LDNS_RR_TYPE_DS
+ LDNS_RR_TYPE_EID
+ LDNS_RR_TYPE_FIRST
+ LDNS_RR_TYPE_GID
+ LDNS_RR_TYPE_GPOS
+ LDNS_RR_TYPE_HINFO
+ LDNS_RR_TYPE_IPSECKEY
+ LDNS_RR_TYPE_ISDN
+ LDNS_RR_TYPE_IXFR
+ LDNS_RR_TYPE_KEY
+ LDNS_RR_TYPE_KX
+ LDNS_RR_TYPE_LAST
+ LDNS_RR_TYPE_LOC
+ LDNS_RR_TYPE_MAILA
+ LDNS_RR_TYPE_MAILB
+ LDNS_RR_TYPE_MB
+ LDNS_RR_TYPE_MD
+ LDNS_RR_TYPE_MF
+ LDNS_RR_TYPE_MG
+ LDNS_RR_TYPE_MINFO
+ LDNS_RR_TYPE_MR
+ LDNS_RR_TYPE_MX
+ LDNS_RR_TYPE_NAPTR
+ LDNS_RR_TYPE_NIMLOC
+ LDNS_RR_TYPE_NS
+ LDNS_RR_TYPE_NSAP
+ LDNS_RR_TYPE_NSAP_PTR
+ LDNS_RR_TYPE_NSEC
+ LDNS_RR_TYPE_NSEC3
+ LDNS_RR_TYPE_NSEC3PARAM
+ LDNS_RR_TYPE_NSEC3PARAMS
+ LDNS_RR_TYPE_NULL
+ LDNS_RR_TYPE_NXT
+ LDNS_RR_TYPE_OPT
+ LDNS_RR_TYPE_PTR
+ LDNS_RR_TYPE_PX
+ LDNS_RR_TYPE_RP
+ LDNS_RR_TYPE_RRSIG
+ LDNS_RR_TYPE_RT
+ LDNS_RR_TYPE_SIG
+ LDNS_RR_TYPE_SINK
+ LDNS_RR_TYPE_SOA
+ LDNS_RR_TYPE_SPF
+ LDNS_RR_TYPE_SRV
+ LDNS_RR_TYPE_SSHFP
+ LDNS_RR_TYPE_TALINK
+ LDNS_RR_TYPE_TSIG
+ LDNS_RR_TYPE_TXT
+ LDNS_RR_TYPE_UID
+ LDNS_RR_TYPE_UINFO
+ LDNS_RR_TYPE_UNSPEC
+ LDNS_RR_TYPE_WKS
+ LDNS_RR_TYPE_X25
+
+=head3 Various defaults and other constants
+
+ LDNS_DEFAULT_TTL
+ LDNS_PORT
+ LDNS_IP4ADDRLEN
+ LDNS_IP6ADDRLEN
+ LDNS_MAX_DOMAINLEN
+ LDNS_MAX_LABELLEN
+ LDNS_MAX_PACKETLEN
+ LDNS_MAX_POINTERS
+ LDNS_RR_OVERHEAD
+ LDNS_RDATA_FIELD_DESCRIPTORS_COMMON
+
+=head1 BUGS
+
+This package is currently in a very early stage of development. There
+are probably some bugs. You may also expect that method names and
+behaviour could still change without much considerations to backward
+compatibility.
+
+=head1 SEE ALSO
+
+http://www.nlnetlabs.nl/projects/ldns
+
+=head1 AUTHOR
+
+Erik Pihl Ostlyngen, E<lt>erik.ostlyngen@uninett.noE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2013 by UNINETT Norid AS
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.14.2 or,
+at your option, any later version of Perl 5 you may have available.
+
+=cut