1/*
2 * rrdef.h
3 *
4 * RR definitions
5 *
6 * a Net::DNS like library for C
7 *
8 * (c) NLnet Labs, 2005-2006
9 *
10 * See the file LICENSE for the license
11 */
12
13/**
14 * \file
15 *
16 * Defines resource record types and constants.
17 */
18
19#ifndef LDNS_RRDEF_H
20#define LDNS_RRDEF_H
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/** Maximum length of a dname label */
27#define LDNS_MAX_LABELLEN     63
28/** Maximum length of a complete dname */
29#define LDNS_MAX_DOMAINLEN    255
30/** Maximum number of pointers in 1 dname */
31#define LDNS_MAX_POINTERS	65535
32/** The bytes TTL, CLASS and length use up in an rr */
33#define LDNS_RR_OVERHEAD	10
34
35#define LDNS_DNSSEC_KEYPROTO    3
36#define LDNS_KEY_ZONE_KEY   0x0100 /* set for ZSK&KSK, rfc 4034 */
37#define LDNS_KEY_SEP_KEY    0x0001 /* set for KSK, rfc 4034 */
38#define LDNS_KEY_REVOKE_KEY 0x0080 /* used to revoke KSK, rfc 5011 */
39
40/* The first fields are contiguous and can be referenced instantly */
41#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 259
42
43/** lookuptable for rr classes  */
44extern struct sldns_struct_lookup_table* sldns_rr_classes;
45
46/**
47 *  The different RR classes.
48 */
49enum sldns_enum_rr_class
50{
51	/** the Internet */
52	LDNS_RR_CLASS_IN 	= 1,
53	/** Chaos class */
54	LDNS_RR_CLASS_CH	= 3,
55	/** Hesiod (Dyer 87) */
56	LDNS_RR_CLASS_HS	= 4,
57	/** None class, dynamic update */
58	LDNS_RR_CLASS_NONE      = 254,
59	/** Any class */
60	LDNS_RR_CLASS_ANY	= 255,
61
62	LDNS_RR_CLASS_FIRST     = 0,
63	LDNS_RR_CLASS_LAST      = 65535,
64	LDNS_RR_CLASS_COUNT     = LDNS_RR_CLASS_LAST - LDNS_RR_CLASS_FIRST + 1
65};
66typedef enum sldns_enum_rr_class sldns_rr_class;
67
68/**
69 *  Used to specify whether compression is allowed.
70 */
71enum sldns_enum_rr_compress
72{
73	/** compression is allowed */
74	LDNS_RR_COMPRESS,
75	LDNS_RR_NO_COMPRESS
76};
77typedef enum sldns_enum_rr_compress sldns_rr_compress;
78
79/**
80 * The different RR types.
81 */
82enum sldns_enum_rr_type
83{
84	/**  a host address */
85	LDNS_RR_TYPE_A = 1,
86	/**  an authoritative name server */
87	LDNS_RR_TYPE_NS = 2,
88	/**  a mail destination (Obsolete - use MX) */
89	LDNS_RR_TYPE_MD = 3,
90	/**  a mail forwarder (Obsolete - use MX) */
91	LDNS_RR_TYPE_MF = 4,
92	/**  the canonical name for an alias */
93	LDNS_RR_TYPE_CNAME = 5,
94	/**  marks the start of a zone of authority */
95	LDNS_RR_TYPE_SOA = 6,
96	/**  a mailbox domain name (EXPERIMENTAL) */
97	LDNS_RR_TYPE_MB = 7,
98	/**  a mail group member (EXPERIMENTAL) */
99	LDNS_RR_TYPE_MG = 8,
100	/**  a mail rename domain name (EXPERIMENTAL) */
101	LDNS_RR_TYPE_MR = 9,
102	/**  a null RR (EXPERIMENTAL) */
103	LDNS_RR_TYPE_NULL = 10,
104	/**  a well known service description */
105	LDNS_RR_TYPE_WKS = 11,
106	/**  a domain name pointer */
107	LDNS_RR_TYPE_PTR = 12,
108	/**  host information */
109	LDNS_RR_TYPE_HINFO = 13,
110	/**  mailbox or mail list information */
111	LDNS_RR_TYPE_MINFO = 14,
112	/**  mail exchange */
113	LDNS_RR_TYPE_MX = 15,
114	/**  text strings */
115	LDNS_RR_TYPE_TXT = 16,
116	/**  RFC1183 */
117	LDNS_RR_TYPE_RP = 17,
118	/**  RFC1183 */
119	LDNS_RR_TYPE_AFSDB = 18,
120	/**  RFC1183 */
121	LDNS_RR_TYPE_X25 = 19,
122	/**  RFC1183 */
123	LDNS_RR_TYPE_ISDN = 20,
124	/**  RFC1183 */
125	LDNS_RR_TYPE_RT = 21,
126	/**  RFC1706 */
127	LDNS_RR_TYPE_NSAP = 22,
128	/**  RFC1348 */
129	LDNS_RR_TYPE_NSAP_PTR = 23,
130	/**  2535typecode */
131	LDNS_RR_TYPE_SIG = 24,
132	/**  2535typecode */
133	LDNS_RR_TYPE_KEY = 25,
134	/**  RFC2163 */
135	LDNS_RR_TYPE_PX = 26,
136	/**  RFC1712 */
137	LDNS_RR_TYPE_GPOS = 27,
138	/**  ipv6 address */
139	LDNS_RR_TYPE_AAAA = 28,
140	/**  LOC record  RFC1876 */
141	LDNS_RR_TYPE_LOC = 29,
142	/**  2535typecode */
143	LDNS_RR_TYPE_NXT = 30,
144	/**  draft-ietf-nimrod-dns-01.txt */
145	LDNS_RR_TYPE_EID = 31,
146	/**  draft-ietf-nimrod-dns-01.txt */
147	LDNS_RR_TYPE_NIMLOC = 32,
148	/**  SRV record RFC2782 */
149	LDNS_RR_TYPE_SRV = 33,
150	/**  http://www.jhsoft.com/rfc/af-saa-0069.000.rtf */
151	LDNS_RR_TYPE_ATMA = 34,
152	/**  RFC2915 */
153	LDNS_RR_TYPE_NAPTR = 35,
154	/**  RFC2230 */
155	LDNS_RR_TYPE_KX = 36,
156	/**  RFC2538 */
157	LDNS_RR_TYPE_CERT = 37,
158	/**  RFC2874 */
159	LDNS_RR_TYPE_A6 = 38,
160	/**  RFC2672 */
161	LDNS_RR_TYPE_DNAME = 39,
162	/**  dnsind-kitchen-sink-02.txt */
163	LDNS_RR_TYPE_SINK = 40,
164	/**  Pseudo OPT record... */
165	LDNS_RR_TYPE_OPT = 41,
166	/**  RFC3123 */
167	LDNS_RR_TYPE_APL = 42,
168	/**  RFC4034, RFC3658 */
169	LDNS_RR_TYPE_DS = 43,
170	/**  SSH Key Fingerprint */
171	LDNS_RR_TYPE_SSHFP = 44, /* RFC 4255 */
172	/**  IPsec Key */
173	LDNS_RR_TYPE_IPSECKEY = 45, /* RFC 4025 */
174	/**  DNSSEC */
175	LDNS_RR_TYPE_RRSIG = 46, /* RFC 4034 */
176	LDNS_RR_TYPE_NSEC = 47, /* RFC 4034 */
177	LDNS_RR_TYPE_DNSKEY = 48, /* RFC 4034 */
178
179	LDNS_RR_TYPE_DHCID = 49, /* RFC 4701 */
180	/* NSEC3 */
181	LDNS_RR_TYPE_NSEC3 = 50, /* RFC 5155 */
182	LDNS_RR_TYPE_NSEC3PARAM = 51, /* RFC 5155 */
183	LDNS_RR_TYPE_NSEC3PARAMS = 51,
184	LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */
185	LDNS_RR_TYPE_SMIMEA = 53, /* RFC 8162 */
186	LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */
187
188	/** draft-reid-dnsext-zs */
189	LDNS_RR_TYPE_NINFO = 56,
190	/** draft-reid-dnsext-rkey */
191	LDNS_RR_TYPE_RKEY = 57,
192        /** draft-ietf-dnsop-trust-history */
193        LDNS_RR_TYPE_TALINK = 58,
194	LDNS_RR_TYPE_CDS = 59, /** RFC 7344 */
195	LDNS_RR_TYPE_CDNSKEY = 60, /** RFC 7344 */
196	LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */
197	LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */
198	LDNS_RR_TYPE_ZONEMD = 63, /* draft-ietf-dnsop-dns-zone-digest-12 */
199	LDNS_RR_TYPE_SVCB = 64, /* draft-ietf-dnsop-svcb-https-04 */
200	LDNS_RR_TYPE_HTTPS = 65, /* draft-ietf-dnsop-svcb-https-04 */
201
202	LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */
203
204	LDNS_RR_TYPE_UINFO = 100,
205	LDNS_RR_TYPE_UID = 101,
206	LDNS_RR_TYPE_GID = 102,
207	LDNS_RR_TYPE_UNSPEC = 103,
208
209	LDNS_RR_TYPE_NID = 104, /* RFC 6742 */
210	LDNS_RR_TYPE_L32 = 105, /* RFC 6742 */
211	LDNS_RR_TYPE_L64 = 106, /* RFC 6742 */
212	LDNS_RR_TYPE_LP = 107, /* RFC 6742 */
213
214	/** draft-jabley-dnsext-eui48-eui64-rrtypes */
215	LDNS_RR_TYPE_EUI48 = 108,
216	LDNS_RR_TYPE_EUI64 = 109,
217
218	LDNS_RR_TYPE_TKEY = 249, /* RFC 2930 */
219	LDNS_RR_TYPE_TSIG = 250,
220	LDNS_RR_TYPE_IXFR = 251,
221	LDNS_RR_TYPE_AXFR = 252,
222	/**  A request for mailbox-related records (MB, MG or MR) */
223	LDNS_RR_TYPE_MAILB = 253,
224	/**  A request for mail agent RRs (Obsolete - see MX) */
225	LDNS_RR_TYPE_MAILA = 254,
226	/**  any type (wildcard) */
227	LDNS_RR_TYPE_ANY = 255,
228	LDNS_RR_TYPE_URI = 256, /* RFC 7553 */
229	LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
230	LDNS_RR_TYPE_AVC = 258,
231
232	/** DNSSEC Trust Authorities */
233	LDNS_RR_TYPE_TA = 32768,
234	/* RFC 4431, 5074, DNSSEC Lookaside Validation */
235	LDNS_RR_TYPE_DLV = 32769,
236
237	/* type codes from nsec3 experimental phase
238	LDNS_RR_TYPE_NSEC3 = 65324,
239	LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
240	LDNS_RR_TYPE_FIRST = 0,
241	LDNS_RR_TYPE_LAST  = 65535,
242	LDNS_RR_TYPE_COUNT = LDNS_RR_TYPE_LAST - LDNS_RR_TYPE_FIRST + 1
243};
244typedef enum sldns_enum_rr_type sldns_rr_type;
245
246/* RDATA */
247#define LDNS_MAX_RDFLEN	65535
248
249#define LDNS_RDF_SIZE_BYTE              1
250#define LDNS_RDF_SIZE_WORD              2
251#define LDNS_RDF_SIZE_DOUBLEWORD        4
252#define LDNS_RDF_SIZE_6BYTES            6
253#define LDNS_RDF_SIZE_8BYTES            8
254#define LDNS_RDF_SIZE_16BYTES           16
255
256#define LDNS_NSEC3_VARS_OPTOUT_MASK 0x01
257
258#define LDNS_APL_IP4            1
259#define LDNS_APL_IP6            2
260#define LDNS_APL_MASK           0x7f
261#define LDNS_APL_NEGATION       0x80
262
263/**
264 * The different types of RDATA fields.
265 */
266enum sldns_enum_rdf_type
267{
268	/** none */
269	LDNS_RDF_TYPE_NONE,
270	/** domain name */
271	LDNS_RDF_TYPE_DNAME,
272	/** 8 bits */
273	LDNS_RDF_TYPE_INT8,
274	/** 16 bits */
275	LDNS_RDF_TYPE_INT16,
276	/** 32 bits */
277	LDNS_RDF_TYPE_INT32,
278	/** A record */
279	LDNS_RDF_TYPE_A,
280	/** AAAA record */
281	LDNS_RDF_TYPE_AAAA,
282	/** txt string */
283	LDNS_RDF_TYPE_STR,
284	/** apl data */
285	LDNS_RDF_TYPE_APL,
286	/** b32 string */
287	LDNS_RDF_TYPE_B32_EXT,
288	/** b64 string */
289	LDNS_RDF_TYPE_B64,
290	/** hex string */
291	LDNS_RDF_TYPE_HEX,
292	/** nsec type codes */
293	LDNS_RDF_TYPE_NSEC,
294	/** a RR type */
295	LDNS_RDF_TYPE_TYPE,
296	/** a class */
297	LDNS_RDF_TYPE_CLASS,
298	/** certificate algorithm */
299	LDNS_RDF_TYPE_CERT_ALG,
300	/** a key algorithm */
301        LDNS_RDF_TYPE_ALG,
302        /** unknown types */
303        LDNS_RDF_TYPE_UNKNOWN,
304        /** time (32 bits) */
305        LDNS_RDF_TYPE_TIME,
306        /** period */
307        LDNS_RDF_TYPE_PERIOD,
308        /** tsig time 48 bits */
309        LDNS_RDF_TYPE_TSIGTIME,
310	/** Represents the Public Key Algorithm, HIT and Public Key fields
311	    for the HIP RR types.  A HIP specific rdf type is used because of
312	    the unusual layout in wireformat (see RFC 5205 Section 5) */
313	LDNS_RDF_TYPE_HIP,
314        /** variable length any type rdata where the length
315            is specified by the first 2 bytes */
316        LDNS_RDF_TYPE_INT16_DATA,
317        /** protocol and port bitmaps */
318        LDNS_RDF_TYPE_SERVICE,
319        /** location data */
320        LDNS_RDF_TYPE_LOC,
321        /** well known services */
322        LDNS_RDF_TYPE_WKS,
323        /** NSAP */
324        LDNS_RDF_TYPE_NSAP,
325        /** ATMA */
326        LDNS_RDF_TYPE_ATMA,
327        /** IPSECKEY */
328        LDNS_RDF_TYPE_IPSECKEY,
329        /** nsec3 hash salt */
330        LDNS_RDF_TYPE_NSEC3_SALT,
331        /** nsec3 base32 string (with length byte on wire */
332        LDNS_RDF_TYPE_NSEC3_NEXT_OWNER,
333
334        /** 4 shorts represented as 4 * 16 bit hex numbers
335         *  separated by colons. For NID and L64.
336         */
337        LDNS_RDF_TYPE_ILNP64,
338
339        /** 6 * 8 bit hex numbers separated by dashes. For EUI48. */
340        LDNS_RDF_TYPE_EUI48,
341        /** 8 * 8 bit hex numbers separated by dashes. For EUI64. */
342        LDNS_RDF_TYPE_EUI64,
343
344        /** A non-zero sequence of US-ASCII letters and numbers in lower case.
345         *  For CAA.
346         */
347        LDNS_RDF_TYPE_TAG,
348
349        /** A <character-string> encoding of the value field as specified
350         * [RFC1035], Section 5.1., encoded as remaining rdata.
351         * For CAA, URI.
352         */
353        LDNS_RDF_TYPE_LONG_STR,
354
355	/** TSIG extended 16bit error value */
356	LDNS_RDF_TYPE_TSIGERROR,
357
358	/* draft-ietf-dnsop-svcb-https-05:
359	 * each SvcParam consisting of a SvcParamKey=SvcParamValue pair or
360	 * a standalone SvcParamKey */
361	LDNS_RDF_TYPE_SVCPARAM,
362
363        /* Aliases */
364        LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC,
365};
366typedef enum sldns_enum_rdf_type sldns_rdf_type;
367
368/**
369 * Algorithms used in dns
370 */
371enum sldns_enum_algorithm
372{
373        LDNS_RSAMD5             = 1,   /* RFC 4034,4035 */
374        LDNS_DH                 = 2,
375        LDNS_DSA                = 3,
376        LDNS_ECC                = 4,
377        LDNS_RSASHA1            = 5,
378        LDNS_DSA_NSEC3          = 6,
379        LDNS_RSASHA1_NSEC3      = 7,
380        LDNS_RSASHA256          = 8,   /* RFC 5702 */
381        LDNS_RSASHA512          = 10,  /* RFC 5702 */
382        LDNS_ECC_GOST           = 12,  /* RFC 5933 */
383        LDNS_ECDSAP256SHA256    = 13,  /* RFC 6605 */
384        LDNS_ECDSAP384SHA384    = 14,  /* RFC 6605 */
385	LDNS_ED25519		= 15,  /* RFC 8080 */
386	LDNS_ED448		= 16,  /* RFC 8080 */
387        LDNS_INDIRECT           = 252,
388        LDNS_PRIVATEDNS         = 253,
389        LDNS_PRIVATEOID         = 254
390};
391typedef enum sldns_enum_algorithm sldns_algorithm;
392
393/**
394 * Hashing algorithms used in the DS record
395 */
396enum sldns_enum_hash
397{
398        LDNS_SHA1               = 1,  /* RFC 4034 */
399        LDNS_SHA256             = 2,  /* RFC 4509 */
400        LDNS_HASH_GOST          = 3,  /* RFC 5933 */
401        LDNS_SHA384             = 4   /* RFC 6605 */
402};
403typedef enum sldns_enum_hash sldns_hash;
404
405/**
406 * algorithms used in CERT rrs
407 */
408enum sldns_enum_cert_algorithm
409{
410        LDNS_CERT_PKIX          = 1,
411        LDNS_CERT_SPKI          = 2,
412        LDNS_CERT_PGP           = 3,
413        LDNS_CERT_IPKIX         = 4,
414        LDNS_CERT_ISPKI         = 5,
415        LDNS_CERT_IPGP          = 6,
416        LDNS_CERT_ACPKIX        = 7,
417        LDNS_CERT_IACPKIX       = 8,
418        LDNS_CERT_URI           = 253,
419        LDNS_CERT_OID           = 254
420};
421typedef enum sldns_enum_cert_algorithm sldns_cert_algorithm;
422
423/**
424 * EDNS option codes
425 */
426enum sldns_enum_edns_option
427{
428	LDNS_EDNS_LLQ = 1, /* http://files.dns-sd.org/draft-sekar-dns-llq.txt */
429	LDNS_EDNS_UL = 2, /* http://files.dns-sd.org/draft-sekar-dns-ul.txt */
430	LDNS_EDNS_NSID = 3, /* RFC5001 */
431	/* 4 draft-cheshire-edns0-owner-option */
432	LDNS_EDNS_DAU = 5, /* RFC6975 */
433	LDNS_EDNS_DHU = 6, /* RFC6975 */
434	LDNS_EDNS_N3U = 7, /* RFC6975 */
435	LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */
436	LDNS_EDNS_COOKIE = 10, /* RFC7873 */
437	LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/
438	LDNS_EDNS_PADDING = 12, /* RFC7830 */
439	LDNS_EDNS_EDE = 15, /* RFC8914 */
440	LDNS_EDNS_CLIENT_TAG = 16, /* draft-bellis-dnsop-edns-tags-01 */
441	LDNS_EDNS_UNBOUND_CACHEDB_TESTFRAME_TEST = 65534
442};
443typedef enum sldns_enum_edns_option sldns_edns_option;
444
445enum sldns_enum_ede_code
446{
447	LDNS_EDE_NONE = -1, /* EDE undefined for internal use */
448	LDNS_EDE_OTHER = 0,
449	LDNS_EDE_UNSUPPORTED_DNSKEY_ALG = 1,
450	LDNS_EDE_UNSUPPORTED_DS_DIGEST = 2,
451	LDNS_EDE_STALE_ANSWER = 3,
452	LDNS_EDE_FORGED_ANSWER = 4,
453	LDNS_EDE_DNSSEC_INDETERMINATE = 5,
454	LDNS_EDE_DNSSEC_BOGUS = 6,
455	LDNS_EDE_SIGNATURE_EXPIRED = 7,
456	LDNS_EDE_SIGNATURE_NOT_YET_VALID = 8,
457	LDNS_EDE_DNSKEY_MISSING = 9,
458	LDNS_EDE_RRSIGS_MISSING = 10,
459	LDNS_EDE_NO_ZONE_KEY_BIT_SET = 11,
460	LDNS_EDE_NSEC_MISSING = 12,
461	LDNS_EDE_CACHED_ERROR = 13,
462	LDNS_EDE_NOT_READY = 14,
463	LDNS_EDE_BLOCKED = 15,
464	LDNS_EDE_CENSORED = 16,
465	LDNS_EDE_FILTERED = 17,
466	LDNS_EDE_PROHIBITED = 18,
467	LDNS_EDE_STALE_NXDOMAIN_ANSWER = 19,
468	LDNS_EDE_NOT_AUTHORITATIVE = 20,
469	LDNS_EDE_NOT_SUPPORTED = 21,
470	LDNS_EDE_NO_REACHABLE_AUTHORITY = 22,
471	LDNS_EDE_NETWORK_ERROR = 23,
472	LDNS_EDE_INVALID_DATA = 24,
473};
474typedef enum sldns_enum_ede_code sldns_ede_code;
475
476#define LDNS_EDNS_MASK_DO_BIT 0x8000
477
478/** TSIG and TKEY extended rcodes (16bit), 0-15 are the normal rcodes. */
479#define LDNS_TSIG_ERROR_NOERROR  0
480#define LDNS_TSIG_ERROR_BADSIG   16
481#define LDNS_TSIG_ERROR_BADKEY   17
482#define LDNS_TSIG_ERROR_BADTIME  18
483#define LDNS_TSIG_ERROR_BADMODE  19
484#define LDNS_TSIG_ERROR_BADNAME  20
485#define LDNS_TSIG_ERROR_BADALG   21
486
487/** DNS Cookie extended rcode */
488#define LDNS_EXT_RCODE_BADCOOKIE 23
489
490/**
491 * Contains all information about resource record types.
492 *
493 * This structure contains, for all rr types, the rdata fields that are defined.
494 */
495struct sldns_struct_rr_descriptor
496{
497	/** Type of the RR that is described here */
498	sldns_rr_type    _type;
499	/** Textual name of the RR type.  */
500	const char *_name;
501	/** Minimum number of rdata fields in the RRs of this type.  */
502	uint8_t     _minimum;
503	/** Maximum number of rdata fields in the RRs of this type.  */
504	uint8_t     _maximum;
505	/** Wireformat specification for the rr, i.e. the types of rdata fields in their respective order. */
506	const sldns_rdf_type *_wireformat;
507	/** Special rdf types */
508	sldns_rdf_type _variable;
509	/** Specifies whether compression can be used for dnames in this RR type. */
510	sldns_rr_compress _compress;
511	/** The number of DNAMEs in the _wireformat string, for parsing. */
512	uint8_t _dname_count;
513};
514typedef struct sldns_struct_rr_descriptor sldns_rr_descriptor;
515
516/**
517 * returns the resource record descriptor for the given rr type.
518 *
519 * \param[in] type the type value of the rr type
520 *\return the sldns_rr_descriptor for this type
521 */
522const sldns_rr_descriptor *sldns_rr_descript(uint16_t type);
523
524/**
525 * returns the minimum number of rdata fields of the rr type this descriptor describes.
526 *
527 * \param[in]  descriptor for an rr type
528 * \return the minimum number of rdata fields
529 */
530size_t sldns_rr_descriptor_minimum(const sldns_rr_descriptor *descriptor);
531
532/**
533 * returns the maximum number of rdata fields of the rr type this descriptor describes.
534 *
535 * \param[in]  descriptor for an rr type
536 * \return the maximum number of rdata fields
537 */
538size_t sldns_rr_descriptor_maximum(const sldns_rr_descriptor *descriptor);
539
540/**
541 * returns the rdf type for the given rdata field number of the rr type for the given descriptor.
542 *
543 * \param[in] descriptor for an rr type
544 * \param[in] field the field number
545 * \return the rdf type for the field
546 */
547sldns_rdf_type sldns_rr_descriptor_field_type(const sldns_rr_descriptor *descriptor, size_t field);
548
549/**
550 * retrieves a rrtype by looking up its name.
551 * \param[in] name a string with the name
552 * \return the type which corresponds with the name
553 */
554sldns_rr_type sldns_get_rr_type_by_name(const char *name);
555
556/**
557 * retrieves a class by looking up its name.
558 * \param[in] name string with the name
559 * \return the cass which corresponds with the name
560 */
561sldns_rr_class sldns_get_rr_class_by_name(const char *name);
562
563#ifdef __cplusplus
564}
565#endif
566
567#endif /* LDNS_RRDEF_H */
568