Electroneum
rrdef.h
Go to the documentation of this file.
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 
19 #ifndef LDNS_RRDEF_H
20 #define LDNS_RRDEF_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
27 #define LDNS_MAX_LABELLEN 63
29 #define LDNS_MAX_DOMAINLEN 255
31 #define LDNS_MAX_POINTERS 65535
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 
45 
50 {
61 
65 };
67 
72 {
76 };
78 
83 {
171  LDNS_RR_TYPE_SSHFP = 44, /* RFC 4255 */
173  LDNS_RR_TYPE_IPSECKEY = 45, /* RFC 4025 */
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 */
184  LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */
185  LDNS_RR_TYPE_SMIMEA = 53, /* draft-ietf-dane-smime, TLSA-like but may
186  be extended */
187 
188  LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */
189 
198  LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */
199  LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */
200 
201  LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */
202 
207 
208  LDNS_RR_TYPE_NID = 104, /* RFC 6742 */
209  LDNS_RR_TYPE_L32 = 105, /* RFC 6742 */
210  LDNS_RR_TYPE_L64 = 106, /* RFC 6742 */
211  LDNS_RR_TYPE_LP = 107, /* RFC 6742 */
212 
216 
217  LDNS_RR_TYPE_TKEY = 249, /* RFC 2930 */
227  LDNS_RR_TYPE_URI = 256, /* RFC 7553 */
228  LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
230 
233  /* RFC 4431, 5074, DNSSEC Lookaside Validation */
235 
236  /* type codes from nsec3 experimental phase
237  LDNS_RR_TYPE_NSEC3 = 65324,
238  LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
242 };
243 typedef enum sldns_enum_rr_type sldns_rr_type;
244 
245 /* RDATA */
246 #define LDNS_MAX_RDFLEN 65535
247 
248 #define LDNS_RDF_SIZE_BYTE 1
249 #define LDNS_RDF_SIZE_WORD 2
250 #define LDNS_RDF_SIZE_DOUBLEWORD 4
251 #define LDNS_RDF_SIZE_6BYTES 6
252 #define LDNS_RDF_SIZE_8BYTES 8
253 #define LDNS_RDF_SIZE_16BYTES 16
254 
255 #define LDNS_NSEC3_VARS_OPTOUT_MASK 0x01
256 
257 #define LDNS_APL_IP4 1
258 #define LDNS_APL_IP6 2
259 #define LDNS_APL_MASK 0x7f
260 #define LDNS_APL_NEGATION 0x80
261 
266 {
332 
337 
342 
347 
353 
356 
357  /* Aliases */
359 };
361 
366 {
367  LDNS_RSAMD5 = 1, /* RFC 4034,4035 */
368  LDNS_DH = 2,
369  LDNS_DSA = 3,
370  LDNS_ECC = 4,
374  LDNS_RSASHA256 = 8, /* RFC 5702 */
375  LDNS_RSASHA512 = 10, /* RFC 5702 */
376  LDNS_ECC_GOST = 12, /* RFC 5933 */
377  LDNS_ECDSAP256SHA256 = 13, /* RFC 6605 */
378  LDNS_ECDSAP384SHA384 = 14, /* RFC 6605 */
379  LDNS_ED25519 = 15, /* RFC 8080 */
380  LDNS_ED448 = 16, /* RFC 8080 */
383  LDNS_PRIVATEOID = 254
384 };
386 
391 {
392  LDNS_SHA1 = 1, /* RFC 4034 */
393  LDNS_SHA256 = 2, /* RFC 4509 */
394  LDNS_HASH_GOST = 3, /* RFC 5933 */
395  LDNS_SHA384 = 4 /* RFC 6605 */
396 };
397 typedef enum sldns_enum_hash sldns_hash;
398 
403 {
413  LDNS_CERT_OID = 254
414 };
416 
421 {
422  LDNS_EDNS_LLQ = 1, /* http://files.dns-sd.org/draft-sekar-dns-llq.txt */
423  LDNS_EDNS_UL = 2, /* http://files.dns-sd.org/draft-sekar-dns-ul.txt */
424  LDNS_EDNS_NSID = 3, /* RFC5001 */
425  /* 4 draft-cheshire-edns0-owner-option */
426  LDNS_EDNS_DAU = 5, /* RFC6975 */
427  LDNS_EDNS_DHU = 6, /* RFC6975 */
428  LDNS_EDNS_N3U = 7, /* RFC6975 */
429  LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */
430  LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/
431  LDNS_EDNS_PADDING = 12 /* RFC7830 */
432 };
434 
435 #define LDNS_EDNS_MASK_DO_BIT 0x8000
436 
438 #define LDNS_TSIG_ERROR_NOERROR 0
439 #define LDNS_TSIG_ERROR_BADSIG 16
440 #define LDNS_TSIG_ERROR_BADKEY 17
441 #define LDNS_TSIG_ERROR_BADTIME 18
442 #define LDNS_TSIG_ERROR_BADMODE 19
443 #define LDNS_TSIG_ERROR_BADNAME 20
444 #define LDNS_TSIG_ERROR_BADALG 21
445 
452 {
456  const char *_name;
469 };
471 
479 
487 
495 
504 
511 
518 
519 #ifdef __cplusplus
520 }
521 #endif
522 
523 #endif /* LDNS_RRDEF_H */
const char * name
sldns_enum_rr_compress
Definition: rrdef.h:72
@ LDNS_RR_NO_COMPRESS
Definition: rrdef.h:75
@ LDNS_RR_COMPRESS
Definition: rrdef.h:74
sldns_enum_cert_algorithm
Definition: rrdef.h:403
@ LDNS_CERT_SPKI
Definition: rrdef.h:405
@ LDNS_CERT_URI
Definition: rrdef.h:412
@ LDNS_CERT_ISPKI
Definition: rrdef.h:408
@ LDNS_CERT_IPGP
Definition: rrdef.h:409
@ LDNS_CERT_ACPKIX
Definition: rrdef.h:410
@ LDNS_CERT_IACPKIX
Definition: rrdef.h:411
@ LDNS_CERT_IPKIX
Definition: rrdef.h:407
@ LDNS_CERT_OID
Definition: rrdef.h:413
@ LDNS_CERT_PGP
Definition: rrdef.h:406
@ LDNS_CERT_PKIX
Definition: rrdef.h:404
sldns_enum_hash
Definition: rrdef.h:391
@ LDNS_HASH_GOST
Definition: rrdef.h:394
@ LDNS_SHA256
Definition: rrdef.h:393
@ LDNS_SHA1
Definition: rrdef.h:392
@ LDNS_SHA384
Definition: rrdef.h:395
sldns_enum_rr_class
Definition: rrdef.h:50
@ LDNS_RR_CLASS_NONE
Definition: rrdef.h:58
@ LDNS_RR_CLASS_IN
Definition: rrdef.h:52
@ LDNS_RR_CLASS_LAST
Definition: rrdef.h:63
@ LDNS_RR_CLASS_CH
Definition: rrdef.h:54
@ LDNS_RR_CLASS_COUNT
Definition: rrdef.h:64
@ LDNS_RR_CLASS_HS
Definition: rrdef.h:56
@ LDNS_RR_CLASS_ANY
Definition: rrdef.h:60
@ LDNS_RR_CLASS_FIRST
Definition: rrdef.h:62
size_t sldns_rr_descriptor_maximum(const sldns_rr_descriptor *descriptor)
enum sldns_enum_algorithm sldns_algorithm
Definition: rrdef.h:385
enum sldns_enum_hash sldns_hash
Definition: rrdef.h:397
sldns_rr_type sldns_get_rr_type_by_name(const char *name)
sldns_enum_rr_type
Definition: rrdef.h:83
@ LDNS_RR_TYPE_MF
Definition: rrdef.h:91
@ LDNS_RR_TYPE_CERT
Definition: rrdef.h:157
@ LDNS_RR_TYPE_RP
Definition: rrdef.h:117
@ LDNS_RR_TYPE_KX
Definition: rrdef.h:155
@ LDNS_RR_TYPE_SPF
Definition: rrdef.h:201
@ LDNS_RR_TYPE_OPT
Definition: rrdef.h:165
@ LDNS_RR_TYPE_RRSIG
Definition: rrdef.h:175
@ LDNS_RR_TYPE_SINK
Definition: rrdef.h:163
@ LDNS_RR_TYPE_A
Definition: rrdef.h:85
@ LDNS_RR_TYPE_HIP
Definition: rrdef.h:188
@ LDNS_RR_TYPE_LP
Definition: rrdef.h:211
@ LDNS_RR_TYPE_ISDN
Definition: rrdef.h:123
@ LDNS_RR_TYPE_IXFR
Definition: rrdef.h:219
@ LDNS_RR_TYPE_MINFO
Definition: rrdef.h:111
@ LDNS_RR_TYPE_L32
Definition: rrdef.h:209
@ LDNS_RR_TYPE_GPOS
Definition: rrdef.h:137
@ LDNS_RR_TYPE_TKEY
Definition: rrdef.h:217
@ LDNS_RR_TYPE_DNSKEY
Definition: rrdef.h:177
@ LDNS_RR_TYPE_FIRST
Definition: rrdef.h:239
@ LDNS_RR_TYPE_SOA
Definition: rrdef.h:95
@ LDNS_RR_TYPE_UINFO
Definition: rrdef.h:203
@ LDNS_RR_TYPE_SSHFP
Definition: rrdef.h:171
@ LDNS_RR_TYPE_TSIG
Definition: rrdef.h:218
@ LDNS_RR_TYPE_X25
Definition: rrdef.h:121
@ LDNS_RR_TYPE_WKS
Definition: rrdef.h:105
@ LDNS_RR_TYPE_TLSA
Definition: rrdef.h:184
@ LDNS_RR_TYPE_PX
Definition: rrdef.h:135
@ LDNS_RR_TYPE_RT
Definition: rrdef.h:125
@ LDNS_RR_TYPE_NSEC
Definition: rrdef.h:176
@ LDNS_RR_TYPE_DNAME
Definition: rrdef.h:161
@ LDNS_RR_TYPE_OPENPGPKEY
Definition: rrdef.h:198
@ LDNS_RR_TYPE_COUNT
Definition: rrdef.h:241
@ LDNS_RR_TYPE_DS
Definition: rrdef.h:169
@ LDNS_RR_TYPE_KEY
Definition: rrdef.h:133
@ LDNS_RR_TYPE_NULL
Definition: rrdef.h:103
@ LDNS_RR_TYPE_NSEC3PARAM
Definition: rrdef.h:182
@ LDNS_RR_TYPE_RKEY
Definition: rrdef.h:193
@ LDNS_RR_TYPE_LAST
Definition: rrdef.h:240
@ LDNS_RR_TYPE_NXT
Definition: rrdef.h:143
@ LDNS_RR_TYPE_DLV
Definition: rrdef.h:234
@ LDNS_RR_TYPE_SIG
Definition: rrdef.h:131
@ LDNS_RR_TYPE_CNAME
Definition: rrdef.h:93
@ LDNS_RR_TYPE_NID
Definition: rrdef.h:208
@ LDNS_RR_TYPE_NSEC3
Definition: rrdef.h:181
@ LDNS_RR_TYPE_UID
Definition: rrdef.h:204
@ LDNS_RR_TYPE_MAILA
Definition: rrdef.h:224
@ LDNS_RR_TYPE_DHCID
Definition: rrdef.h:179
@ LDNS_RR_TYPE_CDNSKEY
Definition: rrdef.h:197
@ LDNS_RR_TYPE_NSEC3PARAMS
Definition: rrdef.h:183
@ LDNS_RR_TYPE_TA
Definition: rrdef.h:232
@ LDNS_RR_TYPE_LOC
Definition: rrdef.h:141
@ LDNS_RR_TYPE_TXT
Definition: rrdef.h:115
@ LDNS_RR_TYPE_PTR
Definition: rrdef.h:107
@ LDNS_RR_TYPE_AAAA
Definition: rrdef.h:139
@ LDNS_RR_TYPE_EUI64
Definition: rrdef.h:215
@ LDNS_RR_TYPE_MD
Definition: rrdef.h:89
@ LDNS_RR_TYPE_A6
Definition: rrdef.h:159
@ LDNS_RR_TYPE_NS
Definition: rrdef.h:87
@ LDNS_RR_TYPE_MR
Definition: rrdef.h:101
@ LDNS_RR_TYPE_AXFR
Definition: rrdef.h:220
@ LDNS_RR_TYPE_ANY
Definition: rrdef.h:226
@ LDNS_RR_TYPE_CAA
Definition: rrdef.h:228
@ LDNS_RR_TYPE_EUI48
Definition: rrdef.h:214
@ LDNS_RR_TYPE_MB
Definition: rrdef.h:97
@ LDNS_RR_TYPE_NINFO
Definition: rrdef.h:191
@ LDNS_RR_TYPE_TALINK
Definition: rrdef.h:195
@ LDNS_RR_TYPE_ATMA
Definition: rrdef.h:151
@ LDNS_RR_TYPE_HINFO
Definition: rrdef.h:109
@ LDNS_RR_TYPE_CSYNC
Definition: rrdef.h:199
@ LDNS_RR_TYPE_EID
Definition: rrdef.h:145
@ LDNS_RR_TYPE_AFSDB
Definition: rrdef.h:119
@ LDNS_RR_TYPE_L64
Definition: rrdef.h:210
@ LDNS_RR_TYPE_NSAP
Definition: rrdef.h:127
@ LDNS_RR_TYPE_URI
Definition: rrdef.h:227
@ LDNS_RR_TYPE_AVC
Definition: rrdef.h:229
@ LDNS_RR_TYPE_CDS
Definition: rrdef.h:196
@ LDNS_RR_TYPE_NAPTR
Definition: rrdef.h:153
@ LDNS_RR_TYPE_SMIMEA
Definition: rrdef.h:185
@ LDNS_RR_TYPE_SRV
Definition: rrdef.h:149
@ LDNS_RR_TYPE_IPSECKEY
Definition: rrdef.h:173
@ LDNS_RR_TYPE_MAILB
Definition: rrdef.h:222
@ LDNS_RR_TYPE_APL
Definition: rrdef.h:167
@ LDNS_RR_TYPE_MX
Definition: rrdef.h:113
@ LDNS_RR_TYPE_NIMLOC
Definition: rrdef.h:147
@ LDNS_RR_TYPE_GID
Definition: rrdef.h:205
@ LDNS_RR_TYPE_MG
Definition: rrdef.h:99
@ LDNS_RR_TYPE_UNSPEC
Definition: rrdef.h:206
@ LDNS_RR_TYPE_NSAP_PTR
Definition: rrdef.h:129
sldns_enum_edns_option
Definition: rrdef.h:421
@ LDNS_EDNS_NSID
Definition: rrdef.h:424
@ LDNS_EDNS_KEEPALIVE
Definition: rrdef.h:430
@ LDNS_EDNS_DHU
Definition: rrdef.h:427
@ LDNS_EDNS_PADDING
Definition: rrdef.h:431
@ LDNS_EDNS_DAU
Definition: rrdef.h:426
@ LDNS_EDNS_N3U
Definition: rrdef.h:428
@ LDNS_EDNS_UL
Definition: rrdef.h:423
@ LDNS_EDNS_CLIENT_SUBNET
Definition: rrdef.h:429
@ LDNS_EDNS_LLQ
Definition: rrdef.h:422
sldns_rdf_type sldns_rr_descriptor_field_type(const sldns_rr_descriptor *descriptor, size_t field)
size_t sldns_rr_descriptor_minimum(const sldns_rr_descriptor *descriptor)
struct sldns_struct_lookup_table * sldns_rr_classes
enum sldns_enum_edns_option sldns_edns_option
Definition: rrdef.h:433
const sldns_rr_descriptor * sldns_rr_descript(uint16_t type)
enum sldns_enum_cert_algorithm sldns_cert_algorithm
Definition: rrdef.h:415
enum sldns_enum_rr_class sldns_rr_class
Definition: rrdef.h:66
sldns_enum_rdf_type
Definition: rrdef.h:266
@ LDNS_RDF_TYPE_INT32
Definition: rrdef.h:276
@ LDNS_RDF_TYPE_TAG
Definition: rrdef.h:346
@ LDNS_RDF_TYPE_NSAP
Definition: rrdef.h:323
@ LDNS_RDF_TYPE_HIP
Definition: rrdef.h:312
@ LDNS_RDF_TYPE_B32_EXT
Definition: rrdef.h:286
@ LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
Definition: rrdef.h:331
@ LDNS_RDF_TYPE_CERT_ALG
Definition: rrdef.h:298
@ LDNS_RDF_TYPE_EUI48
Definition: rrdef.h:339
@ LDNS_RDF_TYPE_SERVICE
Definition: rrdef.h:317
@ LDNS_RDF_TYPE_EUI64
Definition: rrdef.h:341
@ LDNS_RDF_TYPE_PERIOD
Definition: rrdef.h:306
@ LDNS_RDF_TYPE_B64
Definition: rrdef.h:288
@ LDNS_RDF_TYPE_TSIGERROR
Definition: rrdef.h:355
@ LDNS_RDF_TYPE_AAAA
Definition: rrdef.h:280
@ LDNS_RDF_TYPE_UNKNOWN
Definition: rrdef.h:302
@ LDNS_RDF_TYPE_WKS
Definition: rrdef.h:321
@ LDNS_RDF_TYPE_DNAME
Definition: rrdef.h:270
@ LDNS_RDF_TYPE_TIME
Definition: rrdef.h:304
@ LDNS_RDF_TYPE_BITMAP
Definition: rrdef.h:358
@ LDNS_RDF_TYPE_NSEC
Definition: rrdef.h:292
@ LDNS_RDF_TYPE_NSEC3_SALT
Definition: rrdef.h:329
@ LDNS_RDF_TYPE_APL
Definition: rrdef.h:284
@ LDNS_RDF_TYPE_A
Definition: rrdef.h:278
@ LDNS_RDF_TYPE_LONG_STR
Definition: rrdef.h:352
@ LDNS_RDF_TYPE_LOC
Definition: rrdef.h:319
@ LDNS_RDF_TYPE_INT16_DATA
Definition: rrdef.h:315
@ LDNS_RDF_TYPE_ILNP64
Definition: rrdef.h:336
@ LDNS_RDF_TYPE_ATMA
Definition: rrdef.h:325
@ LDNS_RDF_TYPE_HEX
Definition: rrdef.h:290
@ LDNS_RDF_TYPE_NONE
Definition: rrdef.h:268
@ LDNS_RDF_TYPE_CLASS
Definition: rrdef.h:296
@ LDNS_RDF_TYPE_INT8
Definition: rrdef.h:272
@ LDNS_RDF_TYPE_IPSECKEY
Definition: rrdef.h:327
@ LDNS_RDF_TYPE_STR
Definition: rrdef.h:282
@ LDNS_RDF_TYPE_INT16
Definition: rrdef.h:274
@ LDNS_RDF_TYPE_ALG
Definition: rrdef.h:300
@ LDNS_RDF_TYPE_TSIGTIME
Definition: rrdef.h:308
@ LDNS_RDF_TYPE_TYPE
Definition: rrdef.h:294
enum sldns_enum_rr_type sldns_rr_type
Definition: rrdef.h:243
sldns_enum_algorithm
Definition: rrdef.h:366
@ LDNS_ED448
Definition: rrdef.h:380
@ LDNS_RSAMD5
Definition: rrdef.h:367
@ LDNS_ECDSAP384SHA384
Definition: rrdef.h:378
@ LDNS_RSASHA1_NSEC3
Definition: rrdef.h:373
@ LDNS_DSA_NSEC3
Definition: rrdef.h:372
@ LDNS_DSA
Definition: rrdef.h:369
@ LDNS_ECDSAP256SHA256
Definition: rrdef.h:377
@ LDNS_ECC_GOST
Definition: rrdef.h:376
@ LDNS_PRIVATEOID
Definition: rrdef.h:383
@ LDNS_PRIVATEDNS
Definition: rrdef.h:382
@ LDNS_DH
Definition: rrdef.h:368
@ LDNS_INDIRECT
Definition: rrdef.h:381
@ LDNS_ECC
Definition: rrdef.h:370
@ LDNS_RSASHA1
Definition: rrdef.h:371
@ LDNS_RSASHA512
Definition: rrdef.h:375
@ LDNS_RSASHA256
Definition: rrdef.h:374
@ LDNS_ED25519
Definition: rrdef.h:379
enum sldns_enum_rr_compress sldns_rr_compress
Definition: rrdef.h:77
sldns_rr_class sldns_get_rr_class_by_name(const char *name)
enum sldns_enum_rdf_type sldns_rdf_type
Definition: rrdef.h:360
unsigned short uint16_t
Definition: stdint.h:125
unsigned char uint8_t
Definition: stdint.h:124
const sldns_rdf_type * _wireformat
Definition: rrdef.h:462
sldns_rr_type _type
Definition: rrdef.h:454
sldns_rr_compress _compress
Definition: rrdef.h:466
sldns_rdf_type _variable
Definition: rrdef.h:464
const char * _name
Definition: rrdef.h:456