xref: /openbsd/usr.bin/dig/lib/dns/include/dns/types.h (revision 38bad3e5)
1 /*
2  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
9  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
11  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
13  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14  * PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef DNS_TYPES_H
18 #define DNS_TYPES_H 1
19 
20 /*! \file dns/types.h
21  * \brief
22  * Including this file gives you type declarations suitable for use in
23  * .h files, which lets us avoid circular type reference problems.
24  * \brief
25  * To actually use a type or get declarations of its methods, you must
26  * include the appropriate .h file too.
27  */
28 
29 #include <stdio.h>
30 
31 #include <isc/types.h>
32 
33 typedef struct dns_acache			dns_acache_t;
34 typedef uint16_t				dns_cert_t;
35 typedef struct dns_compress			dns_compress_t;
36 typedef struct dns_db				dns_db_t;
37 typedef void					dns_dbnode_t;
38 typedef void					dns_dbversion_t;
39 typedef struct dns_decompress			dns_decompress_t;
40 typedef struct dns_ednsopt			dns_ednsopt_t;
41 typedef struct dns_fixedname			dns_fixedname_t;
42 typedef uint64_t				dns_masterstyle_flags_t;
43 typedef struct dns_message			dns_message_t;
44 typedef uint16_t				dns_messageid_t;
45 typedef isc_region_t				dns_label_t;
46 typedef struct dns_name				dns_name_t;
47 typedef ISC_LIST(dns_name_t)			dns_namelist_t;
48 typedef uint16_t				dns_opcode_t;
49 typedef unsigned char				dns_offsets_t[128];
50 typedef uint16_t				dns_rcode_t;
51 typedef struct dns_rdata			dns_rdata_t;
52 typedef uint16_t				dns_rdataclass_t;
53 typedef struct dns_rdatalist			dns_rdatalist_t;
54 typedef struct dns_rdataset			dns_rdataset_t;
55 typedef uint16_t				dns_rdatatype_t;
56 typedef uint8_t				dns_secalg_t;
57 typedef struct dns_tsigkey			dns_tsigkey_t;
58 typedef uint32_t				dns_ttl_t;
59 typedef struct dns_view				dns_view_t;
60 typedef struct dns_zone				dns_zone_t;
61 
62 typedef enum {
63 	dns_namereln_none = 0,
64 	dns_namereln_contains = 1,
65 	dns_namereln_subdomain = 2,
66 	dns_namereln_equal = 3,
67 	dns_namereln_commonancestor = 4
68 } dns_namereln_t;
69 
70 enum {
71 	dns_rdataclass_reserved0 = 0,
72 	dns_rdataclass_in = 1,
73 	dns_rdataclass_chaos = 3,
74 	dns_rdataclass_ch = 3,
75 	dns_rdataclass_hs = 4,
76 	dns_rdataclass_none = 254,
77 	dns_rdataclass_any = 255
78 };
79 
80 enum {
81 	dns_rdatatype_none = 0,
82 	dns_rdatatype_a = 1,
83 	dns_rdatatype_ns = 2,
84 	dns_rdatatype_md = 3,
85 	dns_rdatatype_mf = 4,
86 	dns_rdatatype_cname = 5,
87 	dns_rdatatype_soa = 6,
88 	dns_rdatatype_mb = 7,
89 	dns_rdatatype_mg = 8,
90 	dns_rdatatype_mr = 9,
91 	dns_rdatatype_null = 10,
92 	dns_rdatatype_wks = 11,
93 	dns_rdatatype_ptr = 12,
94 	dns_rdatatype_hinfo = 13,
95 	dns_rdatatype_minfo = 14,
96 	dns_rdatatype_mx = 15,
97 	dns_rdatatype_txt = 16,
98 	dns_rdatatype_rp = 17,
99 	dns_rdatatype_afsdb = 18,
100 	dns_rdatatype_x25 = 19,
101 	dns_rdatatype_isdn = 20,
102 	dns_rdatatype_rt = 21,
103 	dns_rdatatype_nsap = 22,
104 	dns_rdatatype_nsap_ptr = 23,
105 	dns_rdatatype_sig = 24,
106 	dns_rdatatype_key = 25,
107 	dns_rdatatype_px = 26,
108 	dns_rdatatype_gpos = 27,
109 	dns_rdatatype_aaaa = 28,
110 	dns_rdatatype_loc = 29,
111 	dns_rdatatype_nxt = 30,
112 	dns_rdatatype_srv = 33,
113 	dns_rdatatype_naptr = 35,
114 	dns_rdatatype_kx = 36,
115 	dns_rdatatype_cert = 37,
116 	dns_rdatatype_a6 = 38,
117 	dns_rdatatype_dname = 39,
118 	dns_rdatatype_sink = 40,
119 	dns_rdatatype_opt = 41,
120 	dns_rdatatype_apl = 42,
121 	dns_rdatatype_ds = 43,
122 	dns_rdatatype_sshfp = 44,
123 	dns_rdatatype_ipseckey = 45,
124 	dns_rdatatype_rrsig = 46,
125 	dns_rdatatype_nsec = 47,
126 	dns_rdatatype_dnskey = 48,
127 	dns_rdatatype_dhcid = 49,
128 	dns_rdatatype_nsec3 = 50,
129 	dns_rdatatype_nsec3param = 51,
130 	dns_rdatatype_tlsa = 52,
131 	dns_rdatatype_smimea = 53,
132 	dns_rdatatype_hip = 55,
133 	dns_rdatatype_ninfo = 56,
134 	dns_rdatatype_rkey = 57,
135 	dns_rdatatype_talink = 58,
136 	dns_rdatatype_cds = 59,
137 	dns_rdatatype_cdnskey = 60,
138 	dns_rdatatype_openpgpkey = 61,
139 	dns_rdatatype_csync = 62,
140 	dns_rdatatype_zonemd = 63,
141 	dns_rdatatype_svcb = 64,
142 	dns_rdatatype_https = 65,
143 	dns_rdatatype_spf = 99,
144 	dns_rdatatype_unspec = 103,
145 	dns_rdatatype_nid = 104,
146 	dns_rdatatype_l32 = 105,
147 	dns_rdatatype_l64 = 106,
148 	dns_rdatatype_lp = 107,
149 	dns_rdatatype_eui48 = 108,
150 	dns_rdatatype_eui64 = 109,
151 	dns_rdatatype_tkey = 249,
152 	dns_rdatatype_tsig = 250,
153 	dns_rdatatype_uri = 256,
154 	dns_rdatatype_caa = 257,
155 	dns_rdatatype_avc = 258,
156 	dns_rdatatype_doa = 259,
157 	dns_rdatatype_ta = 32768,
158 	dns_rdatatype_dlv = 32769,
159 	dns_rdatatype_keydata = 65533,
160 	dns_rdatatype_ixfr = 251,
161 	dns_rdatatype_axfr = 252,
162 	dns_rdatatype_mailb = 253,
163 	dns_rdatatype_maila = 254,
164 	dns_rdatatype_any = 255
165 };
166 
167 /*%
168  * rcodes.
169  */
170 enum {
171 	/*
172 	 * Standard rcodes.
173 	 */
174 	dns_rcode_noerror = 0,
175 #define dns_rcode_noerror		((dns_rcode_t)dns_rcode_noerror)
176 	dns_rcode_formerr = 1,
177 #define dns_rcode_formerr		((dns_rcode_t)dns_rcode_formerr)
178 	dns_rcode_servfail = 2,
179 #define dns_rcode_servfail		((dns_rcode_t)dns_rcode_servfail)
180 	dns_rcode_nxdomain = 3,
181 #define dns_rcode_nxdomain		((dns_rcode_t)dns_rcode_nxdomain)
182 	dns_rcode_notimp = 4,
183 #define dns_rcode_notimp		((dns_rcode_t)dns_rcode_notimp)
184 	dns_rcode_refused = 5,
185 #define dns_rcode_refused		((dns_rcode_t)dns_rcode_refused)
186 	dns_rcode_yxdomain = 6,
187 #define dns_rcode_yxdomain		((dns_rcode_t)dns_rcode_yxdomain)
188 	dns_rcode_yxrrset = 7,
189 #define dns_rcode_yxrrset		((dns_rcode_t)dns_rcode_yxrrset)
190 	dns_rcode_nxrrset = 8,
191 #define dns_rcode_nxrrset		((dns_rcode_t)dns_rcode_nxrrset)
192 	dns_rcode_notauth = 9,
193 #define dns_rcode_notauth		((dns_rcode_t)dns_rcode_notauth)
194 	dns_rcode_notzone = 10,
195 #define dns_rcode_notzone		((dns_rcode_t)dns_rcode_notzone)
196 	/*
197 	 * Extended rcodes.
198 	 */
199 	dns_rcode_badvers = 16,
200 #define dns_rcode_badvers		((dns_rcode_t)dns_rcode_badvers)
201 	dns_rcode_badcookie = 23
202 #define dns_rcode_badcookie		((dns_rcode_t)dns_rcode_badcookie)
203 	/* Private space [3841..4095] */
204 };
205 
206 /*%
207  * TSIG errors.
208  */
209 enum {
210 	dns_tsigerror_badsig = 16,
211 	dns_tsigerror_badkey = 17,
212 	dns_tsigerror_badtime = 18,
213 	dns_tsigerror_badmode = 19,
214 	dns_tsigerror_badname = 20,
215 	dns_tsigerror_badalg = 21,
216 	dns_tsigerror_badtrunc = 22
217 };
218 
219 /*%
220  * Opcodes.
221  */
222 enum {
223 	dns_opcode_query = 0,
224 #define dns_opcode_query		((dns_opcode_t)dns_opcode_query)
225 	dns_opcode_iquery = 1,
226 #define dns_opcode_iquery		((dns_opcode_t)dns_opcode_iquery)
227 	dns_opcode_status = 2,
228 #define dns_opcode_status		((dns_opcode_t)dns_opcode_status)
229 	dns_opcode_notify = 4,
230 #define dns_opcode_notify		((dns_opcode_t)dns_opcode_notify)
231 	dns_opcode_update = 5		/* dynamic update */
232 #define dns_opcode_update		((dns_opcode_t)dns_opcode_update)
233 };
234 
235 /*
236  * Functions.
237  */
238 typedef int
239 (*dns_rdatasetorderfunc_t)(const dns_rdata_t *, const void *);
240 
241 #endif /* DNS_TYPES_H */
242