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
27extern "C" {
28#endif
29
31#define LDNS_MAX_LABELLEN 63
33#define LDNS_MAX_DOMAINLEN 255
35#define LDNS_MAX_POINTERS 65535
37#define LDNS_RR_OVERHEAD 10
38
39
40
62
73
78{
166 LDNS_RR_TYPE_SSHFP = 44, /* RFC 4255 */
168 LDNS_RR_TYPE_IPSECKEY = 45, /* RFC 4025 */
170 LDNS_RR_TYPE_RRSIG = 46, /* RFC 4034 */
171 LDNS_RR_TYPE_NSEC = 47, /* RFC 4034 */
172 LDNS_RR_TYPE_DNSKEY = 48, /* RFC 4034 */
173
174 LDNS_RR_TYPE_DHCID = 49, /* RFC 4701 */
175 /* NSEC3 */
176 LDNS_RR_TYPE_NSEC3 = 50, /* RFC 5155 */
177 LDNS_RR_TYPE_NSEC3PARAM = 51, /* RFC 5155 */
179 LDNS_RR_TYPE_TLSA = 52, /* RFC 6698 */
180 LDNS_RR_TYPE_SMIMEA = 53, /* RFC 8162 */
181
182 LDNS_RR_TYPE_HIP = 55, /* RFC 5205 */
183
190 LDNS_RR_TYPE_CDS = 59, /* RFC 7344 */
191 LDNS_RR_TYPE_CDNSKEY = 60, /* RFC 7344 */
192 LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */
193 LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */
194 LDNS_RR_TYPE_ZONEMD = 63, /* RFC 8976 */
195 LDNS_RR_TYPE_SVCB = 64, /* RFC 9460 */
196 LDNS_RR_TYPE_HTTPS = 65, /* RFC 9460 */
197 LDNS_RR_TYPE_DSYNC = 66, /* RFC 9859 */
198 LDNS_RR_TYPE_HHIT = 67, /* draft-ietf-drip-registries-28 */
199 LDNS_RR_TYPE_BRID = 68, /* draft-ietf-drip-registries-28 */
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
213 LDNS_RR_TYPE_EUI48 = 108, /* RFC 7043 */
214 LDNS_RR_TYPE_EUI64 = 109, /* RFC 7043 */
215
216 LDNS_RR_TYPE_NXNAME = 128, /* RFC 9824 */
217
218 LDNS_RR_TYPE_TKEY = 249, /* RFC 2930 */
228 LDNS_RR_TYPE_URI = 256, /* RFC 7553 */
229 LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
230 LDNS_RR_TYPE_AVC = 258, /* Cisco's DNS-AS RR, see www.dns-as.org */
231 LDNS_RR_TYPE_DOA = 259, /* draft-durand-doa-over-dns */
232
235
238
241
244
247
250 /* RFC 4431, 5074, DNSSEC Lookaside Validation */
252
253 /* type codes from nsec3 experimental phase
254 LDNS_RR_TYPE_NSEC3 = 65324,
255 LDNS_RR_TYPE_NSEC3PARAMS = 65325, */
261
262/* The first fields are contiguous and can be referenced instantly */
263#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON (LDNS_RR_TYPE_IPN + 1)
264
327{
331 uint32_t _ttl;
333 size_t _rd_count;
338 /* everything in the rdata is in network order */
345};
346typedef struct ldns_struct_rr ldns_rr;
347
361
387
388
396
403
404
409ldns_rr* ldns_rr_new(void);
410
416
422void ldns_rr_free(ldns_rr *rr);
423
440ldns_status ldns_rr_new_frm_str(ldns_rr **n, const char *str,
441 uint32_t default_ttl, const ldns_rdf *origin,
442 ldns_rdf **prev);
443
458 const ldns_rdf *origin, ldns_rdf **prev);
459
474ldns_status ldns_rr_new_frm_fp(ldns_rr **rr, FILE *fp, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev);
475
491ldns_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);
492
499void ldns_rr_set_owner(ldns_rr *rr, ldns_rdf *owner);
500
507void ldns_rr_set_question(ldns_rr *rr, bool question);
508
515void ldns_rr_set_ttl(ldns_rr *rr, uint32_t ttl);
516
523void ldns_rr_set_rd_count(ldns_rr *rr, size_t count);
524
531void ldns_rr_set_type(ldns_rr *rr, ldns_rr_type rr_type);
532
539void ldns_rr_set_class(ldns_rr *rr, ldns_rr_class rr_class);
540
549ldns_rdf* ldns_rr_set_rdf(ldns_rr *rr, const ldns_rdf *f, size_t position);
550
558bool ldns_rr_push_rdf(ldns_rr *rr, const ldns_rdf *f);
559
567
574ldns_rdf* ldns_rr_rdf(const ldns_rr *rr, size_t nr);
575
581ldns_rdf* ldns_rr_owner(const ldns_rr *rr);
582
588bool ldns_rr_is_question(const ldns_rr *rr);
589
595uint32_t ldns_rr_ttl(const ldns_rr *rr);
596
602size_t ldns_rr_rd_count(const ldns_rr *rr);
603
610
617
618/* rr_lists */
619
625size_t ldns_rr_list_rr_count(const ldns_rr_list *rr_list);
626
633void ldns_rr_list_set_rr_count(ldns_rr_list *rr_list, size_t count);
634
643ldns_rr * ldns_rr_list_set_rr(ldns_rr_list *rr_list, const ldns_rr *r, size_t count);
644
651ldns_rr* ldns_rr_list_rr(const ldns_rr_list *rr_list, size_t nr);
652
658
663void ldns_rr_list_free(ldns_rr_list *rr_list);
664
670
678bool ldns_rr_list_cat(ldns_rr_list *left, const ldns_rr_list *right);
679
688
695bool ldns_rr_list_push_rr(ldns_rr_list *rr_list, const ldns_rr *rr);
696
703bool ldns_rr_list_push_rr_list(ldns_rr_list *rr_list, const ldns_rr_list *push_list);
704
711
719
727bool ldns_rr_list_contains_rr(const ldns_rr_list *rr_list, const ldns_rr *rr);
728
734bool ldns_is_rrset(const ldns_rr_list *rr_list);
735
741bool ldns_is_rrset_strict(const ldns_rr_list *rr_list);
742
749bool ldns_rr_set_push_rr(ldns_rr_list *rr_list, ldns_rr *rr);
750
759
766
767
773ldns_rr_type ldns_get_rr_type_by_name(const char *name);
774
781
787ldns_rr* ldns_rr_clone(const ldns_rr *rr);
788
795
801void ldns_rr_list_sort(ldns_rr_list *unsorted);
802
811int ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2);
812
821int ldns_rr_compare_no_rdata(const ldns_rr *rr1, const ldns_rr *rr2);
822
831int ldns_rr_compare_wire(const ldns_buffer *rr1_buf, const ldns_buffer *rr2_buf);
832
841bool ldns_rr_compare_ds(const ldns_rr *rr1, const ldns_rr *rr2);
842
851int ldns_rr_list_compare(const ldns_rr_list *rrl1, const ldns_rr_list *rrl2);
852
858size_t ldns_rr_uncompressed_size(const ldns_rr *r);
859
865void ldns_rr2canonical(ldns_rr *rr);
866
872void ldns_rr_list2canonical(const ldns_rr_list *rr_list);
873
879uint8_t ldns_rr_label_count(const ldns_rr *rr);
880
887const ldns_rr_descriptor *ldns_rr_descript(uint16_t type);
888
895size_t ldns_rr_descriptor_minimum(const ldns_rr_descriptor *descriptor);
896
903size_t ldns_rr_descriptor_maximum(const ldns_rr_descriptor *descriptor);
904
912ldns_rdf_type ldns_rr_descriptor_field_type(const ldns_rr_descriptor *descriptor, size_t field);
913
925ldns_rr_list *ldns_rr_list_subtype_by_rdf(const ldns_rr_list *l, const ldns_rdf *r, size_t pos);
926
936
945ldns_rr_list_type(const ldns_rr_list *rr_list);
946
954ldns_rdf *
955ldns_rr_list_owner(const ldns_rr_list *rr_list);
956
957#ifdef __cplusplus
958}
959#endif
960
961#endif /* LDNS_RR_H */
This file contains the definition of ldns_buffer, and functions to manipulate those.
Common definitions for LDNS.
Defines error numbers and functions to translate those to a readable string.
enum ldns_enum_status ldns_status
Definition error.h:149
Defines ldns_rdf and functions to manipulate those.
enum ldns_enum_rdf_type ldns_rdf_type
Definition rdata.h:157
void ldns_rr_list_free(ldns_rr_list *rr_list)
frees an rr_list structure.
Definition rr.c:1009
ldns_rr_class ldns_get_rr_class_by_name(const char *name)
retrieves a class by looking up its name.
Definition rr.c:2835
uint32_t ldns_rr_ttl(const ldns_rr *rr)
returns the ttl of an rr structure.
Definition rr.c:929
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:878
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:2855
ldns_enum_rr_compress
Used to specify whether compression is allowed.
Definition rr.h:67
@ LDNS_RR_NO_COMPRESS
Definition rr.h:70
@ LDNS_RR_COMPRESS
compression is allowed
Definition rr.h:69
void ldns_rr_list_deep_free(ldns_rr_list *rr_list)
frees an rr_list structure and all rrs contained therein.
Definition rr.c:1018
void ldns_rr_free(ldns_rr *rr)
frees an RR structure
Definition rr.c:81
void ldns_rr_set_owner(ldns_rr *rr, ldns_rdf *owner)
sets the owner in the rr structure.
Definition rr.c:802
ldns_rr_list * ldns_rr_list_new(void)
creates a new rr_list structure.
Definition rr.c:998
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:2872
ldns_rr * ldns_rr_list_pop_rr(ldns_rr_list *rr_list)
pops the last rr from an rrlist.
Definition rr.c:1175
ldns_status ldns_rr_new_frm_str(ldns_rr **n, const char *str, uint32_t default_ttl, const ldns_rdf *origin, ldns_rdf **prev)
creates an rr from a string.
Definition rr.c:670
ldns_rr * ldns_rr_set_pop_rr(ldns_rr_list *rr_list)
pops the last rr from an rrset.
Definition rr.c:1380
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:2882
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's).
Definition rr.c:1332
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's from each rrset are nex...
Definition rr.c:1386
ldns_rr * ldns_rr_new(void)
creates a new rr structure.
Definition rr.c:30
signed char ldns_rr_list_contains_rr(const ldns_rr_list *rr_list, const 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:1238
void ldns_rr_list_sort(ldns_rr_list *unsorted)
sorts an rr_list (canonical wire format).
Definition rr.c:1554
enum ldns_enum_rr_type ldns_rr_type
Definition rr.h:260
ldns_rr * ldns_rr_new_frm_type(ldns_rr_type t)
creates a new rr structure, based on the given type.
Definition rr.c:48
void ldns_rr_set_type(ldns_rr *rr, ldns_rr_type rr_type)
sets the type in the rr.
Definition rr.c:826
ldns_enum_rr_type
The different RR types.
Definition rr.h:78
@ LDNS_RR_TYPE_MF
a mail forwarder (Obsolete - use MX)
Definition rr.h:86
@ LDNS_RR_TYPE_CERT
RFC2538.
Definition rr.h:152
@ LDNS_RR_TYPE_RP
RFC1183.
Definition rr.h:112
@ LDNS_RR_TYPE_KX
RFC2230.
Definition rr.h:150
@ LDNS_RR_TYPE_DOA
Definition rr.h:231
@ LDNS_RR_TYPE_SPF
Definition rr.h:201
@ LDNS_RR_TYPE_DSYNC
Definition rr.h:197
@ LDNS_RR_TYPE_RESINFO
RFC 9606.
Definition rr.h:237
@ LDNS_RR_TYPE_OPT
OPT record RFC 6891.
Definition rr.h:160
@ LDNS_RR_TYPE_RRSIG
DNSSEC.
Definition rr.h:170
@ LDNS_RR_TYPE_SINK
dnsind-kitchen-sink-02.txt
Definition rr.h:158
@ LDNS_RR_TYPE_A
a host address
Definition rr.h:80
@ LDNS_RR_TYPE_HIP
Definition rr.h:182
@ LDNS_RR_TYPE_LP
Definition rr.h:211
@ LDNS_RR_TYPE_ISDN
RFC1183.
Definition rr.h:118
@ LDNS_RR_TYPE_IXFR
Definition rr.h:220
@ LDNS_RR_TYPE_MINFO
mailbox or mail list information
Definition rr.h:106
@ LDNS_RR_TYPE_L32
Definition rr.h:209
@ LDNS_RR_TYPE_GPOS
RFC1712.
Definition rr.h:132
@ LDNS_RR_TYPE_TKEY
Definition rr.h:218
@ LDNS_RR_TYPE_ZONEMD
Definition rr.h:194
@ LDNS_RR_TYPE_DNSKEY
Definition rr.h:172
@ LDNS_RR_TYPE_FIRST
Definition rr.h:256
@ LDNS_RR_TYPE_SOA
marks the start of a zone of authority
Definition rr.h:90
@ LDNS_RR_TYPE_UINFO
Definition rr.h:203
@ LDNS_RR_TYPE_SSHFP
SSH Key Fingerprint.
Definition rr.h:166
@ LDNS_RR_TYPE_TSIG
Definition rr.h:219
@ LDNS_RR_TYPE_X25
RFC1183.
Definition rr.h:116
@ LDNS_RR_TYPE_WKS
a well known service description
Definition rr.h:100
@ LDNS_RR_TYPE_TLSA
Definition rr.h:179
@ LDNS_RR_TYPE_PX
RFC2163.
Definition rr.h:130
@ LDNS_RR_TYPE_RT
RFC1183.
Definition rr.h:120
@ LDNS_RR_TYPE_NSEC
Definition rr.h:171
@ LDNS_RR_TYPE_DNAME
RFC2672.
Definition rr.h:156
@ LDNS_RR_TYPE_OPENPGPKEY
Definition rr.h:192
@ LDNS_RR_TYPE_COUNT
Definition rr.h:258
@ LDNS_RR_TYPE_AMTRELAY
RFC 8777.
Definition rr.h:234
@ LDNS_RR_TYPE_DS
RFC4034, RFC3658.
Definition rr.h:164
@ LDNS_RR_TYPE_KEY
2535typecode
Definition rr.h:128
@ LDNS_RR_TYPE_NULL
a null RR (EXPERIMENTAL)
Definition rr.h:98
@ LDNS_RR_TYPE_NSEC3PARAM
Definition rr.h:177
@ LDNS_RR_TYPE_RKEY
draft-reid-dnsext-rkey
Definition rr.h:187
@ LDNS_RR_TYPE_BRID
Definition rr.h:199
@ LDNS_RR_TYPE_LAST
Definition rr.h:257
@ LDNS_RR_TYPE_NXT
2535typecode
Definition rr.h:138
@ LDNS_RR_TYPE_DLV
Definition rr.h:251
@ LDNS_RR_TYPE_SIG
2535typecode
Definition rr.h:126
@ LDNS_RR_TYPE_CNAME
the canonical name for an alias
Definition rr.h:88
@ LDNS_RR_TYPE_NID
Definition rr.h:208
@ LDNS_RR_TYPE_NSEC3
Definition rr.h:176
@ LDNS_RR_TYPE_UID
Definition rr.h:204
@ LDNS_RR_TYPE_MAILA
A request for mail agent RRs (Obsolete - see MX)
Definition rr.h:225
@ LDNS_RR_TYPE_DHCID
Definition rr.h:174
@ LDNS_RR_TYPE_CDNSKEY
Definition rr.h:191
@ LDNS_RR_TYPE_NSEC3PARAMS
Definition rr.h:178
@ LDNS_RR_TYPE_TA
DNSSEC Trust Authorities.
Definition rr.h:249
@ LDNS_RR_TYPE_NXNAME
Definition rr.h:216
@ LDNS_RR_TYPE_IPN
https://www.iana.org/assignments/dns-parameters/IPN/ipn-completed-template
Definition rr.h:246
@ LDNS_RR_TYPE_LOC
LOC record RFC1876.
Definition rr.h:136
@ LDNS_RR_TYPE_TXT
text strings
Definition rr.h:110
@ LDNS_RR_TYPE_PTR
a domain name pointer
Definition rr.h:102
@ LDNS_RR_TYPE_AAAA
ipv6 address
Definition rr.h:134
@ LDNS_RR_TYPE_EUI64
Definition rr.h:214
@ LDNS_RR_TYPE_MD
a mail destination (Obsolete - use MX)
Definition rr.h:84
@ LDNS_RR_TYPE_A6
RFC2874.
Definition rr.h:154
@ LDNS_RR_TYPE_NS
an authoritative name server
Definition rr.h:82
@ LDNS_RR_TYPE_MR
a mail rename domain name (EXPERIMENTAL)
Definition rr.h:96
@ LDNS_RR_TYPE_AXFR
Definition rr.h:221
@ LDNS_RR_TYPE_ANY
any type (wildcard)
Definition rr.h:227
@ LDNS_RR_TYPE_WALLET
https://iana.org/assignments/dns-parameters/WALLET/wallet-completed-template
Definition rr.h:240
@ LDNS_RR_TYPE_CAA
Definition rr.h:229
@ LDNS_RR_TYPE_HHIT
Definition rr.h:198
@ LDNS_RR_TYPE_CLA
https://www.iana.org/assignments/dns-parameters/CLA/cla-completed-template
Definition rr.h:243
@ LDNS_RR_TYPE_SVCB
Definition rr.h:195
@ LDNS_RR_TYPE_EUI48
Definition rr.h:213
@ LDNS_RR_TYPE_HTTPS
Definition rr.h:196
@ LDNS_RR_TYPE_MB
a mailbox domain name (EXPERIMENTAL)
Definition rr.h:92
@ LDNS_RR_TYPE_NINFO
draft-reid-dnsext-zs
Definition rr.h:185
@ LDNS_RR_TYPE_TALINK
draft-ietf-dnsop-trust-history
Definition rr.h:189
@ LDNS_RR_TYPE_ATMA
http://www.jhsoft.com/rfc/af-saa-0069.000.rtf
Definition rr.h:146
@ LDNS_RR_TYPE_HINFO
host information
Definition rr.h:104
@ LDNS_RR_TYPE_CSYNC
Definition rr.h:193
@ LDNS_RR_TYPE_EID
draft-ietf-nimrod-dns-01.txt
Definition rr.h:140
@ LDNS_RR_TYPE_AFSDB
RFC1183.
Definition rr.h:114
@ LDNS_RR_TYPE_L64
Definition rr.h:210
@ LDNS_RR_TYPE_NSAP
RFC1706.
Definition rr.h:122
@ LDNS_RR_TYPE_URI
Definition rr.h:228
@ LDNS_RR_TYPE_AVC
Definition rr.h:230
@ LDNS_RR_TYPE_CDS
Definition rr.h:190
@ LDNS_RR_TYPE_NAPTR
RFC2915.
Definition rr.h:148
@ LDNS_RR_TYPE_SMIMEA
Definition rr.h:180
@ LDNS_RR_TYPE_SRV
SRV record RFC2782.
Definition rr.h:144
@ LDNS_RR_TYPE_IPSECKEY
IPsec Key.
Definition rr.h:168
@ LDNS_RR_TYPE_MAILB
A request for mailbox-related records (MB, MG or MR)
Definition rr.h:223
@ LDNS_RR_TYPE_APL
RFC3123.
Definition rr.h:162
@ LDNS_RR_TYPE_MX
mail exchange
Definition rr.h:108
@ LDNS_RR_TYPE_NIMLOC
draft-ietf-nimrod-dns-01.txt
Definition rr.h:142
@ LDNS_RR_TYPE_GID
Definition rr.h:205
@ LDNS_RR_TYPE_MG
a mail group member (EXPERIMENTAL)
Definition rr.h:94
@ LDNS_RR_TYPE_UNSPEC
Definition rr.h:206
@ LDNS_RR_TYPE_NSAP_PTR
RFC1348.
Definition rr.h:124
ldns_rr_list * ldns_rr_list_cat_clone(const ldns_rr_list *left, const ldns_rr_list *right)
concatenates two ldns_rr_lists together, but makes clones of the rr's (instead of pointer copying).
Definition rr.c:1057
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:1130
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:1161
signed char ldns_rr_is_question(const ldns_rr *rr)
returns the question flag of an rr structure.
Definition rr.c:923
void ldns_rr2canonical(ldns_rr *rr)
converts each dname in a rr to its canonical form.
Definition rr.c:1827
size_t ldns_rr_rd_count(const ldns_rr *rr)
returns the rd_count of an rr structure.
Definition rr.c:935
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:2781
ldns_rdf * ldns_rr_rdf(const ldns_rr *rr, size_t nr)
returns the rdata field member counter.
Definition rr.c:907
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:1208
ldns_rr_list * ldns_rr_list_subtype_by_rdf(const ldns_rr_list *l, const ldns_rdf *r, size_t pos)
Return the rr_list which matches the rdf at position field.
Definition rr.c:1096
uint8_t ldns_rr_label_count(const ldns_rr *rr)
counts the number of labels of the ownername.
Definition rr.c:1888
size_t ldns_rr_list_rr_count(const ldns_rr_list *rr_list)
returns the number of rr's in an rr_list.
Definition rr.c:955
int ldns_rr_compare_wire(const ldns_buffer *rr1_buf, const ldns_buffer *rr2_buf)
compares the wireformat of two rrs, contained in the given buffers.
Definition rr.c:1638
void ldns_rr_list2canonical(const ldns_rr_list *rr_list)
converts each dname in each rr in a rr_list to its canonical form.
Definition rr.c:1879
ldns_rr_type ldns_rr_get_type(const ldns_rr *rr)
returns the type of the rr.
Definition rr.c:941
void ldns_rr_set_ttl(ldns_rr *rr, uint32_t ttl)
sets the ttl in the rr structure.
Definition rr.c:814
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:838
ldns_rr * ldns_rr_clone(const ldns_rr *rr)
clones a rr and all its data
Definition rr.c:1438
void ldns_rr_set_question(ldns_rr *rr, signed char question)
sets the question flag in the rr structure.
Definition rr.c:808
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:2766
signed char ldns_rr_compare_ds(const ldns_rr *rr1, const ldns_rr *rr2)
returns true of the given rr's are equal.
Definition rr.c:1750
int ldns_rr_compare_no_rdata(const ldns_rr *rr1, const ldns_rr *rr2)
compares two rrs, up to the rdata.
Definition rr.c:1597
ldns_rr_class ldns_rr_get_class(const ldns_rr *rr)
returns the class of the rr.
Definition rr.c:947
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:965
enum ldns_enum_rr_class ldns_rr_class
Definition rr.h:61
void ldns_rr_set_rd_count(ldns_rr *rr, size_t count)
sets the rd_count in the rr.
Definition rr.c:820
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:988
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:713
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:2722
void ldns_rr_set_class(ldns_rr *rr, ldns_rr_class rr_class)
sets the class in the rr.
Definition rr.c:832
signed char ldns_is_rrset(const ldns_rr_list *rr_list)
checks if an rr_list is a rrset.
Definition rr.c:1257
signed char ldns_rr_list_cat(ldns_rr_list *left, const ldns_rr_list *right)
concatenates two ldns_rr_lists together.
Definition rr.c:1034
int ldns_rr_list_compare(const ldns_rr_list *rrl1, const ldns_rr_list *rrl2)
compares two rr lists.
Definition rr.c:1783
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:794
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:855
ldns_rr_list * ldns_rr_list_clone(const ldns_rr_list *rrlist)
clones an rrlist.
Definition rr.c:1469
ldns_rdf * ldns_rr_owner(const ldns_rr *rr)
returns the owner name of an rr structure.
Definition rr.c:917
int ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2)
compares two rrs.
Definition rr.c:1676
ldns_status ldns_rr_new_question_frm_str(ldns_rr **n, const char *str, const ldns_rdf *origin, ldns_rdf **prev)
creates an rr for the question section from a string, i.e.
Definition rr.c:684
void ldns_rr_list_set_rr_count(ldns_rr_list *rr_list, size_t count)
sets the number of rr's in an rr_list.
Definition rr.c:981
enum ldns_enum_rr_compress ldns_rr_compress
Definition rr.h:72
ldns_enum_rr_class
The different RR classes.
Definition rr.h:45
@ LDNS_RR_CLASS_NONE
None class, dynamic update.
Definition rr.h:53
@ LDNS_RR_CLASS_IN
the Internet
Definition rr.h:47
@ LDNS_RR_CLASS_LAST
Definition rr.h:58
@ LDNS_RR_CLASS_CH
Chaos class.
Definition rr.h:49
@ LDNS_RR_CLASS_COUNT
Definition rr.h:59
@ LDNS_RR_CLASS_HS
Hesiod (Dyer 87)
Definition rr.h:51
@ LDNS_RR_CLASS_ANY
Any class.
Definition rr.h:55
@ LDNS_RR_CLASS_FIRST
Definition rr.h:57
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:2756
const ldns_rr_descriptor * ldns_rr_descript(uint16_t type)
returns the resource record descriptor for the given rr type.
Definition rr.c:2737
size_t ldns_rr_uncompressed_size(const ldns_rr *r)
calculates the uncompressed size of an RR.
Definition rr.c:1810
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:2728
signed char ldns_is_rrset_strict(const ldns_rr_list *rr_list)
checks if an rr_list is a rrset, including checking for TTL.
Definition rr.c:1292
ldns_rr_type ldns_get_rr_type_by_name(const char *name)
retrieves a rrtype by looking up its name.
Definition rr.c:2795
implementation of buffers to ease operations
Definition buffer.h:51
Resource record data field.
Definition rdata.h:203
Contains all information about resource record types.
Definition rr.h:368
uint8_t _maximum
Maximum number of rdata fields in the RRs of this type.
Definition rr.h:376
ldns_rr_compress _compress
Specifies whether compression can be used for dnames in this RR type.
Definition rr.h:382
const char * _name
Textual name of the RR type.
Definition rr.h:372
ldns_rdf_type _variable
Special rdf types.
Definition rr.h:380
ldns_rr_type _type
Type of the RR that is described here.
Definition rr.h:370
uint8_t _dname_count
The number of DNAMEs in the _wireformat string, for parsing.
Definition rr.h:384
uint8_t _minimum
Minimum number of rdata fields in the RRs of this type.
Definition rr.h:374
const ldns_rdf_type * _wireformat
Wireformat specification for the rr, i.e.
Definition rr.h:378
List or Set of Resource Records.
Definition rr.h:355
size_t _rr_capacity
Definition rr.h:357
ldns_rr ** _rrs
Definition rr.h:358
size_t _rr_count
Definition rr.h:356
Resource Record.
Definition rr.h:327
ldns_rr_type _rr_type
the type of the RR.
Definition rr.h:335
ldns_rdf * _owner
Owner name, uncompressed.
Definition rr.h:329
ldns_rdf ** _rdata_fields
The array of rdata's.
Definition rr.h:340
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:344
uint32_t _ttl
Time to live
Definition rr.h:331
ldns_rr_class _rr_class
Class of the resource record.
Definition rr.h:337
size_t _rd_count
Number of data fields.
Definition rr.h:333