OLD | NEW |
1 #ifndef _ARPA_NAMESER_H | 1 #ifndef _ARPA_NAMESER_H |
2 #define _ARPA_NAMESER_H | 2 #define _ARPA_NAMESER_H |
3 | 3 |
4 #ifdef __cplusplus | 4 #ifdef __cplusplus |
5 extern "C" { | 5 extern "C" { |
6 #endif | 6 #endif |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
11 #define __NAMESER» 19991006 | 11 #define __NAMESER 19991006 |
12 #define NS_PACKETSZ» 512 | 12 #define NS_PACKETSZ 512 |
13 #define NS_MAXDNAME» 1025 | 13 #define NS_MAXDNAME 1025 |
14 #define NS_MAXMSG» 65535 | 14 #define NS_MAXMSG 65535 |
15 #define NS_MAXCDNAME» 255 | 15 #define NS_MAXCDNAME 255 |
16 #define NS_MAXLABEL» 63 | 16 #define NS_MAXLABEL 63 |
17 #define NS_HFIXEDSZ» 12 | 17 #define NS_HFIXEDSZ 12 |
18 #define NS_QFIXEDSZ» 4 | 18 #define NS_QFIXEDSZ 4 |
19 #define NS_RRFIXEDSZ» 10 | 19 #define NS_RRFIXEDSZ 10 |
20 #define NS_INT32SZ» 4 | 20 #define NS_INT32SZ 4 |
21 #define NS_INT16SZ» 2 | 21 #define NS_INT16SZ 2 |
22 #define NS_INT8SZ» 1 | 22 #define NS_INT8SZ 1 |
23 #define NS_INADDRSZ» 4 | 23 #define NS_INADDRSZ 4 |
24 #define NS_IN6ADDRSZ» 16 | 24 #define NS_IN6ADDRSZ 16 |
25 #define NS_CMPRSFLGS» 0xc0 | 25 #define NS_CMPRSFLGS 0xc0 |
26 #define NS_DEFAULTPORT» 53 | 26 #define NS_DEFAULTPORT 53 |
27 | 27 |
28 typedef enum __ns_sect { | 28 typedef enum __ns_sect { |
29 » ns_s_qd = 0, | 29 ns_s_qd = 0, |
30 » ns_s_zn = 0, | 30 ns_s_zn = 0, |
31 » ns_s_an = 1, | 31 ns_s_an = 1, |
32 » ns_s_pr = 1, | 32 ns_s_pr = 1, |
33 » ns_s_ns = 2, | 33 ns_s_ns = 2, |
34 » ns_s_ud = 2, | 34 ns_s_ud = 2, |
35 » ns_s_ar = 3, | 35 ns_s_ar = 3, |
36 » ns_s_max = 4 | 36 ns_s_max = 4 |
37 } ns_sect; | 37 } ns_sect; |
38 | 38 |
39 typedef struct __ns_msg { | 39 typedef struct __ns_msg { |
40 » const unsigned char *_msg, *_eom; | 40 const unsigned char *_msg, *_eom; |
41 » uint16_t _id, _flags, _counts[ns_s_max]; | 41 uint16_t _id, _flags, _counts[ns_s_max]; |
42 » const unsigned char *_sections[ns_s_max]; | 42 const unsigned char* _sections[ns_s_max]; |
43 » ns_sect _sect; | 43 ns_sect _sect; |
44 » int _rrnum; | 44 int _rrnum; |
45 » const unsigned char *_msg_ptr; | 45 const unsigned char* _msg_ptr; |
46 } ns_msg; | 46 } ns_msg; |
47 | 47 |
48 struct _ns_flagdata { int mask, shift; }; | 48 struct _ns_flagdata { |
| 49 int mask, shift; |
| 50 }; |
49 extern const struct _ns_flagdata _ns_flagdata[]; | 51 extern const struct _ns_flagdata _ns_flagdata[]; |
50 | 52 |
51 #define ns_msg_id(handle) ((handle)._id + 0) | 53 #define ns_msg_id(handle) ((handle)._id + 0) |
52 #define ns_msg_base(handle) ((handle)._msg + 0) | 54 #define ns_msg_base(handle) ((handle)._msg + 0) |
53 #define ns_msg_end(handle) ((handle)._eom + 0) | 55 #define ns_msg_end(handle) ((handle)._eom + 0) |
54 #define ns_msg_size(handle) ((handle)._eom - (handle)._msg) | 56 #define ns_msg_size(handle) ((handle)._eom - (handle)._msg) |
55 #define ns_msg_count(handle, section) ((handle)._counts[section] + 0) | 57 #define ns_msg_count(handle, section) ((handle)._counts[section] + 0) |
56 #define ns_msg_getflag(handle, flag) \ | 58 #define ns_msg_getflag(handle, flag) \ |
57 » (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift
) | 59 (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift) |
58 | 60 |
59 typedef»struct __ns_rr { | 61 typedef struct __ns_rr { |
60 » char» » name[NS_MAXDNAME]; | 62 char name[NS_MAXDNAME]; |
61 » uint16_t» type; | 63 uint16_t type; |
62 » uint16_t» rr_class; | 64 uint16_t rr_class; |
63 » uint32_t» ttl; | 65 uint32_t ttl; |
64 » uint16_t» rdlength; | 66 uint16_t rdlength; |
65 » const unsigned char *rdata; | 67 const unsigned char* rdata; |
66 } ns_rr; | 68 } ns_rr; |
67 | 69 |
68 #define ns_rr_name(rr)» (((rr).name[0] != '\0') ? (rr).name : ".") | 70 #define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") |
69 #define ns_rr_type(rr)» ((ns_type)((rr).type + 0)) | 71 #define ns_rr_type(rr) ((ns_type)((rr).type + 0)) |
70 #define ns_rr_class(rr)»((ns_class)((rr).rr_class + 0)) | 72 #define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) |
71 #define ns_rr_ttl(rr)» ((rr).ttl + 0) | 73 #define ns_rr_ttl(rr) ((rr).ttl + 0) |
72 #define ns_rr_rdlen(rr)»((rr).rdlength + 0) | 74 #define ns_rr_rdlen(rr) ((rr).rdlength + 0) |
73 #define ns_rr_rdata(rr)»((rr).rdata + 0) | 75 #define ns_rr_rdata(rr) ((rr).rdata + 0) |
74 | 76 |
75 typedef enum __ns_flag { | 77 typedef enum __ns_flag { |
76 » ns_f_qr, | 78 ns_f_qr, |
77 » ns_f_opcode, | 79 ns_f_opcode, |
78 » ns_f_aa, | 80 ns_f_aa, |
79 » ns_f_tc, | 81 ns_f_tc, |
80 » ns_f_rd, | 82 ns_f_rd, |
81 » ns_f_ra, | 83 ns_f_ra, |
82 » ns_f_z, | 84 ns_f_z, |
83 » ns_f_ad, | 85 ns_f_ad, |
84 » ns_f_cd, | 86 ns_f_cd, |
85 » ns_f_rcode, | 87 ns_f_rcode, |
86 » ns_f_max | 88 ns_f_max |
87 } ns_flag; | 89 } ns_flag; |
88 | 90 |
89 typedef enum __ns_opcode { | 91 typedef enum __ns_opcode { |
90 » ns_o_query = 0, | 92 ns_o_query = 0, |
91 » ns_o_iquery = 1, | 93 ns_o_iquery = 1, |
92 » ns_o_status = 2, | 94 ns_o_status = 2, |
93 » ns_o_notify = 4, | 95 ns_o_notify = 4, |
94 » ns_o_update = 5, | 96 ns_o_update = 5, |
95 » ns_o_max = 6 | 97 ns_o_max = 6 |
96 } ns_opcode; | 98 } ns_opcode; |
97 | 99 |
98 typedef»enum __ns_rcode { | 100 typedef enum __ns_rcode { |
99 » ns_r_noerror = 0, | 101 ns_r_noerror = 0, |
100 » ns_r_formerr = 1, | 102 ns_r_formerr = 1, |
101 » ns_r_servfail = 2, | 103 ns_r_servfail = 2, |
102 » ns_r_nxdomain = 3, | 104 ns_r_nxdomain = 3, |
103 » ns_r_notimpl = 4, | 105 ns_r_notimpl = 4, |
104 » ns_r_refused = 5, | 106 ns_r_refused = 5, |
105 » ns_r_yxdomain = 6, | 107 ns_r_yxdomain = 6, |
106 » ns_r_yxrrset = 7, | 108 ns_r_yxrrset = 7, |
107 » ns_r_nxrrset = 8, | 109 ns_r_nxrrset = 8, |
108 » ns_r_notauth = 9, | 110 ns_r_notauth = 9, |
109 » ns_r_notzone = 10, | 111 ns_r_notzone = 10, |
110 » ns_r_max = 11, | 112 ns_r_max = 11, |
111 » ns_r_badvers = 16, | 113 ns_r_badvers = 16, |
112 » ns_r_badsig = 16, | 114 ns_r_badsig = 16, |
113 » ns_r_badkey = 17, | 115 ns_r_badkey = 17, |
114 » ns_r_badtime = 18 | 116 ns_r_badtime = 18 |
115 } ns_rcode; | 117 } ns_rcode; |
116 | 118 |
117 typedef enum __ns_update_operation { | 119 typedef enum __ns_update_operation { |
118 » ns_uop_delete = 0, | 120 ns_uop_delete = 0, |
119 » ns_uop_add = 1, | 121 ns_uop_add = 1, |
120 » ns_uop_max = 2 | 122 ns_uop_max = 2 |
121 } ns_update_operation; | 123 } ns_update_operation; |
122 | 124 |
123 struct ns_tsig_key { | 125 struct ns_tsig_key { |
124 char name[NS_MAXDNAME], alg[NS_MAXDNAME]; | 126 char name[NS_MAXDNAME], alg[NS_MAXDNAME]; |
125 unsigned char *data; | 127 unsigned char* data; |
126 int len; | 128 int len; |
127 }; | 129 }; |
128 typedef struct ns_tsig_key ns_tsig_key; | 130 typedef struct ns_tsig_key ns_tsig_key; |
129 | 131 |
130 struct ns_tcp_tsig_state { | 132 struct ns_tcp_tsig_state { |
131 » int counter; | 133 int counter; |
132 » struct dst_key *key; | 134 struct dst_key* key; |
133 » void *ctx; | 135 void* ctx; |
134 » unsigned char sig[NS_PACKETSZ]; | 136 unsigned char sig[NS_PACKETSZ]; |
135 » int siglen; | 137 int siglen; |
136 }; | 138 }; |
137 typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; | 139 typedef struct ns_tcp_tsig_state ns_tcp_tsig_state; |
138 | 140 |
139 #define NS_TSIG_FUDGE 300 | 141 #define NS_TSIG_FUDGE 300 |
140 #define NS_TSIG_TCP_COUNT 100 | 142 #define NS_TSIG_TCP_COUNT 100 |
141 #define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" | 143 #define NS_TSIG_ALG_HMAC_MD5 "HMAC-MD5.SIG-ALG.REG.INT" |
142 | 144 |
143 #define NS_TSIG_ERROR_NO_TSIG -10 | 145 #define NS_TSIG_ERROR_NO_TSIG -10 |
144 #define NS_TSIG_ERROR_NO_SPACE -11 | 146 #define NS_TSIG_ERROR_NO_SPACE -11 |
145 #define NS_TSIG_ERROR_FORMERR -12 | 147 #define NS_TSIG_ERROR_FORMERR -12 |
146 | 148 |
147 typedef enum __ns_type { | 149 typedef enum __ns_type { |
148 » ns_t_invalid = 0, | 150 ns_t_invalid = 0, |
149 » ns_t_a = 1, | 151 ns_t_a = 1, |
150 » ns_t_ns = 2, | 152 ns_t_ns = 2, |
151 » ns_t_md = 3, | 153 ns_t_md = 3, |
152 » ns_t_mf = 4, | 154 ns_t_mf = 4, |
153 » ns_t_cname = 5, | 155 ns_t_cname = 5, |
154 » ns_t_soa = 6, | 156 ns_t_soa = 6, |
155 » ns_t_mb = 7, | 157 ns_t_mb = 7, |
156 » ns_t_mg = 8, | 158 ns_t_mg = 8, |
157 » ns_t_mr = 9, | 159 ns_t_mr = 9, |
158 » ns_t_null = 10, | 160 ns_t_null = 10, |
159 » ns_t_wks = 11, | 161 ns_t_wks = 11, |
160 » ns_t_ptr = 12, | 162 ns_t_ptr = 12, |
161 » ns_t_hinfo = 13, | 163 ns_t_hinfo = 13, |
162 » ns_t_minfo = 14, | 164 ns_t_minfo = 14, |
163 » ns_t_mx = 15, | 165 ns_t_mx = 15, |
164 » ns_t_txt = 16, | 166 ns_t_txt = 16, |
165 » ns_t_rp = 17, | 167 ns_t_rp = 17, |
166 » ns_t_afsdb = 18, | 168 ns_t_afsdb = 18, |
167 » ns_t_x25 = 19, | 169 ns_t_x25 = 19, |
168 » ns_t_isdn = 20, | 170 ns_t_isdn = 20, |
169 » ns_t_rt = 21, | 171 ns_t_rt = 21, |
170 » ns_t_nsap = 22, | 172 ns_t_nsap = 22, |
171 » ns_t_nsap_ptr = 23, | 173 ns_t_nsap_ptr = 23, |
172 » ns_t_sig = 24, | 174 ns_t_sig = 24, |
173 » ns_t_key = 25, | 175 ns_t_key = 25, |
174 » ns_t_px = 26, | 176 ns_t_px = 26, |
175 » ns_t_gpos = 27, | 177 ns_t_gpos = 27, |
176 » ns_t_aaaa = 28, | 178 ns_t_aaaa = 28, |
177 » ns_t_loc = 29, | 179 ns_t_loc = 29, |
178 » ns_t_nxt = 30, | 180 ns_t_nxt = 30, |
179 » ns_t_eid = 31, | 181 ns_t_eid = 31, |
180 » ns_t_nimloc = 32, | 182 ns_t_nimloc = 32, |
181 » ns_t_srv = 33, | 183 ns_t_srv = 33, |
182 » ns_t_atma = 34, | 184 ns_t_atma = 34, |
183 » ns_t_naptr = 35, | 185 ns_t_naptr = 35, |
184 » ns_t_kx = 36, | 186 ns_t_kx = 36, |
185 » ns_t_cert = 37, | 187 ns_t_cert = 37, |
186 » ns_t_a6 = 38, | 188 ns_t_a6 = 38, |
187 » ns_t_dname = 39, | 189 ns_t_dname = 39, |
188 » ns_t_sink = 40, | 190 ns_t_sink = 40, |
189 » ns_t_opt = 41, | 191 ns_t_opt = 41, |
190 » ns_t_apl = 42, | 192 ns_t_apl = 42, |
191 » ns_t_tkey = 249, | 193 ns_t_tkey = 249, |
192 » ns_t_tsig = 250, | 194 ns_t_tsig = 250, |
193 » ns_t_ixfr = 251, | 195 ns_t_ixfr = 251, |
194 » ns_t_axfr = 252, | 196 ns_t_axfr = 252, |
195 » ns_t_mailb = 253, | 197 ns_t_mailb = 253, |
196 » ns_t_maila = 254, | 198 ns_t_maila = 254, |
197 » ns_t_any = 255, | 199 ns_t_any = 255, |
198 » ns_t_zxfr = 256, | 200 ns_t_zxfr = 256, |
199 » ns_t_max = 65536 | 201 ns_t_max = 65536 |
200 } ns_type; | 202 } ns_type; |
201 | 203 |
202 #define»ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \ | 204 #define ns_t_qt_p(t) \ |
203 » » (t) == ns_t_mailb || (t) == ns_t_maila) | 205 (ns_t_xfr_p(t) || (t) == ns_t_any || (t) == ns_t_mailb || (t) == ns_t_maila) |
204 #define»ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) | 206 #define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt) |
205 #define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) | 207 #define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t)) |
206 #define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) | 208 #define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr) |
207 #define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \ | 209 #define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || (t) == ns_t_zxfr) |
208 » » (t) == ns_t_zxfr) | |
209 | 210 |
210 typedef enum __ns_class { | 211 typedef enum __ns_class { |
211 » ns_c_invalid = 0, | 212 ns_c_invalid = 0, |
212 » ns_c_in = 1, | 213 ns_c_in = 1, |
213 » ns_c_2 = 2, | 214 ns_c_2 = 2, |
214 » ns_c_chaos = 3, | 215 ns_c_chaos = 3, |
215 » ns_c_hs = 4, | 216 ns_c_hs = 4, |
216 » ns_c_none = 254, | 217 ns_c_none = 254, |
217 » ns_c_any = 255, | 218 ns_c_any = 255, |
218 » ns_c_max = 65536 | 219 ns_c_max = 65536 |
219 } ns_class; | 220 } ns_class; |
220 | 221 |
221 typedef enum __ns_key_types { | 222 typedef enum __ns_key_types { |
222 » ns_kt_rsa = 1, | 223 ns_kt_rsa = 1, |
223 » ns_kt_dh = 2, | 224 ns_kt_dh = 2, |
224 » ns_kt_dsa = 3, | 225 ns_kt_dsa = 3, |
225 » ns_kt_private = 254 | 226 ns_kt_private = 254 |
226 } ns_key_types; | 227 } ns_key_types; |
227 | 228 |
228 typedef enum __ns_cert_types { | 229 typedef enum __ns_cert_types { |
229 » cert_t_pkix = 1, | 230 cert_t_pkix = 1, |
230 » cert_t_spki = 2, | 231 cert_t_spki = 2, |
231 » cert_t_pgp = 3, | 232 cert_t_pgp = 3, |
232 » cert_t_url = 253, | 233 cert_t_url = 253, |
233 » cert_t_oid = 254 | 234 cert_t_oid = 254 |
234 } ns_cert_types; | 235 } ns_cert_types; |
235 | 236 |
236 #define»NS_KEY_TYPEMASK»» 0xC000 | 237 #define NS_KEY_TYPEMASK 0xC000 |
237 #define»NS_KEY_TYPE_AUTH_CONF» 0x0000 | 238 #define NS_KEY_TYPE_AUTH_CONF 0x0000 |
238 #define»NS_KEY_TYPE_CONF_ONLY» 0x8000 | 239 #define NS_KEY_TYPE_CONF_ONLY 0x8000 |
239 #define»NS_KEY_TYPE_AUTH_ONLY» 0x4000 | 240 #define NS_KEY_TYPE_AUTH_ONLY 0x4000 |
240 #define»NS_KEY_TYPE_NO_KEY» 0xC000 | 241 #define NS_KEY_TYPE_NO_KEY 0xC000 |
241 #define»NS_KEY_NO_AUTH» » 0x8000 | 242 #define NS_KEY_NO_AUTH 0x8000 |
242 #define»NS_KEY_NO_CONF» » 0x4000 | 243 #define NS_KEY_NO_CONF 0x4000 |
243 #define»NS_KEY_RESERVED2» 0x2000 | 244 #define NS_KEY_RESERVED2 0x2000 |
244 #define»NS_KEY_EXTENDED_FLAGS» 0x1000 | 245 #define NS_KEY_EXTENDED_FLAGS 0x1000 |
245 #define»NS_KEY_RESERVED4» 0x0800 | 246 #define NS_KEY_RESERVED4 0x0800 |
246 #define»NS_KEY_RESERVED5» 0x0400 | 247 #define NS_KEY_RESERVED5 0x0400 |
247 #define»NS_KEY_NAME_TYPE» 0x0300 | 248 #define NS_KEY_NAME_TYPE 0x0300 |
248 #define»NS_KEY_NAME_USER» 0x0000 | 249 #define NS_KEY_NAME_USER 0x0000 |
249 #define»NS_KEY_NAME_ENTITY» 0x0200 | 250 #define NS_KEY_NAME_ENTITY 0x0200 |
250 #define»NS_KEY_NAME_ZONE» 0x0100 | 251 #define NS_KEY_NAME_ZONE 0x0100 |
251 #define»NS_KEY_NAME_RESERVED» 0x0300 | 252 #define NS_KEY_NAME_RESERVED 0x0300 |
252 #define»NS_KEY_RESERVED8» 0x0080 | 253 #define NS_KEY_RESERVED8 0x0080 |
253 #define»NS_KEY_RESERVED9» 0x0040 | 254 #define NS_KEY_RESERVED9 0x0040 |
254 #define»NS_KEY_RESERVED10» 0x0020 | 255 #define NS_KEY_RESERVED10 0x0020 |
255 #define»NS_KEY_RESERVED11» 0x0010 | 256 #define NS_KEY_RESERVED11 0x0010 |
256 #define»NS_KEY_SIGNATORYMASK» 0x000F | 257 #define NS_KEY_SIGNATORYMASK 0x000F |
257 #define»NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ | 258 #define NS_KEY_RESERVED_BITMASK \ |
258 » » » » NS_KEY_RESERVED4 | \ | 259 (NS_KEY_RESERVED2 | NS_KEY_RESERVED4 | NS_KEY_RESERVED5 | NS_KEY_RESERVED8 | \ |
259 » » » » NS_KEY_RESERVED5 | \ | 260 NS_KEY_RESERVED9 | NS_KEY_RESERVED10 | NS_KEY_RESERVED11) |
260 » » » » NS_KEY_RESERVED8 | \ | |
261 » » » » NS_KEY_RESERVED9 | \ | |
262 » » » » NS_KEY_RESERVED10 | \ | |
263 » » » » NS_KEY_RESERVED11 ) | |
264 #define NS_KEY_RESERVED_BITMASK2 0xFFFF | 261 #define NS_KEY_RESERVED_BITMASK2 0xFFFF |
265 #define»NS_ALG_MD5RSA» » 1 | 262 #define NS_ALG_MD5RSA 1 |
266 #define»NS_ALG_DH 2 | 263 #define NS_ALG_DH 2 |
267 #define»NS_ALG_DSA 3 | 264 #define NS_ALG_DSA 3 |
268 #define»NS_ALG_DSS NS_ALG_DSA | 265 #define NS_ALG_DSS NS_ALG_DSA |
269 #define»NS_ALG_EXPIRE_ONLY» 253 | 266 #define NS_ALG_EXPIRE_ONLY 253 |
270 #define»NS_ALG_PRIVATE_OID» 254 | 267 #define NS_ALG_PRIVATE_OID 254 |
271 | 268 |
272 #define NS_KEY_PROT_TLS 1 | 269 #define NS_KEY_PROT_TLS 1 |
273 #define NS_KEY_PROT_EMAIL 2 | 270 #define NS_KEY_PROT_EMAIL 2 |
274 #define NS_KEY_PROT_DNSSEC 3 | 271 #define NS_KEY_PROT_DNSSEC 3 |
275 #define NS_KEY_PROT_IPSEC 4 | 272 #define NS_KEY_PROT_IPSEC 4 |
276 #define NS_KEY_PROT_ANY»» 255 | 273 #define NS_KEY_PROT_ANY 255 |
277 | 274 |
278 #define»NS_MD5RSA_MIN_BITS» 512 | 275 #define NS_MD5RSA_MIN_BITS 512 |
279 #define»NS_MD5RSA_MAX_BITS» 4096 | 276 #define NS_MD5RSA_MAX_BITS 4096 |
280 #define»NS_MD5RSA_MAX_BYTES» ((NS_MD5RSA_MAX_BITS+7/8)*2+3) | 277 #define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS + 7 / 8) * 2 + 3) |
281 #define»NS_MD5RSA_MAX_BASE64» (((NS_MD5RSA_MAX_BYTES+2)/3)*4) | 278 #define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES + 2) / 3) * 4) |
282 #define NS_MD5RSA_MIN_SIZE» ((NS_MD5RSA_MIN_BITS+7)/8) | 279 #define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS + 7) / 8) |
283 #define NS_MD5RSA_MAX_SIZE» ((NS_MD5RSA_MAX_BITS+7)/8) | 280 #define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS + 7) / 8) |
284 | 281 |
285 #define NS_DSA_SIG_SIZE 41 | 282 #define NS_DSA_SIG_SIZE 41 |
286 #define NS_DSA_MIN_SIZE 213 | 283 #define NS_DSA_MIN_SIZE 213 |
287 #define NS_DSA_MAX_BYTES 405 | 284 #define NS_DSA_MAX_BYTES 405 |
288 | 285 |
289 #define»NS_SIG_TYPE» 0 | 286 #define NS_SIG_TYPE 0 |
290 #define»NS_SIG_ALG» 2 | 287 #define NS_SIG_ALG 2 |
291 #define»NS_SIG_LABELS» 3 | 288 #define NS_SIG_LABELS 3 |
292 #define»NS_SIG_OTTL» 4 | 289 #define NS_SIG_OTTL 4 |
293 #define»NS_SIG_EXPIR» 8 | 290 #define NS_SIG_EXPIR 8 |
294 #define»NS_SIG_SIGNED» 12 | 291 #define NS_SIG_SIGNED 12 |
295 #define»NS_SIG_FOOT» 16 | 292 #define NS_SIG_FOOT 16 |
296 #define»NS_SIG_SIGNER» 18 | 293 #define NS_SIG_SIGNER 18 |
297 #define»NS_NXT_BITS 8 | 294 #define NS_NXT_BITS 8 |
298 #define»NS_NXT_BIT_SET( n,p) (p[(n)/NS_NXT_BITS] |= (0x80>>((n)%NS_NXT_BITS))) | 295 #define NS_NXT_BIT_SET(n, p) \ |
299 #define»NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS))) | 296 (p[(n) / NS_NXT_BITS] |= (0x80 >> ((n) % NS_NXT_BITS))) |
300 #define»NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] & (0x80>>((n)%NS_NXT_BITS))) | 297 #define NS_NXT_BIT_CLEAR(n, p) \ |
| 298 (p[(n) / NS_NXT_BITS] &= ~(0x80 >> ((n) % NS_NXT_BITS))) |
| 299 #define NS_NXT_BIT_ISSET(n, p) \ |
| 300 (p[(n) / NS_NXT_BITS] & (0x80 >> ((n) % NS_NXT_BITS))) |
301 #define NS_NXT_MAX 127 | 301 #define NS_NXT_MAX 127 |
302 | 302 |
303 #define NS_OPT_DNSSEC_OK 0x8000U | 303 #define NS_OPT_DNSSEC_OK 0x8000U |
304 #define NS_OPT_NSID» » 3 | 304 #define NS_OPT_NSID 3 |
305 | 305 |
306 #define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2)) | 306 #define NS_GET16(s, cp) (void)((s) = ns_get16(((cp) += 2) - 2)) |
307 #define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4)) | 307 #define NS_GET32(l, cp) (void)((l) = ns_get32(((cp) += 4) - 4)) |
308 #define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2) | 308 #define NS_PUT16(s, cp) ns_put16((s), ((cp) += 2) - 2) |
309 #define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4) | 309 #define NS_PUT32(l, cp) ns_put32((l), ((cp) += 4) - 4) |
310 | 310 |
311 unsigned ns_get16(const unsigned char *); | 311 unsigned ns_get16(const unsigned char*); |
312 unsigned long ns_get32(const unsigned char *); | 312 unsigned long ns_get32(const unsigned char*); |
313 void ns_put16(unsigned, unsigned char *); | 313 void ns_put16(unsigned, unsigned char*); |
314 void ns_put32(unsigned long, unsigned char *); | 314 void ns_put32(unsigned long, unsigned char*); |
315 | 315 |
316 int ns_initparse(const unsigned char *, int, ns_msg *); | 316 int ns_initparse(const unsigned char*, int, ns_msg*); |
317 int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); | 317 int ns_parserr(ns_msg*, ns_sect, int, ns_rr*); |
318 int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int); | 318 int ns_skiprr(const unsigned char*, const unsigned char*, ns_sect, int); |
319 int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsig
ned char *, char *, size_t); | 319 int ns_name_uncompress(const unsigned char*, |
320 | 320 const unsigned char*, |
321 | 321 const unsigned char*, |
322 #define»__BIND» » 19950621 | 322 char*, |
| 323 size_t); |
| 324 |
| 325 #define __BIND 19950621 |
323 | 326 |
324 typedef struct { | 327 typedef struct { |
325 » unsigned» id :16; | 328 unsigned id : 16; |
326 #if __BYTE_ORDER == __BIG_ENDIAN | 329 #if __BYTE_ORDER == __BIG_ENDIAN |
327 » unsigned» qr: 1; | 330 unsigned qr : 1; |
328 » unsigned» opcode: 4; | 331 unsigned opcode : 4; |
329 » unsigned» aa: 1; | 332 unsigned aa : 1; |
330 » unsigned» tc: 1; | 333 unsigned tc : 1; |
331 » unsigned» rd: 1; | 334 unsigned rd : 1; |
332 » unsigned» ra: 1; | 335 unsigned ra : 1; |
333 » unsigned» unused :1; | 336 unsigned unused : 1; |
334 » unsigned» ad: 1; | 337 unsigned ad : 1; |
335 » unsigned» cd: 1; | 338 unsigned cd : 1; |
336 » unsigned» rcode :4; | 339 unsigned rcode : 4; |
337 #else | 340 #else |
338 » unsigned» rd :1; | 341 unsigned rd : 1; |
339 » unsigned» tc :1; | 342 unsigned tc : 1; |
340 » unsigned» aa :1; | 343 unsigned aa : 1; |
341 » unsigned» opcode :4; | 344 unsigned opcode : 4; |
342 » unsigned» qr :1; | 345 unsigned qr : 1; |
343 » unsigned» rcode :4; | 346 unsigned rcode : 4; |
344 » unsigned» cd: 1; | 347 unsigned cd : 1; |
345 » unsigned» ad: 1; | 348 unsigned ad : 1; |
346 » unsigned» unused :1; | 349 unsigned unused : 1; |
347 » unsigned» ra :1; | 350 unsigned ra : 1; |
348 #endif | 351 #endif |
349 » unsigned» qdcount :16; | 352 unsigned qdcount : 16; |
350 » unsigned» ancount :16; | 353 unsigned ancount : 16; |
351 » unsigned» nscount :16; | 354 unsigned nscount : 16; |
352 » unsigned» arcount :16; | 355 unsigned arcount : 16; |
353 } HEADER; | 356 } HEADER; |
354 | 357 |
355 #define PACKETSZ» NS_PACKETSZ | 358 #define PACKETSZ NS_PACKETSZ |
356 #define MAXDNAME» NS_MAXDNAME | 359 #define MAXDNAME NS_MAXDNAME |
357 #define MAXCDNAME» NS_MAXCDNAME | 360 #define MAXCDNAME NS_MAXCDNAME |
358 #define MAXLABEL» NS_MAXLABEL | 361 #define MAXLABEL NS_MAXLABEL |
359 #define»HFIXEDSZ» NS_HFIXEDSZ | 362 #define HFIXEDSZ NS_HFIXEDSZ |
360 #define QFIXEDSZ» NS_QFIXEDSZ | 363 #define QFIXEDSZ NS_QFIXEDSZ |
361 #define RRFIXEDSZ» NS_RRFIXEDSZ | 364 #define RRFIXEDSZ NS_RRFIXEDSZ |
362 #define»INT32SZ»» NS_INT32SZ | 365 #define INT32SZ NS_INT32SZ |
363 #define»INT16SZ»» NS_INT16SZ | 366 #define INT16SZ NS_INT16SZ |
364 #define INT8SZ» » NS_INT8SZ | 367 #define INT8SZ NS_INT8SZ |
365 #define»INADDRSZ» NS_INADDRSZ | 368 #define INADDRSZ NS_INADDRSZ |
366 #define»IN6ADDRSZ» NS_IN6ADDRSZ | 369 #define IN6ADDRSZ NS_IN6ADDRSZ |
367 #define»INDIR_MASK» NS_CMPRSFLGS | 370 #define INDIR_MASK NS_CMPRSFLGS |
368 #define NAMESERVER_PORT»NS_DEFAULTPORT | 371 #define NAMESERVER_PORT NS_DEFAULTPORT |
369 | 372 |
370 #define S_ZONE» » ns_s_zn | 373 #define S_ZONE ns_s_zn |
371 #define S_PREREQ» ns_s_pr | 374 #define S_PREREQ ns_s_pr |
372 #define S_UPDATE» ns_s_ud | 375 #define S_UPDATE ns_s_ud |
373 #define S_ADDT» » ns_s_ar | 376 #define S_ADDT ns_s_ar |
374 | 377 |
375 #define QUERY» » ns_o_query | 378 #define QUERY ns_o_query |
376 #define IQUERY» » ns_o_iquery | 379 #define IQUERY ns_o_iquery |
377 #define STATUS» » ns_o_status | 380 #define STATUS ns_o_status |
378 #define»NS_NOTIFY_OP» ns_o_notify | 381 #define NS_NOTIFY_OP ns_o_notify |
379 #define»NS_UPDATE_OP» ns_o_update | 382 #define NS_UPDATE_OP ns_o_update |
380 | 383 |
381 #define NOERROR»» ns_r_noerror | 384 #define NOERROR ns_r_noerror |
382 #define FORMERR»» ns_r_formerr | 385 #define FORMERR ns_r_formerr |
383 #define SERVFAIL» ns_r_servfail | 386 #define SERVFAIL ns_r_servfail |
384 #define NXDOMAIN» ns_r_nxdomain | 387 #define NXDOMAIN ns_r_nxdomain |
385 #define NOTIMP» » ns_r_notimpl | 388 #define NOTIMP ns_r_notimpl |
386 #define REFUSED»» ns_r_refused | 389 #define REFUSED ns_r_refused |
387 #define YXDOMAIN» ns_r_yxdomain | 390 #define YXDOMAIN ns_r_yxdomain |
388 #define YXRRSET»» ns_r_yxrrset | 391 #define YXRRSET ns_r_yxrrset |
389 #define NXRRSET»» ns_r_nxrrset | 392 #define NXRRSET ns_r_nxrrset |
390 #define NOTAUTH»» ns_r_notauth | 393 #define NOTAUTH ns_r_notauth |
391 #define NOTZONE»» ns_r_notzone | 394 #define NOTZONE ns_r_notzone |
392 | 395 |
393 #define DELETE» » ns_uop_delete | 396 #define DELETE ns_uop_delete |
394 #define ADD» » ns_uop_add | 397 #define ADD ns_uop_add |
395 | 398 |
396 #define T_A» » ns_t_a | 399 #define T_A ns_t_a |
397 #define T_NS» » ns_t_ns | 400 #define T_NS ns_t_ns |
398 #define T_MD» » ns_t_md | 401 #define T_MD ns_t_md |
399 #define T_MF» » ns_t_mf | 402 #define T_MF ns_t_mf |
400 #define T_CNAME»» ns_t_cname | 403 #define T_CNAME ns_t_cname |
401 #define T_SOA» » ns_t_soa | 404 #define T_SOA ns_t_soa |
402 #define T_MB» » ns_t_mb | 405 #define T_MB ns_t_mb |
403 #define T_MG» » ns_t_mg | 406 #define T_MG ns_t_mg |
404 #define T_MR» » ns_t_mr | 407 #define T_MR ns_t_mr |
405 #define T_NULL» » ns_t_null | 408 #define T_NULL ns_t_null |
406 #define T_WKS» » ns_t_wks | 409 #define T_WKS ns_t_wks |
407 #define T_PTR» » ns_t_ptr | 410 #define T_PTR ns_t_ptr |
408 #define T_HINFO»» ns_t_hinfo | 411 #define T_HINFO ns_t_hinfo |
409 #define T_MINFO»» ns_t_minfo | 412 #define T_MINFO ns_t_minfo |
410 #define T_MX» » ns_t_mx | 413 #define T_MX ns_t_mx |
411 #define T_TXT» » ns_t_txt | 414 #define T_TXT ns_t_txt |
412 #define»T_RP» » ns_t_rp | 415 #define T_RP ns_t_rp |
413 #define T_AFSDB»» ns_t_afsdb | 416 #define T_AFSDB ns_t_afsdb |
414 #define T_X25» » ns_t_x25 | 417 #define T_X25 ns_t_x25 |
415 #define T_ISDN» » ns_t_isdn | 418 #define T_ISDN ns_t_isdn |
416 #define T_RT» » ns_t_rt | 419 #define T_RT ns_t_rt |
417 #define T_NSAP» » ns_t_nsap | 420 #define T_NSAP ns_t_nsap |
418 #define T_NSAP_PTR» ns_t_nsap_ptr | 421 #define T_NSAP_PTR ns_t_nsap_ptr |
419 #define»T_SIG» » ns_t_sig | 422 #define T_SIG ns_t_sig |
420 #define»T_KEY» » ns_t_key | 423 #define T_KEY ns_t_key |
421 #define»T_PX» » ns_t_px | 424 #define T_PX ns_t_px |
422 #define»T_GPOS» » ns_t_gpos | 425 #define T_GPOS ns_t_gpos |
423 #define»T_AAAA» » ns_t_aaaa | 426 #define T_AAAA ns_t_aaaa |
424 #define»T_LOC» » ns_t_loc | 427 #define T_LOC ns_t_loc |
425 #define»T_NXT» » ns_t_nxt | 428 #define T_NXT ns_t_nxt |
426 #define»T_EID» » ns_t_eid | 429 #define T_EID ns_t_eid |
427 #define»T_NIMLOC» ns_t_nimloc | 430 #define T_NIMLOC ns_t_nimloc |
428 #define»T_SRV» » ns_t_srv | 431 #define T_SRV ns_t_srv |
429 #define T_ATMA» » ns_t_atma | 432 #define T_ATMA ns_t_atma |
430 #define T_NAPTR»» ns_t_naptr | 433 #define T_NAPTR ns_t_naptr |
431 #define T_A6» » ns_t_a6 | 434 #define T_A6 ns_t_a6 |
432 #define T_DNAME»» ns_t_dname | 435 #define T_DNAME ns_t_dname |
433 #define»T_TSIG» » ns_t_tsig | 436 #define T_TSIG ns_t_tsig |
434 #define»T_IXFR» » ns_t_ixfr | 437 #define T_IXFR ns_t_ixfr |
435 #define T_AXFR» » ns_t_axfr | 438 #define T_AXFR ns_t_axfr |
436 #define T_MAILB»» ns_t_mailb | 439 #define T_MAILB ns_t_mailb |
437 #define T_MAILA»» ns_t_maila | 440 #define T_MAILA ns_t_maila |
438 #define T_ANY» » ns_t_any | 441 #define T_ANY ns_t_any |
439 | 442 |
440 #define C_IN» » ns_c_in | 443 #define C_IN ns_c_in |
441 #define C_CHAOS»» ns_c_chaos | 444 #define C_CHAOS ns_c_chaos |
442 #define C_HS» » ns_c_hs | 445 #define C_HS ns_c_hs |
443 #define C_NONE» » ns_c_none | 446 #define C_NONE ns_c_none |
444 #define C_ANY» » ns_c_any | 447 #define C_ANY ns_c_any |
445 | 448 |
446 #define»GETSHORT» » NS_GET16 | 449 #define GETSHORT NS_GET16 |
447 #define»GETLONG»» » NS_GET32 | 450 #define GETLONG NS_GET32 |
448 #define»PUTSHORT» » NS_PUT16 | 451 #define PUTSHORT NS_PUT16 |
449 #define»PUTLONG»» » NS_PUT32 | 452 #define PUTLONG NS_PUT32 |
450 | 453 |
451 #ifdef __cplusplus | 454 #ifdef __cplusplus |
452 } | 455 } |
453 #endif | 456 #endif |
454 | 457 |
455 #endif | 458 #endif |
OLD | NEW |