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