Main Page
Related Pages
Data Structures
Files
File List
Globals
ldns
rr.h
Go to the documentation of this file.
1
/*
2
* rr.h - resource record definitions
3
*
4
* a Net::DNS like library for C
5
*
6
* (c) NLnet Labs, 2005-2006
7
*
8
* See the file LICENSE for the license
9
*/
10
18
#ifndef LDNS_RR_H
19
#define LDNS_RR_H
20
21
#include <
ldns/common.h
>
22
#include <
ldns/rdata.h
>
23
#include <
ldns/buffer.h
>
24
#include <
ldns/error.h
>
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
31
#define LDNS_MAX_LABELLEN 63
32
33
#define LDNS_MAX_DOMAINLEN 255
34
35
#define LDNS_MAX_POINTERS 65535
36
37
#define LDNS_RR_OVERHEAD 10
38
39
/* The first fields are 'common' and can be referenced instantly */
40
#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 53
41
42
43
47
enum
ldns_enum_rr_class
48
{
50
LDNS_RR_CLASS_IN
= 1,
52
LDNS_RR_CLASS_CH
= 3,
54
LDNS_RR_CLASS_HS
= 4,
56
LDNS_RR_CLASS_NONE
= 254,
58
LDNS_RR_CLASS_ANY
= 255,
59
60
LDNS_RR_CLASS_FIRST
= 0,
61
LDNS_RR_CLASS_LAST
= 65535,
62
LDNS_RR_CLASS_COUNT
=
LDNS_RR_CLASS_LAST
-
LDNS_RR_CLASS_FIRST
+ 1
63
};
64
typedef
enum
ldns_enum_rr_class
ldns_rr_class
;
65
69
enum
ldns_enum_rr_compress
70
{
72
LDNS_RR_COMPRESS
,
73
LDNS_RR_NO_COMPRESS
74
};
75
typedef
enum
ldns_enum_rr_compress
ldns_rr_compress
;
76
80
enum
ldns_enum_rr_type
81
{
83
LDNS_RR_TYPE_A
= 1,
85
LDNS_RR_TYPE_NS
= 2,
87
LDNS_RR_TYPE_MD
= 3,
89
LDNS_RR_TYPE_MF
= 4,
91
LDNS_RR_TYPE_CNAME
= 5,
93
LDNS_RR_TYPE_SOA
= 6,
95
LDNS_RR_TYPE_MB
= 7,
97
LDNS_RR_TYPE_MG
= 8,
99
LDNS_RR_TYPE_MR
= 9,
101
LDNS_RR_TYPE_NULL
= 10,
103
LDNS_RR_TYPE_WKS
= 11,
105
LDNS_RR_TYPE_PTR
= 12,
107
LDNS_RR_TYPE_HINFO
= 13,
109
LDNS_RR_TYPE_MINFO
= 14,
111
LDNS_RR_TYPE_MX
= 15,
113
LDNS_RR_TYPE_TXT
= 16,
115
LDNS_RR_TYPE_RP
= 17,
117
LDNS_RR_TYPE_AFSDB
= 18,
119
LDNS_RR_TYPE_X25
= 19,
121
LDNS_RR_TYPE_ISDN
= 20,
123
LDNS_RR_TYPE_RT
= 21,
125
LDNS_RR_TYPE_NSAP
= 22,
127
LDNS_RR_TYPE_NSAP_PTR
= 23,
129
LDNS_RR_TYPE_SIG
= 24,
131
LDNS_RR_TYPE_KEY
= 25,
133
LDNS_RR_TYPE_PX
= 26,
135
LDNS_RR_TYPE_GPOS
= 27,
137
LDNS_RR_TYPE_AAAA
= 28,
139
LDNS_RR_TYPE_LOC
= 29,
141
LDNS_RR_TYPE_NXT
= 30,
143
LDNS_RR_TYPE_EID
= 31,
145
LDNS_RR_TYPE_NIMLOC
= 32,
147
LDNS_RR_TYPE_SRV
= 33,
149
LDNS_RR_TYPE_ATMA
= 34,
151
LDNS_RR_TYPE_NAPTR
= 35,
153
LDNS_RR_TYPE_KX
= 36,
155
LDNS_RR_TYPE_CERT
= 37,
157
LDNS_RR_TYPE_A6
= 38,
159
LDNS_RR_TYPE_DNAME
= 39,
161
LDNS_RR_TYPE_SINK
= 40,
163
LDNS_RR_TYPE_OPT
= 41,
165
LDNS_RR_TYPE_APL
= 42,
167
LDNS_RR_TYPE_DS
= 43,
169
LDNS_RR_TYPE_SSHFP
= 44,
/* RFC 4255 */
171
LDNS_RR_TYPE_IPSECKEY
= 45,
/* RFC 4025 */
173
LDNS_RR_TYPE_RRSIG
= 46,
/* RFC 4034 */
174
LDNS_RR_TYPE_NSEC
= 47,
/* RFC 4034 */
175
LDNS_RR_TYPE_DNSKEY
= 48,
/* RFC 4034 */
176
177
LDNS_RR_TYPE_DHCID
= 49,
/* RFC 4701 */
178
/* NSEC3 */
179
LDNS_RR_TYPE_NSEC3
= 50,
/* RFC 5155 */
180
LDNS_RR_TYPE_NSEC3PARAM
= 51,
/* RFC 5155 */
181
LDNS_RR_TYPE_NSEC3PARAMS
= 51,
183
LDNS_RR_TYPE_TLSA
= 52,
184
186
LDNS_RR_TYPE_TALINK
= 58,
187
188
LDNS_RR_TYPE_SPF
= 99,
189
190
LDNS_RR_TYPE_UINFO
= 100,
191
LDNS_RR_TYPE_UID
= 101,
192
LDNS_RR_TYPE_GID
= 102,
193
LDNS_RR_TYPE_UNSPEC
= 103,
194
195
LDNS_RR_TYPE_TSIG
= 250,
196
LDNS_RR_TYPE_IXFR
= 251,
197
LDNS_RR_TYPE_AXFR
= 252,
199
LDNS_RR_TYPE_MAILB
= 253,
201
LDNS_RR_TYPE_MAILA
= 254,
203
LDNS_RR_TYPE_ANY
= 255,
204
205
/* RFC 4431, 5074, DNSSEC Lookaside Validation */
206
LDNS_RR_TYPE_DLV
= 32769,
207
208
/* type codes from nsec3 experimental phase
209
LDNS_RR_TYPE_NSEC3 = 65324,
210
LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
211
LDNS_RR_TYPE_FIRST
= 0,
212
LDNS_RR_TYPE_LAST
= 65535,
213
LDNS_RR_TYPE_COUNT
=
LDNS_RR_TYPE_LAST
-
LDNS_RR_TYPE_FIRST
+ 1
214
};
215
typedef
enum
ldns_enum_rr_type
ldns_rr_type
;
216
278
struct
ldns_struct_rr
279
{
281
ldns_rdf
*
_owner
;
283
uint32_t
_ttl
;
285
size_t
_rd_count
;
287
ldns_rr_type
_rr_type
;
289
ldns_rr_class
_rr_class
;
290
/* everything in the rdata is in network order */
292
ldns_rdf
**
_rdata_fields
;
296
bool
_rr_question
;
297
};
298
typedef
struct
ldns_struct_rr
ldns_rr
;
299
306
struct
ldns_struct_rr_list
307
{
308
size_t
_rr_count
;
309
size_t
_rr_capacity
;
310
ldns_rr
**
_rrs
;
311
};
312
typedef
struct
ldns_struct_rr_list
ldns_rr_list
;
313
319
struct
ldns_struct_rr_descriptor
320
{
322
ldns_rr_type
_type
;
324
const
char
*
_name
;
326
uint8_t
_minimum
;
328
uint8_t
_maximum
;
330
const
ldns_rdf_type
*
_wireformat
;
332
ldns_rdf_type
_variable
;
334
ldns_rr_compress
_compress
;
336
uint8_t
_dname_count
;
337
};
338
typedef
struct
ldns_struct_rr_descriptor
ldns_rr_descriptor
;
339
344
ldns_rr
*
ldns_rr_new
(
void
);
345
350
ldns_rr
*
ldns_rr_new_frm_type
(ldns_rr_type t);
351
357
void
ldns_rr_free
(
ldns_rr
*rr);
358
375
ldns_status
ldns_rr_new_frm_str
(
ldns_rr
**n,
const
char
*str,
376
uint32_t default_ttl,
ldns_rdf
*origin,
377
ldns_rdf
**prev);
378
392
ldns_status
ldns_rr_new_question_frm_str
(
ldns_rr
**n,
const
char
*str,
393
ldns_rdf
*origin,
ldns_rdf
**prev);
394
409
ldns_status
ldns_rr_new_frm_fp
(
ldns_rr
**rr, FILE *fp, uint32_t *default_ttl,
ldns_rdf
**origin,
ldns_rdf
**prev);
410
426
ldns_status
ldns_rr_new_frm_fp_l
(
ldns_rr
**rr, FILE *fp, uint32_t *default_ttl,
ldns_rdf
**origin,
ldns_rdf
**prev,
int
*line_nr);
427
434
void
ldns_rr_set_owner
(
ldns_rr
*rr,
ldns_rdf
*owner);
435
442
void
ldns_rr_set_question
(
ldns_rr
*rr,
bool
question);
443
450
void
ldns_rr_set_ttl
(
ldns_rr
*rr, uint32_t ttl);
451
458
void
ldns_rr_set_rd_count
(
ldns_rr
*rr,
size_t
count);
459
466
void
ldns_rr_set_type
(
ldns_rr
*rr, ldns_rr_type rr_type);
467
474
void
ldns_rr_set_class
(
ldns_rr
*rr, ldns_rr_class rr_class);
475
484
ldns_rdf
*
ldns_rr_set_rdf
(
ldns_rr
*rr,
const
ldns_rdf
*f,
size_t
position);
485
493
bool
ldns_rr_push_rdf
(
ldns_rr
*rr,
const
ldns_rdf
*f);
494
501
ldns_rdf
*
ldns_rr_pop_rdf
(
ldns_rr
*rr);
502
509
ldns_rdf
*
ldns_rr_rdf
(
const
ldns_rr
*rr,
size_t
nr);
510
516
ldns_rdf
*
ldns_rr_owner
(
const
ldns_rr
*rr);
517
523
bool
ldns_rr_is_question
(
const
ldns_rr
*rr);
524
530
uint32_t
ldns_rr_ttl
(
const
ldns_rr
*rr);
531
537
size_t
ldns_rr_rd_count
(
const
ldns_rr
*rr);
538
544
ldns_rr_type
ldns_rr_get_type
(
const
ldns_rr
*rr);
545
551
ldns_rr_class
ldns_rr_get_class
(
const
ldns_rr
*rr);
552
553
/* rr_lists */
554
560
size_t
ldns_rr_list_rr_count
(
const
ldns_rr_list
*rr_list);
561
568
void
ldns_rr_list_set_rr_count
(
ldns_rr_list
*rr_list,
size_t
count);
569
578
ldns_rr
*
ldns_rr_list_set_rr
(
ldns_rr_list
*rr_list,
const
ldns_rr
*r,
size_t
count);
579
586
ldns_rr
*
ldns_rr_list_rr
(
const
ldns_rr_list
*rr_list,
size_t
nr);
587
592
ldns_rr_list
*
ldns_rr_list_new
();
593
598
void
ldns_rr_list_free
(
ldns_rr_list
*rr_list);
599
604
void
ldns_rr_list_deep_free
(
ldns_rr_list
*rr_list);
605
613
bool
ldns_rr_list_cat
(
ldns_rr_list
*left,
ldns_rr_list
*right);
614
622
ldns_rr_list
*
ldns_rr_list_cat_clone
(
ldns_rr_list
*left,
ldns_rr_list
*right);
623
630
bool
ldns_rr_list_push_rr
(
ldns_rr_list
*rr_list,
const
ldns_rr
*rr);
631
638
bool
ldns_rr_list_push_rr_list
(
ldns_rr_list
*rr_list,
const
ldns_rr_list
*push_list);
639
645
ldns_rr
*
ldns_rr_list_pop_rr
(
ldns_rr_list
*rr_list);
646
653
ldns_rr_list
*
ldns_rr_list_pop_rr_list
(
ldns_rr_list
*rr_list,
size_t
size);
654
662
bool
ldns_rr_list_contains_rr
(
const
ldns_rr_list
*rr_list,
ldns_rr
*rr);
663
669
bool
ldns_is_rrset
(
ldns_rr_list
*rr_list);
670
677
bool
ldns_rr_set_push_rr
(
ldns_rr_list
*rr_list,
ldns_rr
*rr);
678
686
ldns_rr
*
ldns_rr_set_pop_rr
(
ldns_rr_list
*rr_list);
687
693
ldns_rr_list
*
ldns_rr_list_pop_rrset
(
ldns_rr_list
*rr_list);
694
695
701
ldns_rr_type
ldns_get_rr_type_by_name
(
const
char
*name);
702
708
ldns_rr_class
ldns_get_rr_class_by_name
(
const
char
*name);
709
715
ldns_rr
*
ldns_rr_clone
(
const
ldns_rr
*rr);
716
722
ldns_rr_list
*
ldns_rr_list_clone
(
const
ldns_rr_list
*rrlist);
723
729
void
ldns_rr_list_sort
(
ldns_rr_list
*unsorted);
730
739
int
ldns_rr_compare
(
const
ldns_rr
*rr1,
const
ldns_rr
*rr2);
740
749
int
ldns_rr_compare_no_rdata
(
const
ldns_rr
*rr1,
const
ldns_rr
*rr2);
750
759
int
ldns_rr_compare_wire
(
ldns_buffer
*rr1_buf,
ldns_buffer
*rr2_buf);
760
769
bool
ldns_rr_compare_ds
(
const
ldns_rr
*rr1,
const
ldns_rr
*rr2);
770
779
int
ldns_rr_list_compare
(
const
ldns_rr_list
*rrl1,
const
ldns_rr_list
*rrl2);
780
786
size_t
ldns_rr_uncompressed_size
(
const
ldns_rr
*r);
787
793
void
ldns_rr2canonical
(
ldns_rr
*rr);
794
800
void
ldns_rr_list2canonical
(
ldns_rr_list
*rr_list);
801
807
uint8_t
ldns_rr_label_count
(
ldns_rr
*rr);
808
815
const
ldns_rr_descriptor
*
ldns_rr_descript
(uint16_t type);
816
823
size_t
ldns_rr_descriptor_minimum
(
const
ldns_rr_descriptor
*descriptor);
824
831
size_t
ldns_rr_descriptor_maximum
(
const
ldns_rr_descriptor
*descriptor);
832
840
ldns_rdf_type
ldns_rr_descriptor_field_type
(
const
ldns_rr_descriptor
*descriptor,
size_t
field);
841
853
ldns_rr_list
*
ldns_rr_list_subtype_by_rdf
(
ldns_rr_list
*l,
ldns_rdf
*r,
size_t
pos);
854
863
ldns_rr_type
ldns_rdf2rr_type
(
const
ldns_rdf
*rd);
864
872
ldns_rr_type
873
ldns_rr_list_type
(
const
ldns_rr_list
*rr_list);
874
882
ldns_rdf
*
883
ldns_rr_list_owner
(
const
ldns_rr_list
*rr_list);
884
885
#ifdef __cplusplus
886
}
887
#endif
888
889
#endif
/* LDNS_RR_H */
Generated on Tue Nov 27 2012 22:55:07 for ldns by
1.8.1.2