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