]> git.ipfire.org Git - thirdparty/squid.git/blob - src/enums.h
Merged from trunk
[thirdparty/squid.git] / src / enums.h
1
2 /*
3 * $Id$
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_UNSUP_HTTPVERSION, /* HTTP version is not supported */
102 ERR_MAX
103 } err_type;
104
105 enum fd_type {
106 FD_NONE,
107 FD_LOG,
108 FD_FILE,
109 FD_SOCKET,
110 FD_PIPE,
111 FD_UNKNOWN
112 };
113
114 enum {
115 FD_READ,
116 FD_WRITE
117 };
118
119 typedef enum {
120 PEER_NONE,
121 PEER_SIBLING,
122 PEER_PARENT,
123 PEER_MULTICAST
124 } peer_t;
125
126 typedef enum {
127 LOOKUP_NONE,
128 LOOKUP_HIT,
129 LOOKUP_MISS
130 } lookup_t;
131
132 typedef enum {
133 CC_BADHDR = -1,
134 CC_PUBLIC = 0,
135 CC_PRIVATE,
136 CC_NO_CACHE,
137 CC_NO_STORE,
138 CC_NO_TRANSFORM,
139 CC_MUST_REVALIDATE,
140 CC_PROXY_REVALIDATE,
141 CC_MAX_AGE,
142 CC_S_MAXAGE,
143 CC_MAX_STALE,
144 CC_ONLY_IF_CACHED,
145 CC_OTHER,
146 CC_ENUM_END
147 } http_hdr_cc_type;
148
149 typedef enum {
150 SC_NO_STORE,
151 SC_NO_STORE_REMOTE,
152 SC_MAX_AGE,
153 SC_CONTENT,
154 SC_OTHER,
155 SC_ENUM_END
156 } http_hdr_sc_type;
157
158 typedef enum {
159 HIER_NONE,
160 HIER_DIRECT,
161 SIBLING_HIT,
162 PARENT_HIT,
163 DEFAULT_PARENT,
164 SINGLE_PARENT,
165 FIRSTUP_PARENT,
166 FIRST_PARENT_MISS,
167 CLOSEST_PARENT_MISS,
168 CLOSEST_PARENT,
169 CLOSEST_DIRECT,
170 NO_DIRECT_FAIL,
171 SOURCE_FASTEST,
172 ROUNDROBIN_PARENT,
173 #if USE_CACHE_DIGESTS
174 CD_PARENT_HIT,
175 CD_SIBLING_HIT,
176 #endif
177 CARP,
178 ANY_OLD_PARENT,
179 USERHASH_PARENT,
180 SOURCEHASH_PARENT,
181 HIER_MAX,
182 PINNED
183 } hier_code;
184
185 /// \ingroup ServerProtocolICPAPI
186 typedef enum {
187 ICP_INVALID,
188 ICP_QUERY,
189 ICP_HIT,
190 ICP_MISS,
191 ICP_ERR,
192 ICP_SEND,
193 ICP_SENDA,
194 ICP_DATABEG,
195 ICP_DATA,
196 ICP_DATAEND,
197 ICP_SECHO,
198 ICP_DECHO,
199 ICP_NOTIFY,
200 ICP_INVALIDATE,
201 ICP_DELETE,
202 ICP_UNUSED15,
203 ICP_UNUSED16,
204 ICP_UNUSED17,
205 ICP_UNUSED18,
206 ICP_UNUSED19,
207 ICP_UNUSED20,
208 ICP_MISS_NOFETCH,
209 ICP_DENIED,
210 ICP_HIT_OBJ,
211 ICP_END
212 } icp_opcode;
213
214 typedef enum _mem_status_t {
215 NOT_IN_MEMORY,
216 IN_MEMORY
217 } mem_status_t;
218
219 enum {
220 PING_NONE,
221 PING_WAITING,
222 PING_DONE
223 };
224
225 enum {
226 STORE_OK,
227 STORE_PENDING
228 };
229
230 enum {
231 SWAPOUT_NONE,
232 SWAPOUT_WRITING,
233 SWAPOUT_DONE
234 };
235
236 typedef enum {
237 STORE_NON_CLIENT,
238 STORE_MEM_CLIENT,
239 STORE_DISK_CLIENT
240 } store_client_t;
241
242 typedef enum {
243 PROTO_NONE,
244 PROTO_HTTP,
245 PROTO_FTP,
246 PROTO_GOPHER,
247 PROTO_WAIS,
248 PROTO_CACHEOBJ,
249 PROTO_ICP,
250 #if USE_HTCP
251 PROTO_HTCP,
252 #endif
253 PROTO_URN,
254 PROTO_WHOIS,
255 PROTO_INTERNAL,
256 PROTO_HTTPS,
257 PROTO_MAX
258 } protocol_t;
259
260 typedef enum {
261 HTTP_STATUS_NONE = 0,
262 HTTP_CONTINUE = 100,
263 HTTP_SWITCHING_PROTOCOLS = 101,
264 HTTP_PROCESSING = 102, /* RFC2518 section 10.1 */
265 HTTP_OK = 200,
266 HTTP_CREATED = 201,
267 HTTP_ACCEPTED = 202,
268 HTTP_NON_AUTHORITATIVE_INFORMATION = 203,
269 HTTP_NO_CONTENT = 204,
270 HTTP_RESET_CONTENT = 205,
271 HTTP_PARTIAL_CONTENT = 206,
272 HTTP_MULTI_STATUS = 207, /* RFC2518 section 10.2 */
273 HTTP_MULTIPLE_CHOICES = 300,
274 HTTP_MOVED_PERMANENTLY = 301,
275 HTTP_MOVED_TEMPORARILY = 302,
276 HTTP_SEE_OTHER = 303,
277 HTTP_NOT_MODIFIED = 304,
278 HTTP_USE_PROXY = 305,
279 HTTP_TEMPORARY_REDIRECT = 307,
280 HTTP_BAD_REQUEST = 400,
281 HTTP_UNAUTHORIZED = 401,
282 HTTP_PAYMENT_REQUIRED = 402,
283 HTTP_FORBIDDEN = 403,
284 HTTP_NOT_FOUND = 404,
285 HTTP_METHOD_NOT_ALLOWED = 405,
286 HTTP_NOT_ACCEPTABLE = 406,
287 HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
288 HTTP_REQUEST_TIMEOUT = 408,
289 HTTP_CONFLICT = 409,
290 HTTP_GONE = 410,
291 HTTP_LENGTH_REQUIRED = 411,
292 HTTP_PRECONDITION_FAILED = 412,
293 HTTP_REQUEST_ENTITY_TOO_LARGE = 413,
294 HTTP_REQUEST_URI_TOO_LARGE = 414,
295 HTTP_UNSUPPORTED_MEDIA_TYPE = 415,
296 HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
297 HTTP_EXPECTATION_FAILED = 417,
298 HTTP_UNPROCESSABLE_ENTITY = 422, /* RFC2518 section 10.3 */
299 HTTP_LOCKED = 423, /* RFC2518 section 10.4 */
300 HTTP_FAILED_DEPENDENCY = 424, /* RFC2518 section 10.5 */
301 HTTP_INTERNAL_SERVER_ERROR = 500,
302 HTTP_NOT_IMPLEMENTED = 501,
303 HTTP_BAD_GATEWAY = 502,
304 HTTP_SERVICE_UNAVAILABLE = 503,
305 HTTP_GATEWAY_TIMEOUT = 504,
306 HTTP_HTTP_VERSION_NOT_SUPPORTED = 505,
307 HTTP_INSUFFICIENT_STORAGE = 507, /* RFC2518 section 10.6 */
308 HTTP_INVALID_HEADER = 600, /* Squid header parsing error */
309 HTTP_HEADER_TOO_LARGE = 601 /* Header too large to process */
310 } http_status;
311
312 /*
313 * These are for StoreEntry->flag, which is defined as a SHORT
314 *
315 * NOTE: These flags are written to swap.state, so think very carefully
316 * about deleting or re-assigning!
317 */
318 enum {
319 ENTRY_SPECIAL,
320 ENTRY_REVALIDATE,
321 DELAY_SENDING,
322 RELEASE_REQUEST,
323 REFRESH_REQUEST,
324 ENTRY_CACHABLE,
325 ENTRY_DISPATCHED,
326 KEY_PRIVATE,
327 ENTRY_FWD_HDR_WAIT,
328 ENTRY_NEGCACHED,
329 ENTRY_VALIDATED,
330 ENTRY_BAD_LENGTH,
331 ENTRY_ABORTED
332 };
333
334 /*
335 * These are for client Streams. Each node in the stream can be queried for
336 * its status
337 */
338 typedef enum {
339 STREAM_NONE, /* No particular status */
340 STREAM_COMPLETE, /* All data has been flushed, no more reads allowed */
341 /* an unpredicted end has occured, no more
342 * reads occured, but no need to tell
343 * downstream that an error occured
344 */
345 STREAM_UNPLANNED_COMPLETE,
346 /* An error has occured in this node or an above one,
347 * and the node is not generating an error body / it's
348 * midstream
349 */
350 STREAM_FAILED
351 } clientStream_status_t;
352
353 typedef enum {
354 AUTH_ACL_CHALLENGE = -2,
355 AUTH_ACL_HELPER = -1,
356 AUTH_ACL_CANNOT_AUTHENTICATE = 0,
357 AUTH_AUTHENTICATED = 1
358 } auth_acl_t;
359
360 typedef enum {
361 AUTH_UNKNOWN, /* default */
362 AUTH_BASIC,
363 AUTH_NTLM,
364 AUTH_DIGEST,
365 AUTH_NEGOTIATE,
366 AUTH_BROKEN /* known type, but broken data */
367 } auth_type_t;
368
369 /* stateful helper callback response codes */
370 typedef enum {
371 S_HELPER_UNKNOWN,
372 S_HELPER_RESERVE,
373 S_HELPER_RELEASE,
374 S_HELPER_DEFER
375 } stateful_helper_callback_t;
376
377 /* stateful helper reservation info */
378 typedef enum {
379 S_HELPER_FREE, /* available for requests */
380 S_HELPER_RESERVED, /* in a reserved state - no active request, but state data in the helper shouldn't be disturbed */
381 S_HELPER_DEFERRED /* available for requests, and at least one more will come from a previous caller with the server pointer */
382 } stateful_helper_reserve_t;
383
384
385 #if SQUID_SNMP
386 enum {
387 SNMP_C_VIEW,
388 SNMP_C_USER,
389 SNMP_C_COMMUNITY
390 };
391
392 #endif
393
394 typedef enum {
395 MEM_NONE,
396 MEM_2K_BUF,
397 MEM_4K_BUF,
398 MEM_8K_BUF,
399 MEM_16K_BUF,
400 MEM_32K_BUF,
401 MEM_64K_BUF,
402 MEM_ACL_DENY_INFO_LIST,
403 MEM_ACL_NAME_LIST,
404 #if USE_CACHE_DIGESTS
405 MEM_CACHE_DIGEST,
406 #endif
407 MEM_CLIENT_INFO,
408 MEM_LINK_LIST,
409 MEM_DLINK_NODE,
410 MEM_DONTFREE,
411 MEM_DREAD_CTRL,
412 MEM_DWRITE_Q,
413 MEM_FQDNCACHE_ENTRY,
414 MEM_FWD_SERVER,
415 MEM_HTTP_HDR_CC,
416 MEM_HTTP_HDR_CONTENT_RANGE,
417 MEM_IPCACHE_ENTRY,
418 MEM_MD5_DIGEST,
419 MEM_NETDBENTRY,
420 MEM_NET_DB_NAME,
421 MEM_RELIST,
422 #if !USE_DNSSERVERS
423 MEM_IDNS_QUERY,
424 #endif
425 MEM_MAX
426 } mem_type;
427
428 enum {
429 STORE_LOG_CREATE,
430 STORE_LOG_SWAPIN,
431 STORE_LOG_SWAPOUT,
432 STORE_LOG_RELEASE,
433 STORE_LOG_SWAPOUTFAIL
434 };
435
436 typedef enum {
437 SWAP_LOG_NOP,
438 SWAP_LOG_ADD,
439 SWAP_LOG_DEL,
440 SWAP_LOG_VERSION,
441 SWAP_LOG_MAX
442 } swap_log_op;
443
444
445 /* parse state of HttpReply or HttpRequest */
446 typedef enum {
447 psReadyToParseStartLine = 0,
448 psReadyToParseHeaders,
449 psParsed,
450 psError
451 } HttpMsgParseState;
452
453
454 enum {
455 PCTILE_HTTP,
456 PCTILE_ICP_QUERY,
457 PCTILE_DNS,
458 PCTILE_HIT,
459 PCTILE_MISS,
460 PCTILE_NM,
461 PCTILE_NH,
462 PCTILE_ICP_REPLY
463 };
464
465 enum {
466 SENT,
467 RECV
468 };
469
470 /*
471 * These are field indicators for raw cache-cache netdb transfers
472 */
473 enum {
474 NETDB_EX_NONE,
475 NETDB_EX_NETWORK,
476 NETDB_EX_RTT,
477 NETDB_EX_HOPS
478 };
479
480 /*
481 * Return codes from checkVary(request)
482 */
483 enum {
484 VARY_NONE,
485 VARY_MATCH,
486 VARY_OTHER,
487 VARY_CANCEL
488 };
489
490 /*
491 * Store digest state enum
492 */
493 typedef enum {
494 DIGEST_READ_NONE,
495 DIGEST_READ_REPLY,
496 DIGEST_READ_HEADERS,
497 DIGEST_READ_CBLOCK,
498 DIGEST_READ_MASK,
499 DIGEST_READ_DONE
500 } digest_read_state_t;
501
502 /* Distinguish between Request and Reply (for header mangling) */
503 enum {
504 ROR_REQUEST,
505 ROR_REPLY
506 };
507
508
509 /* CygWin & Windows NT Port */
510 #ifdef _SQUID_WIN32_
511 /*
512 * Supported Windows OS types codes
513 */
514 enum {
515 _WIN_OS_UNKNOWN,
516 _WIN_OS_WIN32S,
517 _WIN_OS_WIN95,
518 _WIN_OS_WIN98,
519 _WIN_OS_WINME,
520 _WIN_OS_WINNT,
521 _WIN_OS_WIN2K,
522 _WIN_OS_WINXP,
523 _WIN_OS_WINNET,
524 _WIN_OS_WINLON,
525 _WIN_OS_WIN7
526 };
527
528 #endif
529
530 typedef enum {
531 CLF_UNKNOWN,
532 CLF_AUTO,
533 CLF_CUSTOM,
534 CLF_SQUID,
535 CLF_COMMON,
536 #if ICAP_CLIENT
537 CLF_ICAP_SQUID,
538 #endif
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 */