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