xref: /openbsd/usr.bin/dig/lib/dns/include/dns/types.h (revision 407e2246)
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 uint16_t				dns_cert_t;
34 typedef struct dns_compress			dns_compress_t;
35 typedef void					dns_dbnode_t;
36 typedef void					dns_dbversion_t;
37 typedef struct dns_decompress			dns_decompress_t;
38 typedef struct dns_ednsopt			dns_ednsopt_t;
39 typedef struct dns_fixedname			dns_fixedname_t;
40 typedef uint64_t				dns_masterstyle_flags_t;
41 typedef struct dns_message			dns_message_t;
42 typedef uint16_t				dns_messageid_t;
43 typedef isc_region_t				dns_label_t;
44 typedef struct dns_name				dns_name_t;
45 typedef ISC_LIST(dns_name_t)			dns_namelist_t;
46 typedef uint16_t				dns_opcode_t;
47 typedef unsigned char				dns_offsets_t[128];
48 typedef uint16_t				dns_rcode_t;
49 typedef struct dns_rdata			dns_rdata_t;
50 typedef uint16_t				dns_rdataclass_t;
51 typedef struct dns_rdatalist			dns_rdatalist_t;
52 typedef struct dns_rdataset			dns_rdataset_t;
53 typedef uint16_t				dns_rdatatype_t;
54 typedef uint8_t				dns_secalg_t;
55 typedef struct dns_tsigkey			dns_tsigkey_t;
56 typedef uint32_t				dns_ttl_t;
57 
58 typedef enum {
59 	dns_namereln_none = 0,
60 	dns_namereln_contains = 1,
61 	dns_namereln_subdomain = 2,
62 	dns_namereln_equal = 3,
63 	dns_namereln_commonancestor = 4
64 } dns_namereln_t;
65 
66 enum {
67 	dns_rdataclass_reserved0 = 0,
68 	dns_rdataclass_in = 1,
69 	dns_rdataclass_chaos = 3,
70 	dns_rdataclass_ch = 3,
71 	dns_rdataclass_hs = 4,
72 	dns_rdataclass_none = 254,
73 	dns_rdataclass_any = 255
74 };
75 
76 enum {
77 	dns_rdatatype_none = 0,
78 	dns_rdatatype_a = 1,
79 	dns_rdatatype_ns = 2,
80 	dns_rdatatype_md = 3,
81 	dns_rdatatype_mf = 4,
82 	dns_rdatatype_cname = 5,
83 	dns_rdatatype_soa = 6,
84 	dns_rdatatype_mb = 7,
85 	dns_rdatatype_mg = 8,
86 	dns_rdatatype_mr = 9,
87 	dns_rdatatype_null = 10,
88 	dns_rdatatype_wks = 11,
89 	dns_rdatatype_ptr = 12,
90 	dns_rdatatype_hinfo = 13,
91 	dns_rdatatype_minfo = 14,
92 	dns_rdatatype_mx = 15,
93 	dns_rdatatype_txt = 16,
94 	dns_rdatatype_rp = 17,
95 	dns_rdatatype_afsdb = 18,
96 	dns_rdatatype_x25 = 19,
97 	dns_rdatatype_isdn = 20,
98 	dns_rdatatype_rt = 21,
99 	dns_rdatatype_nsap = 22,
100 	dns_rdatatype_nsap_ptr = 23,
101 	dns_rdatatype_sig = 24,
102 	dns_rdatatype_key = 25,
103 	dns_rdatatype_px = 26,
104 	dns_rdatatype_gpos = 27,
105 	dns_rdatatype_aaaa = 28,
106 	dns_rdatatype_loc = 29,
107 	dns_rdatatype_nxt = 30,
108 	dns_rdatatype_srv = 33,
109 	dns_rdatatype_naptr = 35,
110 	dns_rdatatype_kx = 36,
111 	dns_rdatatype_cert = 37,
112 	dns_rdatatype_a6 = 38,
113 	dns_rdatatype_dname = 39,
114 	dns_rdatatype_sink = 40,
115 	dns_rdatatype_opt = 41,
116 	dns_rdatatype_apl = 42,
117 	dns_rdatatype_ds = 43,
118 	dns_rdatatype_sshfp = 44,
119 	dns_rdatatype_ipseckey = 45,
120 	dns_rdatatype_rrsig = 46,
121 	dns_rdatatype_nsec = 47,
122 	dns_rdatatype_dnskey = 48,
123 	dns_rdatatype_dhcid = 49,
124 	dns_rdatatype_nsec3 = 50,
125 	dns_rdatatype_nsec3param = 51,
126 	dns_rdatatype_tlsa = 52,
127 	dns_rdatatype_smimea = 53,
128 	dns_rdatatype_hip = 55,
129 	dns_rdatatype_ninfo = 56,
130 	dns_rdatatype_rkey = 57,
131 	dns_rdatatype_talink = 58,
132 	dns_rdatatype_cds = 59,
133 	dns_rdatatype_cdnskey = 60,
134 	dns_rdatatype_openpgpkey = 61,
135 	dns_rdatatype_csync = 62,
136 	dns_rdatatype_zonemd = 63,
137 	dns_rdatatype_svcb = 64,
138 	dns_rdatatype_https = 65,
139 	dns_rdatatype_spf = 99,
140 	dns_rdatatype_unspec = 103,
141 	dns_rdatatype_nid = 104,
142 	dns_rdatatype_l32 = 105,
143 	dns_rdatatype_l64 = 106,
144 	dns_rdatatype_lp = 107,
145 	dns_rdatatype_eui48 = 108,
146 	dns_rdatatype_eui64 = 109,
147 	dns_rdatatype_tkey = 249,
148 	dns_rdatatype_tsig = 250,
149 	dns_rdatatype_uri = 256,
150 	dns_rdatatype_caa = 257,
151 	dns_rdatatype_avc = 258,
152 	dns_rdatatype_doa = 259,
153 	dns_rdatatype_resinfo = 261,
154 	dns_rdatatype_ta = 32768,
155 	dns_rdatatype_dlv = 32769,
156 	dns_rdatatype_keydata = 65533,
157 	dns_rdatatype_ixfr = 251,
158 	dns_rdatatype_axfr = 252,
159 	dns_rdatatype_mailb = 253,
160 	dns_rdatatype_maila = 254,
161 	dns_rdatatype_any = 255
162 };
163 
164 /*%
165  * rcodes.
166  */
167 enum {
168 	/*
169 	 * Standard rcodes.
170 	 */
171 	dns_rcode_noerror = 0,
172 #define dns_rcode_noerror		((dns_rcode_t)dns_rcode_noerror)
173 	dns_rcode_formerr = 1,
174 #define dns_rcode_formerr		((dns_rcode_t)dns_rcode_formerr)
175 	dns_rcode_servfail = 2,
176 #define dns_rcode_servfail		((dns_rcode_t)dns_rcode_servfail)
177 	dns_rcode_nxdomain = 3,
178 #define dns_rcode_nxdomain		((dns_rcode_t)dns_rcode_nxdomain)
179 	dns_rcode_notimp = 4,
180 #define dns_rcode_notimp		((dns_rcode_t)dns_rcode_notimp)
181 	dns_rcode_refused = 5,
182 #define dns_rcode_refused		((dns_rcode_t)dns_rcode_refused)
183 	dns_rcode_yxdomain = 6,
184 #define dns_rcode_yxdomain		((dns_rcode_t)dns_rcode_yxdomain)
185 	dns_rcode_yxrrset = 7,
186 #define dns_rcode_yxrrset		((dns_rcode_t)dns_rcode_yxrrset)
187 	dns_rcode_nxrrset = 8,
188 #define dns_rcode_nxrrset		((dns_rcode_t)dns_rcode_nxrrset)
189 	dns_rcode_notauth = 9,
190 #define dns_rcode_notauth		((dns_rcode_t)dns_rcode_notauth)
191 	dns_rcode_notzone = 10,
192 #define dns_rcode_notzone		((dns_rcode_t)dns_rcode_notzone)
193 	/*
194 	 * Extended rcodes.
195 	 */
196 	dns_rcode_badvers = 16,
197 #define dns_rcode_badvers		((dns_rcode_t)dns_rcode_badvers)
198 	dns_rcode_badcookie = 23
199 #define dns_rcode_badcookie		((dns_rcode_t)dns_rcode_badcookie)
200 	/* Private space [3841..4095] */
201 };
202 
203 /*%
204  * TSIG errors.
205  */
206 enum {
207 	dns_tsigerror_badsig = 16,
208 	dns_tsigerror_badkey = 17,
209 	dns_tsigerror_badtime = 18,
210 	dns_tsigerror_badmode = 19,
211 	dns_tsigerror_badname = 20,
212 	dns_tsigerror_badalg = 21,
213 	dns_tsigerror_badtrunc = 22
214 };
215 
216 /*%
217  * Opcodes.
218  */
219 enum {
220 	dns_opcode_query = 0,
221 #define dns_opcode_query		((dns_opcode_t)dns_opcode_query)
222 	dns_opcode_iquery = 1,
223 #define dns_opcode_iquery		((dns_opcode_t)dns_opcode_iquery)
224 	dns_opcode_status = 2,
225 #define dns_opcode_status		((dns_opcode_t)dns_opcode_status)
226 	dns_opcode_notify = 4,
227 #define dns_opcode_notify		((dns_opcode_t)dns_opcode_notify)
228 	dns_opcode_update = 5		/* dynamic update */
229 #define dns_opcode_update		((dns_opcode_t)dns_opcode_update)
230 };
231 
232 /*
233  * Functions.
234  */
235 typedef int
236 (*dns_rdatasetorderfunc_t)(const dns_rdata_t *, const void *);
237 
238 #endif /* DNS_TYPES_H */
239