]> git.ipfire.org Git - thirdparty/squid.git/blob - src/enums.h
Merged from trunk.
[thirdparty/squid.git] / src / enums.h
1
2 /*
3 * $Id: enums.h,v 1.262 2008/02/26 21:49:34 amosjeffries Exp $
4 *
5 *
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
8 *
9 * Squid is the result of efforts by numerous individuals from
10 * the Internet community; see the CONTRIBUTORS file for full
11 * details. Many organizations have provided support for Squid's
12 * development; see the SPONSORS file for full details. Squid is
13 * Copyrighted (C) 2001 by the Regents of the University of
14 * California; see the COPYRIGHT file for full details. Squid
15 * incorporates software developed and/or copyrighted by other
16 * sources; see the CREDITS file for full details.
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
27 *
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
31 *
32 */
33
34 #ifndef SQUID_ENUMS_H
35 #define SQUID_ENUMS_H
36
37 typedef enum {
38 LOG_TAG_NONE,
39 LOG_TCP_HIT,
40 LOG_TCP_MISS,
41 LOG_TCP_REFRESH_UNMODIFIED, // refresh from origin revalidated existing entry
42 LOG_TCP_REFRESH_FAIL, // refresh from origin failed
43 LOG_TCP_REFRESH_MODIFIED, // refresh from origin replaced existing entry
44 LOG_TCP_CLIENT_REFRESH_MISS,
45 LOG_TCP_IMS_HIT,
46 LOG_TCP_SWAPFAIL_MISS,
47 LOG_TCP_NEGATIVE_HIT,
48 LOG_TCP_MEM_HIT,
49 LOG_TCP_DENIED,
50 LOG_TCP_DENIED_REPLY,
51 LOG_TCP_OFFLINE_HIT,
52 #if LOG_TCP_REDIRECTS
53 LOG_TCP_REDIRECT,
54 #endif
55 LOG_UDP_HIT,
56 LOG_UDP_MISS,
57 LOG_UDP_DENIED,
58 LOG_UDP_INVALID,
59 LOG_UDP_MISS_NOFETCH,
60 LOG_ICP_QUERY,
61 LOG_TYPE_MAX
62 } log_type;
63
64 typedef enum {
65 ERR_NONE,
66 ERR_READ_TIMEOUT,
67 ERR_LIFETIME_EXP,
68 ERR_READ_ERROR,
69 ERR_WRITE_ERROR,
70 ERR_SHUTTING_DOWN,
71 ERR_CONNECT_FAIL,
72 ERR_SECURE_CONNECT_FAIL,
73 ERR_INVALID_REQ,
74 ERR_UNSUP_REQ,
75 ERR_INVALID_URL,
76 ERR_SOCKET_FAILURE,
77 ERR_DNS_FAIL,
78 ERR_CANNOT_FORWARD,
79 ERR_FORWARDING_DENIED,
80 ERR_NO_RELAY,
81 ERR_ZERO_SIZE_OBJECT,
82 ERR_FTP_DISABLED,
83 ERR_FTP_FAILURE,
84 ERR_URN_RESOLVE,
85 ERR_ACCESS_DENIED,
86 ERR_CACHE_ACCESS_DENIED,
87 ERR_CACHE_MGR_ACCESS_DENIED,
88 ERR_SQUID_SIGNATURE, /* not really an error */
89 ERR_FTP_PUT_CREATED, /* !error,a note that the file was created */
90 ERR_FTP_PUT_MODIFIED, /* modified, !created */
91 ERR_FTP_PUT_ERROR,
92 ERR_FTP_NOT_FOUND,
93 ERR_FTP_FORBIDDEN,
94 ERR_FTP_UNAVAILABLE,
95 ERR_ONLY_IF_CACHED_MISS, /* failure to satisfy only-if-cached request */
96 ERR_TOO_BIG,
97 TCP_RESET,
98 ERR_ESI, /* Failure to perform ESI processing */
99 ERR_INVALID_RESP,
100 ERR_ICAP_FAILURE,
101 ERR_MAX
102 } err_type;
103
104 enum fd_type {
105 FD_NONE,
106 FD_LOG,
107 FD_FILE,
108 FD_SOCKET,
109 FD_PIPE,
110 FD_UNKNOWN
111 };
112
113 enum {
114 FD_READ,
115 FD_WRITE
116 };
117
118 typedef enum {
119 PEER_NONE,
120 PEER_SIBLING,
121 PEER_PARENT,
122 PEER_MULTICAST
123 } peer_t;
124
125 typedef enum {
126 LOOKUP_NONE,
127 LOOKUP_HIT,
128 LOOKUP_MISS
129 } lookup_t;
130
131 typedef enum {
132 CC_BADHDR = -1,
133 CC_PUBLIC = 0,
134 CC_PRIVATE,
135 CC_NO_CACHE,
136 CC_NO_STORE,
137 CC_NO_TRANSFORM,
138 CC_MUST_REVALIDATE,
139 CC_PROXY_REVALIDATE,
140 CC_MAX_AGE,
141 CC_S_MAXAGE,
142 CC_MAX_STALE,
143 CC_ONLY_IF_CACHED,
144 CC_OTHER,
145 CC_ENUM_END
146 } http_hdr_cc_type;
147
148 typedef enum {
149 SC_NO_STORE,
150 SC_NO_STORE_REMOTE,
151 SC_MAX_AGE,
152 SC_CONTENT,
153 SC_OTHER,
154 SC_ENUM_END
155 } http_hdr_sc_type;
156
157 typedef enum {
158 HIER_NONE,
159 HIER_DIRECT,
160 SIBLING_HIT,
161 PARENT_HIT,
162 DEFAULT_PARENT,
163 SINGLE_PARENT,
164 FIRSTUP_PARENT,
165 FIRST_PARENT_MISS,
166 CLOSEST_PARENT_MISS,
167 CLOSEST_PARENT,
168 CLOSEST_DIRECT,
169 NO_DIRECT_FAIL,
170 SOURCE_FASTEST,
171 ROUNDROBIN_PARENT,
172 #if USE_CACHE_DIGESTS
173 CD_PARENT_HIT,
174 CD_SIBLING_HIT,
175 #endif
176 CARP,
177 ANY_OLD_PARENT,
178 USERHASH_PARENT,
179 SOURCEHASH_PARENT,
180 HIER_MAX
181 } hier_code;
182
183 /// \ingroup ServerProtocolICPAPI
184 typedef enum {
185 ICP_INVALID,
186 ICP_QUERY,
187 ICP_HIT,
188 ICP_MISS,
189 ICP_ERR,
190 ICP_SEND,
191 ICP_SENDA,
192 ICP_DATABEG,
193 ICP_DATA,
194 ICP_DATAEND,
195 ICP_SECHO,
196 ICP_DECHO,
197 ICP_NOTIFY,
198 ICP_INVALIDATE,
199 ICP_DELETE,
200 ICP_UNUSED15,
201 ICP_UNUSED16,
202 ICP_UNUSED17,
203 ICP_UNUSED18,
204 ICP_UNUSED19,
205 ICP_UNUSED20,
206 ICP_MISS_NOFETCH,
207 ICP_DENIED,
208 ICP_HIT_OBJ,
209 ICP_END
210 } icp_opcode;
211
212 typedef enum _mem_status_t {
213 NOT_IN_MEMORY,
214 IN_MEMORY
215 } mem_status_t;
216
217 enum {
218 PING_NONE,
219 PING_WAITING,
220 PING_DONE
221 };
222
223 enum {
224 STORE_OK,
225 STORE_PENDING
226 };
227
228 enum {
229 SWAPOUT_NONE,
230 SWAPOUT_WRITING,
231 SWAPOUT_DONE
232 };
233
234 typedef enum {
235 STORE_NON_CLIENT,
236 STORE_MEM_CLIENT,
237 STORE_DISK_CLIENT
238 } store_client_t;
239
240 typedef enum {
241 PROTO_NONE,
242 PROTO_HTTP,
243 PROTO_FTP,
244 PROTO_GOPHER,
245 PROTO_WAIS,
246 PROTO_CACHEOBJ,
247 PROTO_ICP,
248 #if USE_HTCP
249 PROTO_HTCP,
250 #endif
251 PROTO_URN,
252 PROTO_WHOIS,
253 PROTO_INTERNAL,
254 PROTO_HTTPS,
255 PROTO_MAX
256 } protocol_t;
257
258 typedef enum {
259 HTTP_STATUS_NONE = 0,
260 HTTP_CONTINUE = 100,
261 HTTP_SWITCHING_PROTOCOLS = 101,
262 HTTP_PROCESSING = 102, /* RFC2518 section 10.1 */
263 HTTP_OK = 200,
264 HTTP_CREATED = 201,
265 HTTP_ACCEPTED = 202,
266 HTTP_NON_AUTHORITATIVE_INFORMATION = 203,
267 HTTP_NO_CONTENT = 204,
268 HTTP_RESET_CONTENT = 205,
269 HTTP_PARTIAL_CONTENT = 206,
270 HTTP_MULTI_STATUS = 207, /* RFC2518 section 10.2 */
271 HTTP_MULTIPLE_CHOICES = 300,
272 HTTP_MOVED_PERMANENTLY = 301,
273 HTTP_MOVED_TEMPORARILY = 302,
274 HTTP_SEE_OTHER = 303,
275 HTTP_NOT_MODIFIED = 304,
276 HTTP_USE_PROXY = 305,
277 HTTP_TEMPORARY_REDIRECT = 307,
278 HTTP_BAD_REQUEST = 400,
279 HTTP_UNAUTHORIZED = 401,
280 HTTP_PAYMENT_REQUIRED = 402,
281 HTTP_FORBIDDEN = 403,
282 HTTP_NOT_FOUND = 404,
283 HTTP_METHOD_NOT_ALLOWED = 405,
284 HTTP_NOT_ACCEPTABLE = 406,
285 HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
286 HTTP_REQUEST_TIMEOUT = 408,
287 HTTP_CONFLICT = 409,
288 HTTP_GONE = 410,
289 HTTP_LENGTH_REQUIRED = 411,
290 HTTP_PRECONDITION_FAILED = 412,
291 HTTP_REQUEST_ENTITY_TOO_LARGE = 413,
292 HTTP_REQUEST_URI_TOO_LARGE = 414,
293 HTTP_UNSUPPORTED_MEDIA_TYPE = 415,
294 HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
295 HTTP_EXPECTATION_FAILED = 417,
296 HTTP_UNPROCESSABLE_ENTITY = 422, /* RFC2518 section 10.3 */
297 HTTP_LOCKED = 423, /* RFC2518 section 10.4 */
298 HTTP_FAILED_DEPENDENCY = 424, /* RFC2518 section 10.5 */
299 HTTP_INTERNAL_SERVER_ERROR = 500,
300 HTTP_NOT_IMPLEMENTED = 501,
301 HTTP_BAD_GATEWAY = 502,
302 HTTP_SERVICE_UNAVAILABLE = 503,
303 HTTP_GATEWAY_TIMEOUT = 504,
304 HTTP_HTTP_VERSION_NOT_SUPPORTED = 505,
305 HTTP_INSUFFICIENT_STORAGE = 507, /* RFC2518 section 10.6 */
306 HTTP_INVALID_HEADER = 600, /* Squid header parsing error */
307 HTTP_HEADER_TOO_LARGE = 601 /* Header too large to process */
308 } http_status;
309
310 /*
311 * These are for StoreEntry->flag, which is defined as a SHORT
312 *
313 * NOTE: These flags are written to swap.state, so think very carefully
314 * about deleting or re-assigning!
315 */
316 enum {
317 ENTRY_SPECIAL,
318 ENTRY_REVALIDATE,
319 DELAY_SENDING,
320 RELEASE_REQUEST,
321 REFRESH_REQUEST,
322 ENTRY_CACHABLE,
323 ENTRY_DISPATCHED,
324 KEY_PRIVATE,
325 ENTRY_FWD_HDR_WAIT,
326 ENTRY_NEGCACHED,
327 ENTRY_VALIDATED,
328 ENTRY_BAD_LENGTH,
329 ENTRY_ABORTED
330 };
331
332 /*
333 * These are for client Streams. Each node in the stream can be queried for
334 * its status
335 */
336 typedef enum {
337 STREAM_NONE, /* No particular status */
338 STREAM_COMPLETE, /* All data has been flushed, no more reads allowed */
339 /* an unpredicted end has occured, no more
340 * reads occured, but no need to tell
341 * downstream that an error occured
342 */
343 STREAM_UNPLANNED_COMPLETE,
344 /* An error has occured in this node or an above one,
345 * and the node is not generating an error body / it's
346 * midstream
347 */
348 STREAM_FAILED
349 } clientStream_status_t;
350
351 typedef enum {
352 ACCESS_DENIED,
353 ACCESS_ALLOWED,
354 ACCESS_REQ_PROXY_AUTH
355 } allow_t;
356
357 typedef enum {
358 AUTH_ACL_CHALLENGE = -2,
359 AUTH_ACL_HELPER = -1,
360 AUTH_ACL_CANNOT_AUTHENTICATE = 0,
361 AUTH_AUTHENTICATED = 1
362 } auth_acl_t;
363
364 typedef enum {
365 AUTH_UNKNOWN, /* default */
366 AUTH_BASIC,
367 AUTH_NTLM,
368 AUTH_DIGEST,
369 AUTH_NEGOTIATE,
370 AUTH_BROKEN /* known type, but broken data */
371 } auth_type_t;
372
373 /* stateful helper callback response codes */
374 typedef enum {
375 S_HELPER_UNKNOWN,
376 S_HELPER_RESERVE,
377 S_HELPER_RELEASE,
378 S_HELPER_DEFER
379 } stateful_helper_callback_t;
380
381 /* stateful helper reservation info */
382 typedef enum {
383 S_HELPER_FREE, /* available for requests */
384 S_HELPER_RESERVED, /* in a reserved state - no active request, but state data in the helper shouldn't be disturbed */
385 S_HELPER_DEFERRED /* available for requests, and at least one more will come from a previous caller with the server pointer */
386 } stateful_helper_reserve_t;
387
388
389 #if SQUID_SNMP
390 enum {
391 SNMP_C_VIEW,
392 SNMP_C_USER,
393 SNMP_C_COMMUNITY
394 };
395
396 #endif
397
398 typedef enum {
399 MEM_NONE,
400 MEM_2K_BUF,
401 MEM_4K_BUF,
402 MEM_8K_BUF,
403 MEM_16K_BUF,
404 MEM_32K_BUF,
405 MEM_64K_BUF,
406 MEM_ACL_DENY_INFO_LIST,
407 MEM_ACL_NAME_LIST,
408 #if USE_CACHE_DIGESTS
409 MEM_CACHE_DIGEST,
410 #endif
411 MEM_CLIENT_INFO,
412 MEM_LINK_LIST,
413 MEM_DLINK_NODE,
414 MEM_DONTFREE,
415 MEM_DREAD_CTRL,
416 MEM_DWRITE_Q,
417 MEM_FQDNCACHE_ENTRY,
418 MEM_FWD_SERVER,
419 MEM_HTTP_HDR_CC,
420 MEM_HTTP_HDR_CONTENT_RANGE,
421 MEM_IPCACHE_ENTRY,
422 MEM_MD5_DIGEST,
423 MEM_NETDBENTRY,
424 MEM_NET_DB_NAME,
425 MEM_RELIST,
426 #if !USE_DNSSERVERS
427 MEM_IDNS_QUERY,
428 #endif
429 MEM_MAX
430 } mem_type;
431
432 enum {
433 STORE_LOG_CREATE,
434 STORE_LOG_SWAPIN,
435 STORE_LOG_SWAPOUT,
436 STORE_LOG_RELEASE,
437 STORE_LOG_SWAPOUTFAIL
438 };
439
440 typedef enum {
441 SWAP_LOG_NOP,
442 SWAP_LOG_ADD,
443 SWAP_LOG_DEL,
444 SWAP_LOG_VERSION,
445 SWAP_LOG_MAX
446 } swap_log_op;
447
448
449 /* parse state of HttpReply or HttpRequest */
450 typedef enum {
451 psReadyToParseStartLine = 0,
452 psReadyToParseHeaders,
453 psParsed,
454 psError
455 } HttpMsgParseState;
456
457
458 enum {
459 PCTILE_HTTP,
460 PCTILE_ICP_QUERY,
461 PCTILE_DNS,
462 PCTILE_HIT,
463 PCTILE_MISS,
464 PCTILE_NM,
465 PCTILE_NH,
466 PCTILE_ICP_REPLY
467 };
468
469 enum {
470 SENT,
471 RECV
472 };
473
474 /*
475 * These are field indicators for raw cache-cache netdb transfers
476 */
477 enum {
478 NETDB_EX_NONE,
479 NETDB_EX_NETWORK,
480 NETDB_EX_RTT,
481 NETDB_EX_HOPS
482 };
483
484 /*
485 * Return codes from checkVary(request)
486 */
487 enum {
488 VARY_NONE,
489 VARY_MATCH,
490 VARY_OTHER,
491 VARY_CANCEL
492 };
493
494 /*
495 * Store digest state enum
496 */
497 typedef enum {
498 DIGEST_READ_NONE,
499 DIGEST_READ_REPLY,
500 DIGEST_READ_HEADERS,
501 DIGEST_READ_CBLOCK,
502 DIGEST_READ_MASK,
503 DIGEST_READ_DONE
504 } digest_read_state_t;
505
506 /* Distinguish between Request and Reply (for header mangling) */
507 enum {
508 ROR_REQUEST,
509 ROR_REPLY
510 };
511
512
513 /* CygWin & Windows NT Port */
514 #ifdef _SQUID_WIN32_
515 /*
516 * Supported Windows OS types codes
517 */
518 enum {
519 _WIN_OS_UNKNOWN,
520 _WIN_OS_WIN32S,
521 _WIN_OS_WIN95,
522 _WIN_OS_WIN98,
523 _WIN_OS_WINME,
524 _WIN_OS_WINNT,
525 _WIN_OS_WIN2K,
526 _WIN_OS_WINXP,
527 _WIN_OS_WINNET,
528 _WIN_OS_WINLON
529 };
530
531 #endif
532
533 typedef enum {
534 CLF_UNKNOWN,
535 CLF_AUTO,
536 CLF_CUSTOM,
537 CLF_SQUID,
538 CLF_COMMON,
539 CLF_NONE
540 } customlog_type;
541
542 enum {
543 DISABLE_PMTU_OFF,
544 DISABLE_PMTU_ALWAYS,
545 DISABLE_PMTU_TRANSPARENT
546 };
547
548 #if USE_HTCP
549 /*
550 * This should be in htcp.h but because neighborsHtcpClear is defined in
551 * protos.h it has to be here.
552 */
553 typedef enum {
554 HTCP_CLR_PURGE,
555 HTCP_CLR_INVALIDATION,
556 } htcp_clr_reason;
557 #endif
558
559 #endif /* SQUID_ENUMS_H */