ldns documentation

- Main Page
- Related Pages
- Data Structures
- Files

- File List
- Globals

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 contiguous and can be referenced instantly */
40 #define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 258
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,
182 LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */
183
184 LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */
185
187 LDNS_RR_TYPE_NINFO = 56,
189 LDNS_RR_TYPE_RKEY = 57,
191 LDNS_RR_TYPE_TALINK = 58,
193 LDNS_RR_TYPE_CDS = 59,
194
195 LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */
196
197 LDNS_RR_TYPE_UINFO = 100,
198 LDNS_RR_TYPE_UID = 101,
199 LDNS_RR_TYPE_GID = 102,
200 LDNS_RR_TYPE_UNSPEC = 103,
201
202 LDNS_RR_TYPE_NID = 104, /* RFC 6742 */
203 LDNS_RR_TYPE_L32 = 105, /* RFC 6742 */
204 LDNS_RR_TYPE_L64 = 106, /* RFC 6742 */
205 LDNS_RR_TYPE_LP = 107, /* RFC 6742 */
206
207 LDNS_RR_TYPE_EUI48 = 108, /* RFC 7043 */
208 LDNS_RR_TYPE_EUI64 = 109, /* RFC 7043 */
209
210 LDNS_RR_TYPE_TKEY = 249, /* RFC 2930 */
211 LDNS_RR_TYPE_TSIG = 250,
212 LDNS_RR_TYPE_IXFR = 251,
213 LDNS_RR_TYPE_AXFR = 252,
215 LDNS_RR_TYPE_MAILB = 253,
217 LDNS_RR_TYPE_MAILA = 254,
219 LDNS_RR_TYPE_ANY = 255,
221 LDNS_RR_TYPE_URI = 256,
222 LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
223
225 LDNS_RR_TYPE_TA = 32768,
226 /* RFC 4431, 5074, DNSSEC Lookaside Validation */
227 LDNS_RR_TYPE_DLV = 32769,
228
229 /* type codes from nsec3 experimental phase
230 LDNS_RR_TYPE_NSEC3 = 65324,
231 LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
232 LDNS_RR_TYPE_FIRST = 0,
233 LDNS_RR_TYPE_LAST = 65535,
234 LDNS_RR_TYPE_COUNT = LDNS_RR_TYPE_LAST - LDNS_RR_TYPE_FIRST + 1
235 };
236 typedef enum ldns_enum_rr_type ldns_rr_type;
237
299 struct ldns_struct_rr
300 {
302 ldns_rdf *_owner;
304 uint32_t _ttl;
306 size_t _rd_count;
308 ldns_rr_type _rr_type;
310 ldns_rr_class _rr_class;
311 /* everything in the rdata is in network order */
313 ldns_rdf **_rdata_fields;
317 bool _rr_question;
318 };
319 typedef struct ldns_struct_rr ldns_rr;
320
327 struct ldns_struct_rr_list
328 {
329 size_t _rr_count;
330 size_t _rr_capacity;
331 ldns_rr **_rrs;
332 };
333 typedef struct ldns_struct_rr_list ldns_rr_list;
334
340 struct ldns_struct_rr_descriptor
341 {
343 ldns_rr_type _type;
345 const char *_name;
347 uint8_t _minimum;
349 uint8_t _maximum;
351 const ldns_rdf_type *_wireformat;
353 ldns_rdf_type _variable;
355 ldns_rr_compress _compress;
357 uint8_t _dname_count;
358 };
359 typedef struct ldns_struct_rr_descriptor ldns_rr_descriptor;
360
361
368 ldns_status ldns_rdf_bitmap_known_rr_types_space(ldns_rdf** rdf);
369
375 ldns_status ldns_rdf_bitmap_known_rr_types(ldns_rdf** rdf);
376
377
382 ldns_rr* ldns_rr_new(void);
383
388 ldns_rr* ldns_rr_new_frm_type(ldns_rr_type t);
389
395 void ldns_rr_free(ldns_rr *rr);
396
413 ldns_status ldns_rr_new_frm_str(ldns_rr **n, const char *str,
414 uint32_t default_ttl, ldns_rdf *origin,
415 ldns_rdf **prev);
416
430 ldns_status ldns_rr_new_question_frm_str(ldns_rr **n, const char *str,
431 ldns_rdf *origin, ldns_rdf **prev);
432
447 ldns_status ldns_rr_new_frm_fp(ldns_rr **rr, FILE *fp, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev);
448
464 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);
465
472 void ldns_rr_set_owner(ldns_rr *rr, ldns_rdf *owner);
473
480 void ldns_rr_set_question(ldns_rr *rr, bool question);
481
488 void ldns_rr_set_ttl(ldns_rr *rr, uint32_t ttl);
489
496 void ldns_rr_set_rd_count(ldns_rr *rr, size_t count);
497
504 void ldns_rr_set_type(ldns_rr *rr, ldns_rr_type rr_type);
505
512 void ldns_rr_set_class(ldns_rr *rr, ldns_rr_class rr_class);
513
522 ldns_rdf* ldns_rr_set_rdf(ldns_rr *rr, const ldns_rdf *f, size_t position);
523
531 bool ldns_rr_push_rdf(ldns_rr *rr, const ldns_rdf *f);
532
539 ldns_rdf* ldns_rr_pop_rdf(ldns_rr *rr);
540
547 ldns_rdf* ldns_rr_rdf(const ldns_rr *rr, size_t nr);
548
554 ldns_rdf* ldns_rr_owner(const ldns_rr *rr);
555
561 bool ldns_rr_is_question(const ldns_rr *rr);
562
568 uint32_t ldns_rr_ttl(const ldns_rr *rr);
569
575 size_t ldns_rr_rd_count(const ldns_rr *rr);
576
582 ldns_rr_type ldns_rr_get_type(const ldns_rr *rr);
583
589 ldns_rr_class ldns_rr_get_class(const ldns_rr *rr);
590
591 /* rr_lists */
592
598 size_t ldns_rr_list_rr_count(const ldns_rr_list *rr_list);
599
606 void ldns_rr_list_set_rr_count(ldns_rr_list *rr_list, size_t count);
607
616 ldns_rr * ldns_rr_list_set_rr(ldns_rr_list *rr_list, const ldns_rr *r, size_t count);
617
624 ldns_rr* ldns_rr_list_rr(const ldns_rr_list *rr_list, size_t nr);
625
630 ldns_rr_list* ldns_rr_list_new(void);
631
636 void ldns_rr_list_free(ldns_rr_list *rr_list);
637
642 void ldns_rr_list_deep_free(ldns_rr_list *rr_list);
643
651 bool ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right);
652
660 ldns_rr_list* ldns_rr_list_cat_clone(ldns_rr_list *left, ldns_rr_list *right);
661
668 bool ldns_rr_list_push_rr(ldns_rr_list *rr_list, const ldns_rr *rr);
669
676 bool ldns_rr_list_push_rr_list(ldns_rr_list *rr_list, const ldns_rr_list *push_list);
677
683 ldns_rr* ldns_rr_list_pop_rr(ldns_rr_list *rr_list);
684
691 ldns_rr_list* ldns_rr_list_pop_rr_list(ldns_rr_list *rr_list, size_t size);
692
700 bool ldns_rr_list_contains_rr(const ldns_rr_list *rr_list, ldns_rr *rr);
701
707 bool ldns_is_rrset(ldns_rr_list *rr_list);
708
715 bool ldns_rr_set_push_rr(ldns_rr_list *rr_list, ldns_rr *rr);
716
724 ldns_rr* ldns_rr_set_pop_rr(ldns_rr_list *rr_list);
725
731 ldns_rr_list *ldns_rr_list_pop_rrset(ldns_rr_list *rr_list);
732
733
739 ldns_rr_type ldns_get_rr_type_by_name(const char *name);
740
746 ldns_rr_class ldns_get_rr_class_by_name(const char *name);
747
753 ldns_rr* ldns_rr_clone(const ldns_rr *rr);
754
760 ldns_rr_list* ldns_rr_list_clone(const ldns_rr_list *rrlist);
761
767 void ldns_rr_list_sort(ldns_rr_list *unsorted);
768
777 int ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2);
778
787 int ldns_rr_compare_no_rdata(const ldns_rr *rr1, const ldns_rr *rr2);
788
797 int ldns_rr_compare_wire(ldns_buffer *rr1_buf, ldns_buffer *rr2_buf);
798
807 bool ldns_rr_compare_ds(const ldns_rr *rr1, const ldns_rr *rr2);
808
817 int ldns_rr_list_compare(const ldns_rr_list *rrl1, const ldns_rr_list *rrl2);
818
824 size_t ldns_rr_uncompressed_size(const ldns_rr *r);
825
831 void ldns_rr2canonical(ldns_rr *rr);
832
838 void ldns_rr_list2canonical(ldns_rr_list *rr_list);
839
845 uint8_t ldns_rr_label_count(ldns_rr *rr);
846
853 const ldns_rr_descriptor *ldns_rr_descript(uint16_t type);
854
861 size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor);
862
869 size_t ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor);
870
878 ldns_rdf_type ldns_rr_descriptor_field_type(const ldns_rr_descriptor *descriptor, size_t field);
879
891 ldns_rr_list *ldns_rr_list_subtype_by_rdf(ldns_rr_list *l, ldns_rdf *r, size_t pos);
892
901 ldns_rr_type ldns_rdf2rr_type(const ldns_rdf *rd);
902
910 ldns_rr_type
911 ldns_rr_list_type(const ldns_rr_list *rr_list);
912
920 ldns_rdf *
921 ldns_rr_list_owner(const ldns_rr_list *rr_list);
922
923 #ifdef __cplusplus
924 }
925 #endif
926
927 #endif /* LDNS_RR_H */
LDNS_RR_TYPE_SPF
Definition: rr.h:195
LDNS_RR_TYPE_ISDN
RFC1183.
Definition: rr.h:121
ldns_struct_buffer
implementation of buffers to ease operations
Definition: buffer.h:50
LDNS_RR_TYPE_MINFO
mailbox or mail list information
Definition: rr.h:109
LDNS_RR_TYPE_RT
RFC1183.
Definition: rr.h:123
ldns_rr_set_type
void ldns_rr_set_type(ldns_rr *rr, ldns_rr_type rr_type)
sets the type in the rr.
Definition: rr.c:792
LDNS_RR_TYPE_LAST
Definition: rr.h:233
ldns_rr_new_frm_fp_l
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)
creates a new rr from a file containing a string.
Definition: rr.c:680
ldns_rr_free
void ldns_rr_free(ldns_rr *rr)
frees an RR structure
Definition: rr.c:75
ldns_struct_rr_list::_rr_count
size_t _rr_count
Definition: rr.h:329
ldns_get_rr_class_by_name
ldns_rr_class ldns_get_rr_class_by_name(const char *name)
retrieves a class by looking up its name.
Definition: rr.c:2633
ldns_rr_new
ldns_rr * ldns_rr_new(void)
creates a new rr structure.
Definition: rr.c:24
LDNS_RR_TYPE_TKEY
Definition: rr.h:210
ldns_rr_list_sort
void ldns_rr_list_sort(ldns_rr_list *unsorted)
sorts an rr_list (canonical wire format).
Definition: rr.c:1479
LDNS_RR_TYPE_NXT
2535typecode
Definition: rr.h:141
LDNS_RR_TYPE_CAA
Definition: rr.h:222
LDNS_RR_TYPE_AFSDB
RFC1183.
Definition: rr.h:117
LDNS_RR_TYPE_CNAME
the canonical name for an alias
Definition: rr.h:91
LDNS_RR_TYPE_A
a host address
Definition: rr.h:83
LDNS_RR_TYPE_RRSIG
DNSSEC.
Definition: rr.h:173
ldns_rr_new_frm_str
ldns_status ldns_rr_new_frm_str(ldns_rr **n, const char *str, uint32_t default_ttl, ldns_rdf *origin, ldns_rdf **prev)
creates an rr from a string.
Definition: rr.c:649
rdata.h
Defines ldns_rdf and functions to manipulate those.
LDNS_RR_TYPE_URI
draft-faltstrom-uri-06
Definition: rr.h:221
ldns_rr_compare_wire
int ldns_rr_compare_wire(ldns_buffer *rr1_buf, ldns_buffer *rr2_buf)
compares the wireformat of two rrs, contained in the given buffers.
Definition: rr.c:1563
LDNS_RR_TYPE_OPT
Pseudo OPT record...
Definition: rr.h:163
LDNS_RR_CLASS_CH
Chaos class.
Definition: rr.h:52
ldns_rr_class
enum ldns_enum_rr_class ldns_rr_class
Definition: rr.h:64
LDNS_RR_COMPRESS
compression is allowed
Definition: rr.h:72
ldns_rdf_bitmap_known_rr_types_space
ldns_status ldns_rdf_bitmap_known_rr_types_space(ldns_rdf **rdf)
Create a rr type bitmap rdf providing enough space to set all known (to ldns) rr types.
Definition: rr.c:2520
ldns_struct_rr_list
List or Set of Resource Records.
Definition: rr.h:327
LDNS_RR_TYPE_NULL
a null RR (EXPERIMENTAL)
Definition: rr.h:101
ldns_struct_rr_descriptor::_compress
ldns_rr_compress _compress
Specifies whether compression can be used for dnames in this RR type.
Definition: rr.h:355
ldns_rr_descriptor_field_type
ldns_rdf_type ldns_rr_descriptor_field_type(const ldns_rr_descriptor *descriptor, size_t field)
returns the rdf type for the given rdata field number of the rr type for the given descriptor...
Definition: rr.c:2579
LDNS_RR_TYPE_MAILB
A request for mailbox-related records (MB, MG or MR)
Definition: rr.h:215
ldns_rr_compare
int ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2)
compares two rrs.
Definition: rr.c:1601
LDNS_RR_TYPE_PX
RFC2163.
Definition: rr.h:133
ldns_rr_uncompressed_size
size_t ldns_rr_uncompressed_size(const ldns_rr *r)
calculates the uncompressed size of an RR.
Definition: rr.c:1727
LDNS_RR_TYPE_GID
Definition: rr.h:199
LDNS_RR_TYPE_CERT
RFC2538.
Definition: rr.h:155
ldns_rr_descript
const ldns_rr_descriptor * ldns_rr_descript(uint16_t type)
returns the resource record descriptor for the given rr type.
Definition: rr.c:2535
ldns_rr_new_frm_type
ldns_rr * ldns_rr_new_frm_type(ldns_rr_type t)
creates a new rr structure, based on the given type.
Definition: rr.c:42
LDNS_RR_TYPE_KX
RFC2230.
Definition: rr.h:153
LDNS_RR_TYPE_COUNT
Definition: rr.h:234
ldns_rr_set_rd_count
void ldns_rr_set_rd_count(ldns_rr *rr, size_t count)
sets the rd_count in the rr.
Definition: rr.c:786
ldns_rr_push_rdf
signed char ldns_rr_push_rdf(ldns_rr *rr, const ldns_rdf *f)
sets rd_field member, it will be placed in the next available spot.
Definition: rr.c:821
LDNS_RR_TYPE_EUI48
Definition: rr.h:207
ldns_struct_rr::_rr_class
ldns_rr_class _rr_class
Class of the resource record.
Definition: rr.h:310
ldns_rr_get_type
ldns_rr_type ldns_rr_get_type(const ldns_rr *rr)
returns the type of the rr.
Definition: rr.c:907
ldns_rr_rdf
ldns_rdf * ldns_rr_rdf(const ldns_rr *rr, size_t nr)
returns the rdata field member counter.
Definition: rr.c:873
LDNS_RR_TYPE_ATMA
http://www.jhsoft.com/rfc/af-saa-0069.000.rtf
Definition: rr.h:149
ldns_struct_rr_descriptor::_maximum
uint8_t _maximum
Maximum number of rdata fields in the RRs of this type.
Definition: rr.h:349
LDNS_RR_TYPE_UINFO
Definition: rr.h:197
LDNS_RR_TYPE_L64
Definition: rr.h:204
ldns_rr_list_new
ldns_rr_list * ldns_rr_list_new(void)
creates a new rr_list structure.
Definition: rr.c:964
ldns_rr_set_class
void ldns_rr_set_class(ldns_rr *rr, ldns_rr_class rr_class)
sets the class in the rr.
Definition: rr.c:798
ldns_rr_list_subtype_by_rdf
ldns_rr_list * ldns_rr_list_subtype_by_rdf(ldns_rr_list *l, ldns_rdf *r, size_t pos)
Return the rr_list which matches the rdf at position field.
Definition: rr.c:1062
ldns_rr_set_rdf
ldns_rdf * ldns_rr_set_rdf(ldns_rr *rr, const ldns_rdf *f, size_t position)
sets a rdf member, it will be set on the position given.
Definition: rr.c:804
ldns_rr_list_compare
int ldns_rr_list_compare(const ldns_rr_list *rrl1, const ldns_rr_list *rrl2)
compares two rr listss.
Definition: rr.c:1700
LDNS_RR_TYPE_KEY
2535typecode
Definition: rr.h:131
ldns_rr_descriptor_maximum
size_t ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor)
returns the maximum number of rdata fields of the rr type this descriptor describes.
Definition: rr.c:2564
LDNS_RR_TYPE_DNSKEY
Definition: rr.h:175
LDNS_RR_TYPE_DHCID
Definition: rr.h:177
LDNS_RR_TYPE_EUI64
Definition: rr.h:208
LDNS_RR_TYPE_FIRST
Definition: rr.h:232
ldns_rr_list_pop_rr
ldns_rr * ldns_rr_list_pop_rr(ldns_rr_list *rr_list)
pops the last rr from an rrlist.
Definition: rr.c:1141
LDNS_RR_TYPE_CDS
draft-barwood-dnsop-ds-publis
Definition: rr.h:193
ldns_enum_rr_class
ldns_enum_rr_class
The different RR classes.
Definition: rr.h:47
ldns_struct_rr
Resource Record.
Definition: rr.h:299
LDNS_RR_TYPE_TXT
text strings
Definition: rr.h:113
LDNS_RR_TYPE_NSEC3PARAMS
Definition: rr.h:181
LDNS_RR_TYPE_MB
a mailbox domain name (EXPERIMENTAL)
Definition: rr.h:95
ldns_struct_rr::_rd_count
size_t _rd_count
Number of data fields.
Definition: rr.h:306
LDNS_RR_TYPE_AAAA
ipv6 address
Definition: rr.h:137
LDNS_RR_TYPE_SOA
marks the start of a zone of authority
Definition: rr.h:93
ldns_rr_pop_rdf
ldns_rdf * ldns_rr_pop_rdf(ldns_rr *rr)
removes a rd_field member, it will be popped from the last position.
Definition: rr.c:844
error.h
Defines error numbers and functions to translate those to a readable string.
ldns_rr_set_question
void ldns_rr_set_question(ldns_rr *rr, signed char question)
sets the question flag in the rr structure.
LDNS_RR_TYPE_NINFO
draft-reid-dnsext-zs
Definition: rr.h:187
LDNS_RR_TYPE_SSHFP
SSH Key Fingerprint.
Definition: rr.h:169
ldns_rr_rd_count
size_t ldns_rr_rd_count(const ldns_rr *rr)
returns the rd_count of an rr structure.
Definition: rr.c:901
ldns_rr_list_cat
signed char ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right)
concatenates two ldns_rr_lists together.
Definition: rr.c:1000
ldns_struct_rr_list::_rr_capacity
size_t _rr_capacity
Definition: rr.h:330
ldns_rdf_type
enum ldns_enum_rdf_type ldns_rdf_type
Definition: rdata.h:137
ldns_struct_rr_descriptor::_variable
ldns_rdf_type _variable
Special rdf types.
Definition: rr.h:353
LDNS_RR_TYPE_X25
RFC1183.
Definition: rr.h:119
LDNS_RR_TYPE_UNSPEC
Definition: rr.h:200
ldns_rr_list_rr_count
size_t ldns_rr_list_rr_count(const ldns_rr_list *rr_list)
returns the number of rr&#39;s in an rr_list.
Definition: rr.c:921
ldns_rr_list_pop_rrset
ldns_rr_list * ldns_rr_list_pop_rrset(ldns_rr_list *rr_list)
pops the first rrset from the list, the list must be sorted, so that all rr&#39;s from each rrset are nex...
Definition: rr.c:1311
LDNS_RR_TYPE_NID
Definition: rr.h:202
LDNS_RR_CLASS_FIRST
Definition: rr.h:60
ldns_rr_compare_no_rdata
int ldns_rr_compare_no_rdata(const ldns_rr *rr1, const ldns_rr *rr2)
compares two rrs, up to the rdata.
Definition: rr.c:1522
ldns_rr_list_deep_free
void ldns_rr_list_deep_free(ldns_rr_list *rr_list)
frees an rr_list structure and all rrs contained therein.
Definition: rr.c:984
ldns_rr_set_ttl
void ldns_rr_set_ttl(ldns_rr *rr, uint32_t ttl)
sets the ttl in the rr structure.
Definition: rr.c:780
ldns_rr_clone
ldns_rr * ldns_rr_clone(const ldns_rr *rr)
clones a rr and all its data
Definition: rr.c:1363
LDNS_RR_CLASS_NONE
None class, dynamic update.
Definition: rr.h:56
ldns_rr_list_type
ldns_rr_type ldns_rr_list_type(const ldns_rr_list *rr_list)
Returns the type of the first element of the RR If there are no elements present, 0 is returned...
Definition: rr.c:2670
ldns_rr_list_pop_rr_list
ldns_rr_list * ldns_rr_list_pop_rr_list(ldns_rr_list *rr_list, size_t size)
pops an rr_list of size s from an rrlist.
Definition: rr.c:1173
ldns_rr_is_question
signed char ldns_rr_is_question(const ldns_rr *rr)
returns the question flag of an rr structure.
Definition: rr.c:889
LDNS_RR_CLASS_IN
the Internet
Definition: rr.h:50
LDNS_RR_TYPE_WKS
a well known service description
Definition: rr.h:103
LDNS_RR_TYPE_TLSA
Definition: rr.h:182
LDNS_RR_TYPE_SINK
dnsind-kitchen-sink-02.txt
Definition: rr.h:161
ldns_struct_rr_descriptor
Contains all information about resource record types.
Definition: rr.h:340
LDNS_RR_TYPE_NSEC
Definition: rr.h:174
LDNS_RR_TYPE_RKEY
draft-reid-dnsext-rkey
Definition: rr.h:189
LDNS_RR_TYPE_IPSECKEY
IPsec Key.
Definition: rr.h:171
LDNS_RR_TYPE_DS
RFC4034, RFC3658.
Definition: rr.h:167
LDNS_RR_TYPE_NSAP
RFC1706.
Definition: rr.h:125
LDNS_RR_TYPE_UID
Definition: rr.h:198
LDNS_RR_TYPE_PTR
a domain name pointer
Definition: rr.h:105
LDNS_RR_CLASS_COUNT
Definition: rr.h:62
LDNS_RR_TYPE_LP
Definition: rr.h:205
ldns_rr_list_rr
ldns_rr * ldns_rr_list_rr(const ldns_rr_list *rr_list, size_t nr)
returns a specific rr of an rrlist.
Definition: rr.c:954
LDNS_RR_TYPE_A6
RFC2874.
Definition: rr.h:157
ldns_rr_list_owner
ldns_rdf * ldns_rr_list_owner(const ldns_rr_list *rr_list)
Returns the owner domain name rdf of the first element of the RR If there are no elements present...
Definition: rr.c:2680
LDNS_RR_TYPE_TSIG
Definition: rr.h:211
ldns_rr_list_cat_clone
ldns_rr_list * ldns_rr_list_cat_clone(ldns_rr_list *left, ldns_rr_list *right)
concatenates two ldns_rr_lists together, but makes clones of the rr&#39;s (instead of pointer copying)...
Definition: rr.c:1023
LDNS_RR_NO_COMPRESS
Definition: rr.h:73
LDNS_RR_TYPE_TA
DNSSEC Trust Authorities.
Definition: rr.h:225
LDNS_RR_TYPE_DLV
Definition: rr.h:227
LDNS_RR_TYPE_NSEC3
Definition: rr.h:179
LDNS_RR_TYPE_GPOS
RFC1712.
Definition: rr.h:135
ldns_rr_list_set_rr
ldns_rr * ldns_rr_list_set_rr(ldns_rr_list *rr_list, const ldns_rr *r, size_t count)
set a rr on a specific index in a ldns_rr_list
Definition: rr.c:931
LDNS_RR_TYPE_EID
draft-ietf-nimrod-dns-01.txt
Definition: rr.h:143
LDNS_RR_TYPE_MAILA
A request for mail agent RRs (Obsolete - see MX)
Definition: rr.h:217
LDNS_RR_TYPE_MG
a mail group member (EXPERIMENTAL)
Definition: rr.h:97
ldns_rr_label_count
uint8_t ldns_rr_label_count(ldns_rr *rr)
counts the number of labels of the ownername.
Definition: rr.c:1805
ldns_status
enum ldns_enum_status ldns_status
Definition: error.h:131
LDNS_RR_TYPE_MD
a mail destination (Obsolete - use MX)
Definition: rr.h:87
LDNS_RR_TYPE_SIG
2535typecode
Definition: rr.h:129
ldns_struct_rr_list::_rrs
ldns_rr ** _rrs
Definition: rr.h:331
ldns_rr_list_free
void ldns_rr_list_free(ldns_rr_list *rr_list)
frees an rr_list structure.
Definition: rr.c:975
buffer.h
This file contains the definition of ldns_buffer, and functions to manipulate those.
ldns_rr_new_frm_fp
ldns_status ldns_rr_new_frm_fp(ldns_rr **rr, FILE *fp, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev)
creates a new rr from a file containing a string.
Definition: rr.c:674
LDNS_RR_TYPE_LOC
LOC record RFC1876.
Definition: rr.h:139
ldns_rr_list_push_rr_list
signed char ldns_rr_list_push_rr_list(ldns_rr_list *rr_list, const ldns_rr_list *push_list)
pushes an rr_list to an rrlist.
Definition: rr.c:1127
ldns_struct_rr::_owner
ldns_rdf * _owner
Owner name, uncompressed.
Definition: rr.h:302
LDNS_RR_TYPE_SRV
SRV record RFC2782.
Definition: rr.h:147
ldns_rr_get_class
ldns_rr_class ldns_rr_get_class(const ldns_rr *rr)
returns the class of the rr.
Definition: rr.c:913
LDNS_RR_CLASS_HS
Hesiod (Dyer 87)
Definition: rr.h:54
LDNS_RR_TYPE_NSEC3PARAM
Definition: rr.h:180
ldns_is_rrset
signed char ldns_is_rrset(ldns_rr_list *rr_list)
checks if an rr_list is a rrset.
Definition: rr.c:1222
ldns_struct_rr_descriptor::_minimum
uint8_t _minimum
Minimum number of rdata fields in the RRs of this type.
Definition: rr.h:347
LDNS_RR_TYPE_HINFO
host information
Definition: rr.h:107
LDNS_RR_TYPE_NSAP_PTR
RFC1348.
Definition: rr.h:127
ldns_rr_set_push_rr
signed char ldns_rr_set_push_rr(ldns_rr_list *rr_list, ldns_rr *rr)
pushes an rr to an rrset (which really are rr_list&#39;s).
Definition: rr.c:1257
LDNS_RR_TYPE_L32
Definition: rr.h:203
LDNS_RR_TYPE_MR
a mail rename domain name (EXPERIMENTAL)
Definition: rr.h:99
ldns_struct_rr::_ttl
uint32_t _ttl
Time to live.
Definition: rr.h:304
LDNS_RR_TYPE_NAPTR
RFC2915.
Definition: rr.h:151
ldns_struct_rr_descriptor::_dname_count
uint8_t _dname_count
The number of DNAMEs in the _wireformat string, for parsing.
Definition: rr.h:357
ldns_struct_rdf
Resource record data field.
Definition: rdata.h:166
ldns_enum_rr_compress
ldns_enum_rr_compress
Used to specify whether compression is allowed.
Definition: rr.h:69
ldns_rr_list_set_rr_count
void ldns_rr_list_set_rr_count(ldns_rr_list *rr_list, size_t count)
sets the number of rr&#39;s in an rr_list.
Definition: rr.c:947
common.h
Common definitions for LDNS.
LDNS_RR_TYPE_APL
RFC3123.
Definition: rr.h:165
LDNS_RR_TYPE_HIP
Definition: rr.h:184
ldns_rdf_bitmap_known_rr_types
ldns_status ldns_rdf_bitmap_known_rr_types(ldns_rdf **rdf)
Create a rr type bitmap rdf with at least all known (to ldns) rr types set.
Definition: rr.c:2526
ldns_rr_compress
enum ldns_enum_rr_compress ldns_rr_compress
Definition: rr.h:75
ldns_enum_rr_type
ldns_enum_rr_type
The different RR types.
Definition: rr.h:80
ldns_rr_set_owner
void ldns_rr_set_owner(ldns_rr *rr, ldns_rdf *owner)
sets the owner in the rr structure.
Definition: rr.c:768
ldns_rr_type
enum ldns_enum_rr_type ldns_rr_type
Definition: rr.h:236
ldns_struct_rr_descriptor::_name
const char * _name
Textual name of the RR type.
Definition: rr.h:345
LDNS_RR_CLASS_LAST
Definition: rr.h:61
LDNS_RR_TYPE_NS
an authoritative name server
Definition: rr.h:85
ldns_rr2canonical
void ldns_rr2canonical(ldns_rr *rr)
converts each dname in a rr to its canonical form.
Definition: rr.c:1744
ldns_rr_list_push_rr
signed char ldns_rr_list_push_rr(ldns_rr_list *rr_list, const ldns_rr *rr)
pushes an rr to an rrlist.
Definition: rr.c:1096
ldns_struct_rr::_rdata_fields
ldns_rdf ** _rdata_fields
The array of rdata&#39;s.
Definition: rr.h:313
ldns_rr_new_question_frm_str
ldns_status ldns_rr_new_question_frm_str(ldns_rr **n, const char *str, ldns_rdf *origin, ldns_rdf **prev)
creates an rr for the question section from a string, i.e.
Definition: rr.c:662
ldns_struct_rr::_rr_question
signed char _rr_question
question rr [it would be nicer if thous is after _rd_count] ABI change: Fix this in next major releas...
Definition: rr.h:317
ldns_get_rr_type_by_name
ldns_rr_type ldns_get_rr_type_by_name(const char *name)
retrieves a rrtype by looking up its name.
Definition: rr.c:2593
ldns_rr_owner
ldns_rdf * ldns_rr_owner(const ldns_rr *rr)
returns the owner name of an rr structure.
Definition: rr.c:883
LDNS_RR_TYPE_AXFR
Definition: rr.h:213
LDNS_RR_CLASS_ANY
Any class.
Definition: rr.h:58
LDNS_RR_TYPE_TALINK
draft-ietf-dnsop-trust-history
Definition: rr.h:191
LDNS_RR_TYPE_MX
mail exchange
Definition: rr.h:111
ldns_rr_list2canonical
void ldns_rr_list2canonical(ldns_rr_list *rr_list)
converts each dname in each rr in a rr_list to its canonical form.
Definition: rr.c:1796
LDNS_RR_TYPE_RP
RFC1183.
Definition: rr.h:115
LDNS_RR_TYPE_IXFR
Definition: rr.h:212
ldns_rr_ttl
uint32_t ldns_rr_ttl(const ldns_rr *rr)
returns the ttl of an rr structure.
Definition: rr.c:895
ldns_struct_rr::_rr_type
ldns_rr_type _rr_type
the type of the RR.
Definition: rr.h:308
ldns_rr_set_pop_rr
ldns_rr * ldns_rr_set_pop_rr(ldns_rr_list *rr_list)
pops the last rr from an rrset.
Definition: rr.c:1305
LDNS_RR_TYPE_NIMLOC
draft-ietf-nimrod-dns-01.txt
Definition: rr.h:145
LDNS_RR_TYPE_DNAME
RFC2672.
Definition: rr.h:159
ldns_rr_compare_ds
signed char ldns_rr_compare_ds(const ldns_rr *rr1, const ldns_rr *rr2)
returns true of the given rr&#39;s are equal.
Definition: rr.c:1673
ldns_rdf2rr_type
ldns_rr_type ldns_rdf2rr_type(const ldns_rdf *rd)
convert an rdf of type LDNS_RDF_TYPE_TYPE to an actual LDNS_RR_TYPE.
Definition: rr.c:2653
LDNS_RR_TYPE_MF
a mail forwarder (Obsolete - use MX)
Definition: rr.h:89
LDNS_RR_TYPE_ANY
any type (wildcard)
Definition: rr.h:219
ldns_struct_rr_descriptor::_type
ldns_rr_type _type
Type of the RR that is described here.
Definition: rr.h:343
ldns_rr_descriptor_minimum
size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor)
returns the minimum number of rdata fields of the rr type this descriptor describes.
Definition: rr.c:2554
ldns_struct_rr_descriptor::_wireformat
const ldns_rdf_type * _wireformat
Wireformat specification for the rr, i.e.
Definition: rr.h:351
ldns_rr_list_clone
ldns_rr_list * ldns_rr_list_clone(const ldns_rr_list *rrlist)
clones an rrlist.
Definition: rr.c:1394
ldns_rr_list_contains_rr
signed char ldns_rr_list_contains_rr(const ldns_rr_list *rr_list, ldns_rr *rr)
returns true if the given rr is one of the rrs in the list, or if it is equal to one ...
Definition: rr.c:1203