From b5c7f2e0b3a733e6bb1d27e727038bf6904a293c Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan.kadlec@nic.cz>
Date: Thu, 29 Nov 2012 13:24:02 +0100
Subject: [PATCH] Merge changes.

---
 Knot.files                    |   2 +
 src/Makefile.am               |   2 -
 src/common/errcode.h          |   2 +-
 src/libknot/util/descriptor.h | 666 +++++++++++++++++-----------------
 4 files changed, 336 insertions(+), 336 deletions(-)

diff --git a/Knot.files b/Knot.files
index 989ede570..11b6bc175 100644
--- a/Knot.files
+++ b/Knot.files
@@ -93,6 +93,8 @@ src/common/evsched.c
 src/common/evsched.h
 src/common/errors.h
 src/common/errors.c
+src/common/errcode.h
+src/common/errcode.c
 src/common/acl.c
 src/common/acl.h
 src/common/sockaddr.h
diff --git a/src/Makefile.am b/src/Makefile.am
index d49b8d12e..f7a2bdf9f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -59,13 +59,11 @@ knot_zcompile_SOURCES =				\
 	common/descriptor_new.h			\
 	common/descriptor_new.c			\
 	common/lists.c				\
-	common/base32.c				\
 	common/base64.c				\
 	common/base64.h				\
 	common/lists.h				\
 	common/heap.h				\
 	common/heap.c				\
-	common/base32.h				\
 	common/print.c				\
 	common/print.h				\
 	common/skip-list.c			\
diff --git a/src/common/errcode.h b/src/common/errcode.h
index 1fb4e3b99..163e27fd6 100644
--- a/src/common/errcode.h
+++ b/src/common/errcode.h
@@ -83,7 +83,7 @@ enum knot_error {
 	KNOT_EIXFRSPACE,      /*!< IXFR reply did not fit in. */
 	KNOT_ECNAME,          /*!< CNAME loop found in zone. */
 	KNOT_ENODIFF,         /*!< No zone diff can be created. */
-	KNOT_EDSDIGESTLEN     /*!< DS digest length does not match digest type. */
+	KNOT_EDSDIGESTLEN,    /*!< DS digest length does not match digest type. */
 
 	/* Zone file loader errors. */
 	FLOADER_EFSTAT,
diff --git a/src/libknot/util/descriptor.h b/src/libknot/util/descriptor.h
index 83d48090f..108217bdb 100644
--- a/src/libknot/util/descriptor.h
+++ b/src/libknot/util/descriptor.h
@@ -44,337 +44,337 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef _KNOT_DESCRIPTOR_H_
-#define _KNOT_DESCRIPTOR_H_
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <string.h>
-
-enum knot_mxrdtln {
-	/*! \brief Maximum items in RDATA wireformat. */
-	KNOT_MAX_RDATA_ITEMS = 64,
-	/*! \brief Maximum size of one item in RDATA wireformat. */
-	KNOT_MAX_RDATA_ITEM_SIZE = 65534,
-	/*! \brief Maximum wire size of one RDATA. */
-	KNOT_MAX_RDATA_WIRE_SIZE =
-	KNOT_MAX_RDATA_ITEMS * KNOT_MAX_RDATA_ITEM_SIZE
-};
-
-typedef enum knot_mxrdtln knot_mxrdtln_t;
-//#define MAXRDATALEN 64
-
-/* 64 is in NSD. Seems a little too much, but I'd say it's not a real issue. */
-
-/*!
- * \brief Resource record class codes.
- */
-enum knot_rr_class {
-	KNOT_CLASS_IN = 1,
-	KNOT_CLASS_CS,
-	KNOT_CLASS_CH,
-	KNOT_CLASS_HS,
-	KNOT_CLASS_NONE = 254,
-	KNOT_CLASS_ANY = 255
-};
-
-typedef enum knot_rr_class knot_rr_class_t;
-
-/*!
- * \brief Resource record type constants.
- * \todo Not all indices can be used for indexing.
- */
-enum knot_rr_type {
-	KNOT_RRTYPE_UNKNOWN, /*!< 0 - an unknown type */
-	KNOT_RRTYPE_A, /*!< 1 - a host address */
-	KNOT_RRTYPE_NS, /*!< 2 - an authoritative name server */
-	KNOT_RRTYPE_MD, /*!< 3 - a mail destination (Obsolete - use MX) */
-	KNOT_RRTYPE_MF, /*!< 4 - a mail forwarder (Obsolete - use MX) */
-	KNOT_RRTYPE_CNAME, /*!< 5 - the canonical name for an alias */
-	KNOT_RRTYPE_SOA, /*!< 6 - marks the start of a zone of authority */
-	KNOT_RRTYPE_MB, /*!< 7 - a mailbox domain name (EXPERIMENTAL) */
-	KNOT_RRTYPE_MG, /*!< 8 - a mail group member (EXPERIMENTAL) */
-	KNOT_RRTYPE_MR, /*!< 9 - a mail rename domain name (EXPERIMENTAL) */
-	KNOT_RRTYPE_NULL, /*!< 10 - a null RR (EXPERIMENTAL) */
-	KNOT_RRTYPE_WKS, /*!< 11 - a well known service description */
-	KNOT_RRTYPE_PTR, /*!< 12 - a domain name pointer */
-	KNOT_RRTYPE_HINFO, /*!< 13 - host information */
-	KNOT_RRTYPE_MINFO, /*!< 14 - mailbox or mail list information */
-	KNOT_RRTYPE_MX, /*!< 15 - mail exchange */
-	KNOT_RRTYPE_TXT, /*!< 16 - text strings */
-	KNOT_RRTYPE_RP, /*!< 17 - RFC1183 */
-	KNOT_RRTYPE_AFSDB, /*!< 18 - RFC1183 */
-	KNOT_RRTYPE_X25, /*!< 19 - RFC1183 */
-	KNOT_RRTYPE_ISDN, /*!< 20 - RFC1183 */
-	KNOT_RRTYPE_RT, /*!< 21 - RFC1183 */
-	KNOT_RRTYPE_NSAP, /*!< 22 - RFC1706 */
-
-	KNOT_RRTYPE_SIG = 24, /*!< 24 - 2535typecode */
-	KNOT_RRTYPE_KEY, /*!< 25 - 2535typecode */
-	KNOT_RRTYPE_PX, /*!< 26 - RFC2163 */
-
-	KNOT_RRTYPE_AAAA = 28, /*!< 28 - ipv6 address */
-	KNOT_RRTYPE_LOC, /*!< 29 - LOC record  RFC1876 */
-	KNOT_RRTYPE_NXT, /*!< 30 - 2535typecode */
-
-	KNOT_RRTYPE_SRV = 33, /*!< 33 - SRV record RFC2782 */
-
-	KNOT_RRTYPE_NAPTR = 35, /*!< 35 - RFC2915 */
-	KNOT_RRTYPE_KX, /*!< 36 - RFC2230 Key Exchange Delegation Record */
-	KNOT_RRTYPE_CERT, /*!< 37 - RFC2538 */
-	KNOT_RRTYPE_A6, /*!< 38 - RFC2874 */
-	KNOT_RRTYPE_DNAME, /*!< 39 - RFC2672 */
-
-	KNOT_RRTYPE_OPT = 41, /*!< 41 - Pseudo OPT record... */
-	KNOT_RRTYPE_APL, /*!< 42 - RFC3123 */
-	KNOT_RRTYPE_DS, /*!< 43 - RFC 4033, 4034, and 4035 */
-	KNOT_RRTYPE_SSHFP, /*!< 44 - SSH Key Fingerprint */
-	KNOT_RRTYPE_IPSECKEY, /*!< 45 - public key for ipsec use. RFC 4025 */
-	KNOT_RRTYPE_RRSIG, /*!< 46 - RFC 4033, 4034, and 4035 */
-	KNOT_RRTYPE_NSEC, /*!< 47 - RFC 4033, 4034, and 4035 */
-	KNOT_RRTYPE_DNSKEY, /*!< 48 - RFC 4033, 4034, and 4035 */
-	KNOT_RRTYPE_DHCID, /*!< 49 - RFC4701 DHCP information */
-	/*!
-	 * \brief 50 - NSEC3, secure denial, prevents zonewalking
-	 */
-	KNOT_RRTYPE_NSEC3,
-	/*!
-	 * \brief  51 - NSEC3PARAM at zone apex nsec3 parameters
-	 */
-	KNOT_RRTYPE_NSEC3PARAM,
-	KNOT_RRTYPE_TLSA = 52,
-
-	/* TODO consider some better way of doing this, indices too high */
-
-	KNOT_RRTYPE_SPF = 99,      /*!< RFC 4408 */
-
-	// not designating any RRs
-	KNOT_RRTYPE_TSIG = 250, /*!< TSIG - RFC2845. */
-	KNOT_RRTYPE_IXFR = 251, /*!< IXFR (not an actual RR). */
-	KNOT_RRTYPE_AXFR = 252, /*!< AXFR (not an actual RR). */
-	/*!
-	 * \brief A request for mailbox-related records (MB, MG or MR)
-	 */
-	KNOT_RRTYPE_MAILB = 253,
-	/*!
-	 * \brief A request for mail agent RRs (Obsolete - see MX)
-	 */
-	KNOT_RRTYPE_MAILA = 254,
-	KNOT_RRTYPE_ANY = 255, /*!< any type (wildcard) */
-
-	// totally weird numbers (cannot use for indexing)
-	KNOT_RRTYPE_TA = 32768, /*!< DNSSEC Trust Authorities */
-	KNOT_RRTYPE_DLV = 32769, /*!< RFC 4431 */
-
-	/*! \brief Last normal RR type. */
-	KNOT_RRTYPE_LAST = KNOT_RRTYPE_TSIG
-	/*! \todo [TSIG] Is it allright to include all <= RR TSIG?
-	 * Because TSIG is normal RR type. */
-};
-
-typedef enum knot_rr_type knot_rr_type_t;
-
-/*! \brief Constants characterising the wire format of RDATA items. */
-enum knot_rdata_wireformat {
-	/*!
-	 * \brief Possibly compressed domain name.
-	 */
-	KNOT_RDATA_WF_COMPRESSED_DNAME = 50,
-	KNOT_RDATA_WF_UNCOMPRESSED_DNAME = 51, /*!< Uncompressed domain name.  */
-	KNOT_RDATA_WF_LITERAL_DNAME = 52, /*!< Literal (not downcased) dname.  */
-	KNOT_RDATA_WF_BYTE = 1, /*!< 8-bit integer.  */
-	KNOT_RDATA_WF_SHORT = 2, /*!< 16-bit integer.  */
-	KNOT_RDATA_WF_LONG = 4, /*!< 32-bit integer.  */
-	KNOT_RDATA_WF_UINT48 = 8, /*!< 48-bit integer.  */
-	KNOT_RDATA_WF_TEXT = 53, /*!< Array of text strings.  */
-	KNOT_RDATA_WF_A = 58, /*!< 32-bit IPv4 address.  */
-	KNOT_RDATA_WF_AAAA = 16, /*!< 128-bit IPv6 address.  */
-	KNOT_RDATA_WF_BINARY = 54, /*!< Binary data (unknown length).  */
-	/*!
-	 * \brief Binary data preceded by 1 byte length
-	 */
-	KNOT_RDATA_WF_BINARYWITHLENGTH = 55,
-	KNOT_RDATA_WF_APL = 56, /*!< APL data.  */
-	KNOT_RDATA_WF_IPSECGATEWAY = 57, /*!< IPSECKEY gateway ip4, ip6 or dname. */
-	KNOT_RDATA_WF_BINARYWITHSHORT = 59,
-	KNOT_RDATA_WF_TEXT_SINGLE = 60 /*!< Text string. */
-};
-
-/*! \brief Constants characterising the format of RDATA items in zone file. */
-enum knot_rdata_zoneformat
-{
-	KNOT_RDATA_ZF_DNAME,		/* Domain name.  */
-	KNOT_RDATA_ZF_LITERAL_DNAME,	/* DNS name (not lowercased domain name).  */
-	KNOT_RDATA_ZF_TEXT,		/* Array of text strings.  */
-	KNOT_RDATA_ZF_TEXT_SINGLE,	/* Text string.  */
-	KNOT_RDATA_ZF_BYTE,		/* 8-bit integer.  */
-	KNOT_RDATA_ZF_SHORT,		/* 16-bit integer.  */
-	KNOT_RDATA_ZF_LONG,		/* 32-bit integer.  */
-	KNOT_RDATA_ZF_A,		/* 32-bit IPv4 address.  */
-	KNOT_RDATA_ZF_AAAA,		/* 128-bit IPv6 address.  */
-	KNOT_RDATA_ZF_RRTYPE,		/* RR type.  */
-	KNOT_RDATA_ZF_ALGORITHM,	/* Cryptographic algorithm.  */
-	KNOT_RDATA_ZF_CERTIFICATE_TYPE,
-	KNOT_RDATA_ZF_PERIOD,		/* Time period.  */
-	KNOT_RDATA_ZF_TIME,
-	KNOT_RDATA_ZF_BASE64,		/* Base-64 binary data.  */
-	KNOT_RDATA_ZF_BASE32,		/* Base-32 binary data.  */
-	KNOT_RDATA_ZF_HEX,		/* Hexadecimal binary data.  */
-	KNOT_RDATA_ZF_HEX_LEN,	/* Hexadecimal binary data. Skip initial length byte. */
-	KNOT_RDATA_ZF_NSAP,		/* NSAP.  */
-	KNOT_RDATA_ZF_APL,		/* APL.  */
-	KNOT_RDATA_ZF_IPSECGATEWAY,	/* IPSECKEY gateway ip4, ip6 or dname. */
-	KNOT_RDATA_ZF_SERVICES,	/* Protocol and port number bitmap.  */
-	KNOT_RDATA_ZF_NXT,		/* NXT type bitmap.  */
-	KNOT_RDATA_ZF_NSEC,		/* NSEC type bitmap.  */
-	KNOT_RDATA_ZF_LOC,		/* Location data.  */
-	KNOT_RDATA_ZF_UNKNOWN	/* Unknown data.  */
-};
-
-/*! \brief Constants characterising the wire format of RDATA items. */
-typedef enum knot_rdata_zoneformat knot_rdata_zoneformat_t;
-
-/*! \brief Enum containing wireformat codes. */
-typedef enum knot_rdatawireformat knot_rdata_wireformat_t;
-
-/*! \brief Constants for DNSSEC algorithm types.
- *
- * Source: http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xml
- */
-enum knot_dnssec_algorithm
-{
-	KNOT_DNSSEC_ALG_RSAMD5 = 1,
-	KNOT_DNSSEC_ALG_DH = 2,
-	KNOT_DNSSEC_ALG_DSA = 3,
-	KNOT_DNSSEC_ALG_RSASHA1 = 5,
-	KNOT_DNSSEC_ALG_DSA_NSEC3_SHA1 = 6,
-	KNOT_DNSSEC_ALG_RSASHA1_NSEC3_SHA1 = 7,
-	KNOT_DNSSEC_ALG_RSASHA256 = 8,
-	KNOT_DNSSEC_ALG_RSASHA512 = 10,
-	KNOT_DNSSEC_ALG_ECC_GOST = 12,
-	KNOT_DNSSEC_ALG_ECDSAP256SHA256 = 13,
-	KNOT_DNSSEC_ALG_ECDSAP384SHA384 = 14
-};
-
-typedef enum knot_dnssec_algorithm knot_dnssec_algorithm_t;
-
-/*! \brief Constants for DNSSEC algorithm types.
- *
- * Source: http://www.iana.org/assignments/ds-rr-types/ds-rr-types.xml
- */
-enum knot_ds_algorithm
-{
-	KNOT_DS_ALG_SHA1 = 1,	/* 20B - RFC 3658 */
-	KNOT_DS_ALG_SHA256 = 2,	/* 32B - RFC 4509 */
-	KNOT_DS_ALG_GOST = 3,	/* 32B - RFC 5933 */
-	KNOT_DS_ALG_SHA384 = 4	/* 48B - RFC 6605 */
-};
-
-typedef enum knot_ds_algorithm knot_ds_algorithm_t;
-
-/*! \brief Structure holding RR descriptor. */
-struct knot_rrtype_descriptor {
-	uint16_t type;          /*!< RR type */
-	const char *name;       /*!< Textual name.  */
-	uint8_t length;         /*!< Maximum number of RDATA items.  */
-
-	/*! \brief Wire format specification for the RDATA. */
-	uint8_t wireformat[KNOT_MAX_RDATA_ITEMS];
-
-	/*! \brief Zone file format specification for the RDATA. */
-	uint8_t zoneformat[KNOT_MAX_RDATA_ITEMS];
-
-	bool fixed_items; /*!< Has fixed number of RDATA items? */
-};
-
-/*! \brief Structure holding RR descriptor. */
-typedef struct knot_rrtype_descriptor knot_rrtype_descriptor_t;
-
-/*!
- * \brief Gets RR descriptor for given RR type.
- *
- * \param type Code of RR type whose descriptor should be returned.
- *
- * \return RR descriptor for given type code, NULL descriptor if
- *         unknown type.
- *
- * \todo Change return value to const.
- */
-knot_rrtype_descriptor_t *knot_rrtype_descriptor_by_type(uint16_t type);
-
-/*!
- * \brief Gets RR descriptor for given RR name.
- *
- * \param name Mnemonic of RR type whose descriptor should be returned.
- *
- * \return RR descriptor for given name, NULL descriptor if
- *         unknown type.
- *
- * \todo Change return value to const.
- */
-knot_rrtype_descriptor_t *knot_rrtype_descriptor_by_name(const char *name);
-
-/*!
- * \brief Converts numeric type representation to mnemonic string.
- *
- * \param rrtype  Type RR type code to be converted.
- * \param out     Output buffer.
- * \param out_len Length of the output buffer.
- *
- * \return Length of output string.
- * \return -1 if error.
- */
-int32_t knot_rrtype_to_string(const uint16_t rrtype,
-			      char           *out,
-			      const uint32_t out_len);
-
-/*!
- * \brief Converts mnemonic string representation of a type to numeric one.
- *
- * \param name Mnemonic string to be converted.
- *
- * \return Correct code if found, 0 otherwise.
- */
-uint16_t knot_rrtype_from_string(const char *name);
-
-/*!
- * \brief Converts numeric class representation to the string one.
- *
- * \param rrclass Class code to be converted.
- * \param out     Output buffer.
- * \param out_len Length of the output buffer.
- *
- * \return Length of output string.
- * \return -1 if error.
- */
-int32_t knot_rrclass_to_string(const uint16_t rrclass,
-			       char           *out,
-			       const uint32_t out_len);
-
-/*!
- * \brief Converts string representation of a class to numeric one.
- *
- * \param name Class string to be converted.
- *
- * \return Correct code if found, 0 otherwise.
- */
-uint16_t knot_rrclass_from_string(const char *name);
-
-/*!
- * \brief Returns size of wireformat type in bytes.
- *
- * \param wire_type Wireformat type.
- *
- * \retval Size of given type on success.
- * \retval 0 on unknown type or type that has no length.
- */
-size_t knot_wireformat_size(unsigned int wire_type);
-
-int knot_rrtype_is_metatype(uint16_t type);
-
-size_t knot_ds_digest_length(uint8_t algorithm);
-
-#endif /* _KNOT_DESCRIPTOR_H_ */
-
-/*! @} */
+//#ifndef _KNOT_DESCRIPTOR_H_
+//#define _KNOT_DESCRIPTOR_H_
+
+//#include <stdint.h>
+//#include <stdbool.h>
+//#include <string.h>
+
+//enum knot_mxrdtln {
+//	/*! \brief Maximum items in RDATA wireformat. */
+//	KNOT_MAX_RDATA_ITEMS = 64,
+//	/*! \brief Maximum size of one item in RDATA wireformat. */
+//	KNOT_MAX_RDATA_ITEM_SIZE = 65534,
+//	/*! \brief Maximum wire size of one RDATA. */
+//	KNOT_MAX_RDATA_WIRE_SIZE =
+//	KNOT_MAX_RDATA_ITEMS * KNOT_MAX_RDATA_ITEM_SIZE
+//};
+
+//typedef enum knot_mxrdtln knot_mxrdtln_t;
+////#define MAXRDATALEN 64
+
+///* 64 is in NSD. Seems a little too much, but I'd say it's not a real issue. */
+
+///*!
+// * \brief Resource record class codes.
+// */
+//enum knot_rr_class {
+//	KNOT_CLASS_IN = 1,
+//	KNOT_CLASS_CS,
+//	KNOT_CLASS_CH,
+//	KNOT_CLASS_HS,
+//	KNOT_CLASS_NONE = 254,
+//	KNOT_CLASS_ANY = 255
+//};
+
+//typedef enum knot_rr_class knot_rr_class_t;
+
+///*!
+// * \brief Resource record type constants.
+// * \todo Not all indices can be used for indexing.
+// */
+//enum knot_rr_type {
+//	KNOT_RRTYPE_UNKNOWN, /*!< 0 - an unknown type */
+//	KNOT_RRTYPE_A, /*!< 1 - a host address */
+//	KNOT_RRTYPE_NS, /*!< 2 - an authoritative name server */
+//	KNOT_RRTYPE_MD, /*!< 3 - a mail destination (Obsolete - use MX) */
+//	KNOT_RRTYPE_MF, /*!< 4 - a mail forwarder (Obsolete - use MX) */
+//	KNOT_RRTYPE_CNAME, /*!< 5 - the canonical name for an alias */
+//	KNOT_RRTYPE_SOA, /*!< 6 - marks the start of a zone of authority */
+//	KNOT_RRTYPE_MB, /*!< 7 - a mailbox domain name (EXPERIMENTAL) */
+//	KNOT_RRTYPE_MG, /*!< 8 - a mail group member (EXPERIMENTAL) */
+//	KNOT_RRTYPE_MR, /*!< 9 - a mail rename domain name (EXPERIMENTAL) */
+//	KNOT_RRTYPE_NULL, /*!< 10 - a null RR (EXPERIMENTAL) */
+//	KNOT_RRTYPE_WKS, /*!< 11 - a well known service description */
+//	KNOT_RRTYPE_PTR, /*!< 12 - a domain name pointer */
+//	KNOT_RRTYPE_HINFO, /*!< 13 - host information */
+//	KNOT_RRTYPE_MINFO, /*!< 14 - mailbox or mail list information */
+//	KNOT_RRTYPE_MX, /*!< 15 - mail exchange */
+//	KNOT_RRTYPE_TXT, /*!< 16 - text strings */
+//	KNOT_RRTYPE_RP, /*!< 17 - RFC1183 */
+//	KNOT_RRTYPE_AFSDB, /*!< 18 - RFC1183 */
+//	KNOT_RRTYPE_X25, /*!< 19 - RFC1183 */
+//	KNOT_RRTYPE_ISDN, /*!< 20 - RFC1183 */
+//	KNOT_RRTYPE_RT, /*!< 21 - RFC1183 */
+//	KNOT_RRTYPE_NSAP, /*!< 22 - RFC1706 */
+
+//	KNOT_RRTYPE_SIG = 24, /*!< 24 - 2535typecode */
+//	KNOT_RRTYPE_KEY, /*!< 25 - 2535typecode */
+//	KNOT_RRTYPE_PX, /*!< 26 - RFC2163 */
+
+//	KNOT_RRTYPE_AAAA = 28, /*!< 28 - ipv6 address */
+//	KNOT_RRTYPE_LOC, /*!< 29 - LOC record  RFC1876 */
+//	KNOT_RRTYPE_NXT, /*!< 30 - 2535typecode */
+
+//	KNOT_RRTYPE_SRV = 33, /*!< 33 - SRV record RFC2782 */
+
+//	KNOT_RRTYPE_NAPTR = 35, /*!< 35 - RFC2915 */
+//	KNOT_RRTYPE_KX, /*!< 36 - RFC2230 Key Exchange Delegation Record */
+//	KNOT_RRTYPE_CERT, /*!< 37 - RFC2538 */
+//	KNOT_RRTYPE_A6, /*!< 38 - RFC2874 */
+//	KNOT_RRTYPE_DNAME, /*!< 39 - RFC2672 */
+
+//	KNOT_RRTYPE_OPT = 41, /*!< 41 - Pseudo OPT record... */
+//	KNOT_RRTYPE_APL, /*!< 42 - RFC3123 */
+//	KNOT_RRTYPE_DS, /*!< 43 - RFC 4033, 4034, and 4035 */
+//	KNOT_RRTYPE_SSHFP, /*!< 44 - SSH Key Fingerprint */
+//	KNOT_RRTYPE_IPSECKEY, /*!< 45 - public key for ipsec use. RFC 4025 */
+//	KNOT_RRTYPE_RRSIG, /*!< 46 - RFC 4033, 4034, and 4035 */
+//	KNOT_RRTYPE_NSEC, /*!< 47 - RFC 4033, 4034, and 4035 */
+//	KNOT_RRTYPE_DNSKEY, /*!< 48 - RFC 4033, 4034, and 4035 */
+//	KNOT_RRTYPE_DHCID, /*!< 49 - RFC4701 DHCP information */
+//	/*!
+//	 * \brief 50 - NSEC3, secure denial, prevents zonewalking
+//	 */
+//	KNOT_RRTYPE_NSEC3,
+//	/*!
+//	 * \brief  51 - NSEC3PARAM at zone apex nsec3 parameters
+//	 */
+//	KNOT_RRTYPE_NSEC3PARAM,
+//	KNOT_RRTYPE_TLSA = 52,
+
+//	/* TODO consider some better way of doing this, indices too high */
+
+//	KNOT_RRTYPE_SPF = 99,      /*!< RFC 4408 */
+
+//	// not designating any RRs
+//	KNOT_RRTYPE_TSIG = 250, /*!< TSIG - RFC2845. */
+//	KNOT_RRTYPE_IXFR = 251, /*!< IXFR (not an actual RR). */
+//	KNOT_RRTYPE_AXFR = 252, /*!< AXFR (not an actual RR). */
+//	/*!
+//	 * \brief A request for mailbox-related records (MB, MG or MR)
+//	 */
+//	KNOT_RRTYPE_MAILB = 253,
+//	/*!
+//	 * \brief A request for mail agent RRs (Obsolete - see MX)
+//	 */
+//	KNOT_RRTYPE_MAILA = 254,
+//	KNOT_RRTYPE_ANY = 255, /*!< any type (wildcard) */
+
+//	// totally weird numbers (cannot use for indexing)
+//	KNOT_RRTYPE_TA = 32768, /*!< DNSSEC Trust Authorities */
+//	KNOT_RRTYPE_DLV = 32769, /*!< RFC 4431 */
+
+//	/*! \brief Last normal RR type. */
+//	KNOT_RRTYPE_LAST = KNOT_RRTYPE_TSIG
+//	/*! \todo [TSIG] Is it allright to include all <= RR TSIG?
+//	 * Because TSIG is normal RR type. */
+//};
+
+//typedef enum knot_rr_type knot_rr_type_t;
+
+///*! \brief Constants characterising the wire format of RDATA items. */
+//enum knot_rdata_wireformat {
+//	/*!
+//	 * \brief Possibly compressed domain name.
+//	 */
+//	KNOT_RDATA_WF_COMPRESSED_DNAME = 50,
+//	KNOT_RDATA_WF_UNCOMPRESSED_DNAME = 51, /*!< Uncompressed domain name.  */
+//	KNOT_RDATA_WF_LITERAL_DNAME = 52, /*!< Literal (not downcased) dname.  */
+//	KNOT_RDATA_WF_BYTE = 1, /*!< 8-bit integer.  */
+//	KNOT_RDATA_WF_SHORT = 2, /*!< 16-bit integer.  */
+//	KNOT_RDATA_WF_LONG = 4, /*!< 32-bit integer.  */
+//	KNOT_RDATA_WF_UINT48 = 8, /*!< 48-bit integer.  */
+//	KNOT_RDATA_WF_TEXT = 53, /*!< Array of text strings.  */
+//	KNOT_RDATA_WF_A = 58, /*!< 32-bit IPv4 address.  */
+//	KNOT_RDATA_WF_AAAA = 16, /*!< 128-bit IPv6 address.  */
+//	KNOT_RDATA_WF_BINARY = 54, /*!< Binary data (unknown length).  */
+//	/*!
+//	 * \brief Binary data preceded by 1 byte length
+//	 */
+//	KNOT_RDATA_WF_BINARYWITHLENGTH = 55,
+//	KNOT_RDATA_WF_APL = 56, /*!< APL data.  */
+//	KNOT_RDATA_WF_IPSECGATEWAY = 57, /*!< IPSECKEY gateway ip4, ip6 or dname. */
+//	KNOT_RDATA_WF_BINARYWITHSHORT = 59,
+//	KNOT_RDATA_WF_TEXT_SINGLE = 60 /*!< Text string. */
+//};
+
+///*! \brief Constants characterising the format of RDATA items in zone file. */
+//enum knot_rdata_zoneformat
+//{
+//	KNOT_RDATA_ZF_DNAME,		/* Domain name.  */
+//	KNOT_RDATA_ZF_LITERAL_DNAME,	/* DNS name (not lowercased domain name).  */
+//	KNOT_RDATA_ZF_TEXT,		/* Array of text strings.  */
+//	KNOT_RDATA_ZF_TEXT_SINGLE,	/* Text string.  */
+//	KNOT_RDATA_ZF_BYTE,		/* 8-bit integer.  */
+//	KNOT_RDATA_ZF_SHORT,		/* 16-bit integer.  */
+//	KNOT_RDATA_ZF_LONG,		/* 32-bit integer.  */
+//	KNOT_RDATA_ZF_A,		/* 32-bit IPv4 address.  */
+//	KNOT_RDATA_ZF_AAAA,		/* 128-bit IPv6 address.  */
+//	KNOT_RDATA_ZF_RRTYPE,		/* RR type.  */
+//	KNOT_RDATA_ZF_ALGORITHM,	/* Cryptographic algorithm.  */
+//	KNOT_RDATA_ZF_CERTIFICATE_TYPE,
+//	KNOT_RDATA_ZF_PERIOD,		/* Time period.  */
+//	KNOT_RDATA_ZF_TIME,
+//	KNOT_RDATA_ZF_BASE64,		/* Base-64 binary data.  */
+//	KNOT_RDATA_ZF_BASE32,		/* Base-32 binary data.  */
+//	KNOT_RDATA_ZF_HEX,		/* Hexadecimal binary data.  */
+//	KNOT_RDATA_ZF_HEX_LEN,	/* Hexadecimal binary data. Skip initial length byte. */
+//	KNOT_RDATA_ZF_NSAP,		/* NSAP.  */
+//	KNOT_RDATA_ZF_APL,		/* APL.  */
+//	KNOT_RDATA_ZF_IPSECGATEWAY,	/* IPSECKEY gateway ip4, ip6 or dname. */
+//	KNOT_RDATA_ZF_SERVICES,	/* Protocol and port number bitmap.  */
+//	KNOT_RDATA_ZF_NXT,		/* NXT type bitmap.  */
+//	KNOT_RDATA_ZF_NSEC,		/* NSEC type bitmap.  */
+//	KNOT_RDATA_ZF_LOC,		/* Location data.  */
+//	KNOT_RDATA_ZF_UNKNOWN	/* Unknown data.  */
+//};
+
+///*! \brief Constants characterising the wire format of RDATA items. */
+//typedef enum knot_rdata_zoneformat knot_rdata_zoneformat_t;
+
+///*! \brief Enum containing wireformat codes. */
+//typedef enum knot_rdatawireformat knot_rdata_wireformat_t;
+
+///*! \brief Constants for DNSSEC algorithm types.
+// *
+// * Source: http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xml
+// */
+//enum knot_dnssec_algorithm
+//{
+//	KNOT_DNSSEC_ALG_RSAMD5 = 1,
+//	KNOT_DNSSEC_ALG_DH = 2,
+//	KNOT_DNSSEC_ALG_DSA = 3,
+//	KNOT_DNSSEC_ALG_RSASHA1 = 5,
+//	KNOT_DNSSEC_ALG_DSA_NSEC3_SHA1 = 6,
+//	KNOT_DNSSEC_ALG_RSASHA1_NSEC3_SHA1 = 7,
+//	KNOT_DNSSEC_ALG_RSASHA256 = 8,
+//	KNOT_DNSSEC_ALG_RSASHA512 = 10,
+//	KNOT_DNSSEC_ALG_ECC_GOST = 12,
+//	KNOT_DNSSEC_ALG_ECDSAP256SHA256 = 13,
+//	KNOT_DNSSEC_ALG_ECDSAP384SHA384 = 14
+//};
+
+//typedef enum knot_dnssec_algorithm knot_dnssec_algorithm_t;
+
+///*! \brief Constants for DNSSEC algorithm types.
+// *
+// * Source: http://www.iana.org/assignments/ds-rr-types/ds-rr-types.xml
+// */
+//enum knot_ds_algorithm
+//{
+//	KNOT_DS_ALG_SHA1 = 1,	/* 20B - RFC 3658 */
+//	KNOT_DS_ALG_SHA256 = 2,	/* 32B - RFC 4509 */
+//	KNOT_DS_ALG_GOST = 3,	/* 32B - RFC 5933 */
+//	KNOT_DS_ALG_SHA384 = 4	/* 48B - RFC 6605 */
+//};
+
+//typedef enum knot_ds_algorithm knot_ds_algorithm_t;
+
+///*! \brief Structure holding RR descriptor. */
+//struct knot_rrtype_descriptor {
+//	uint16_t type;          /*!< RR type */
+//	const char *name;       /*!< Textual name.  */
+//	uint8_t length;         /*!< Maximum number of RDATA items.  */
+
+//	/*! \brief Wire format specification for the RDATA. */
+//	uint8_t wireformat[KNOT_MAX_RDATA_ITEMS];
+
+//	/*! \brief Zone file format specification for the RDATA. */
+//	uint8_t zoneformat[KNOT_MAX_RDATA_ITEMS];
+
+//	bool fixed_items; /*!< Has fixed number of RDATA items? */
+//};
+
+///*! \brief Structure holding RR descriptor. */
+//typedef struct knot_rrtype_descriptor knot_rrtype_descriptor_t;
+
+///*!
+// * \brief Gets RR descriptor for given RR type.
+// *
+// * \param type Code of RR type whose descriptor should be returned.
+// *
+// * \return RR descriptor for given type code, NULL descriptor if
+// *         unknown type.
+// *
+// * \todo Change return value to const.
+// */
+//knot_rrtype_descriptor_t *knot_rrtype_descriptor_by_type(uint16_t type);
+
+///*!
+// * \brief Gets RR descriptor for given RR name.
+// *
+// * \param name Mnemonic of RR type whose descriptor should be returned.
+// *
+// * \return RR descriptor for given name, NULL descriptor if
+// *         unknown type.
+// *
+// * \todo Change return value to const.
+// */
+//knot_rrtype_descriptor_t *knot_rrtype_descriptor_by_name(const char *name);
+
+///*!
+// * \brief Converts numeric type representation to mnemonic string.
+// *
+// * \param rrtype  Type RR type code to be converted.
+// * \param out     Output buffer.
+// * \param out_len Length of the output buffer.
+// *
+// * \return Length of output string.
+// * \return -1 if error.
+// */
+//int32_t knot_rrtype_to_string(const uint16_t rrtype,
+//			      char           *out,
+//			      const uint32_t out_len);
+
+///*!
+// * \brief Converts mnemonic string representation of a type to numeric one.
+// *
+// * \param name Mnemonic string to be converted.
+// *
+// * \return Correct code if found, 0 otherwise.
+// */
+//uint16_t knot_rrtype_from_string(const char *name);
+
+///*!
+// * \brief Converts numeric class representation to the string one.
+// *
+// * \param rrclass Class code to be converted.
+// * \param out     Output buffer.
+// * \param out_len Length of the output buffer.
+// *
+// * \return Length of output string.
+// * \return -1 if error.
+// */
+//int32_t knot_rrclass_to_string(const uint16_t rrclass,
+//			       char           *out,
+//			       const uint32_t out_len);
+
+///*!
+// * \brief Converts string representation of a class to numeric one.
+// *
+// * \param name Class string to be converted.
+// *
+// * \return Correct code if found, 0 otherwise.
+// */
+//uint16_t knot_rrclass_from_string(const char *name);
+
+///*!
+// * \brief Returns size of wireformat type in bytes.
+// *
+// * \param wire_type Wireformat type.
+// *
+// * \retval Size of given type on success.
+// * \retval 0 on unknown type or type that has no length.
+// */
+//size_t knot_wireformat_size(unsigned int wire_type);
+
+//int knot_rrtype_is_metatype(uint16_t type);
+
+//size_t knot_ds_digest_length(uint8_t algorithm);
+
+//#endif /* _KNOT_DESCRIPTOR_H_ */
+
+///*! @} */
 
-- 
GitLab