]> git.ipfire.org Git - thirdparty/squid.git/blame - src/enums.h
Author: Wang DaQing <wdq@bigfoot.com>
[thirdparty/squid.git] / src / enums.h
CommitLineData
f892c2bf 1
9cef6668 2/*
262a0e14 3 * $Id$
9cef6668 4 *
5 *
2b6662ba 6 * SQUID Web Proxy Cache http://www.squid-cache.org/
9cef6668 7 * ----------------------------------------------------------
8 *
2b6662ba 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.
9cef6668 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.
26ac0430 22 *
9cef6668 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.
26ac0430 27 *
9cef6668 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 */
f892c2bf 33
b5638623 34#ifndef SQUID_ENUMS_H
35#define SQUID_ENUMS_H
36
9bea1d5b 37typedef enum {
79a15e0a 38 LOG_TAG_NONE,
39 LOG_TCP_HIT,
40 LOG_TCP_MISS,
1d7ab0f4 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
ee1679df 44 LOG_TCP_CLIENT_REFRESH_MISS,
79a15e0a 45 LOG_TCP_IMS_HIT,
79a15e0a 46 LOG_TCP_SWAPFAIL_MISS,
47 LOG_TCP_NEGATIVE_HIT,
48 LOG_TCP_MEM_HIT,
49 LOG_TCP_DENIED,
f1f78347 50 LOG_TCP_DENIED_REPLY,
b540e168 51 LOG_TCP_OFFLINE_HIT,
efd900cb 52#if LOG_TCP_REDIRECTS
53 LOG_TCP_REDIRECT,
54#endif
79a15e0a 55 LOG_UDP_HIT,
79a15e0a 56 LOG_UDP_MISS,
57 LOG_UDP_DENIED,
58 LOG_UDP_INVALID,
59 LOG_UDP_MISS_NOFETCH,
071a3ae7 60 LOG_ICP_QUERY,
79a15e0a 61 LOG_TYPE_MAX
9bea1d5b 62} log_type;
f892c2bf 63
9bea1d5b 64typedef enum {
9b312a19 65 ERR_NONE,
66 ERR_READ_TIMEOUT,
67 ERR_LIFETIME_EXP,
9b312a19 68 ERR_READ_ERROR,
69 ERR_WRITE_ERROR,
05b744f3 70 ERR_SHUTTING_DOWN,
9b312a19 71 ERR_CONNECT_FAIL,
4d5a6db8 72 ERR_SECURE_CONNECT_FAIL,
9b312a19 73 ERR_INVALID_REQ,
74 ERR_UNSUP_REQ,
75 ERR_INVALID_URL,
76 ERR_SOCKET_FAILURE,
77 ERR_DNS_FAIL,
9b312a19 78 ERR_CANNOT_FORWARD,
bdb3c273 79 ERR_FORWARDING_DENIED,
9b312a19 80 ERR_NO_RELAY,
9b312a19 81 ERR_ZERO_SIZE_OBJECT,
82 ERR_FTP_DISABLED,
b9916917 83 ERR_FTP_FAILURE,
23d92c64 84 ERR_URN_RESOLVE,
9b312a19 85 ERR_ACCESS_DENIED,
cb69b4c7 86 ERR_CACHE_ACCESS_DENIED,
63259c34 87 ERR_CACHE_MGR_ACCESS_DENIED,
2ac76861 88 ERR_SQUID_SIGNATURE, /* not really an error */
ec878047 89 ERR_FTP_PUT_CREATED, /* !error,a note that the file was created */
59c4d35b 90 ERR_FTP_PUT_MODIFIED, /* modified, !created */
91 ERR_FTP_PUT_ERROR,
b6a2f15e 92 ERR_FTP_NOT_FOUND,
93 ERR_FTP_FORBIDDEN,
94 ERR_FTP_UNAVAILABLE,
ec878047 95 ERR_ONLY_IF_CACHED_MISS, /* failure to satisfy only-if-cached request */
0483b991 96 ERR_TOO_BIG,
76cdc28d 97 TCP_RESET,
43ae1d95 98 ERR_ESI, /* Failure to perform ESI processing */
52d3f198 99 ERR_INVALID_RESP,
29260bdf 100 ERR_ICAP_FAILURE,
e57c1885 101 ERR_UNSUP_HTTPVERSION, /* HTTP version is not supported */
9b312a19 102 ERR_MAX
9bea1d5b 103} err_type;
9b312a19 104
528b2c61 105enum fd_type {
f892c2bf 106 FD_NONE,
107 FD_LOG,
108 FD_FILE,
109 FD_SOCKET,
110 FD_PIPE,
111 FD_UNKNOWN
9bea1d5b 112};
f892c2bf 113
9bea1d5b 114enum {
f892c2bf 115 FD_READ,
116 FD_WRITE
9bea1d5b 117};
f892c2bf 118
9bea1d5b 119typedef enum {
f892c2bf 120 PEER_NONE,
121 PEER_SIBLING,
122 PEER_PARENT,
123 PEER_MULTICAST
9bea1d5b 124} peer_t;
f892c2bf 125
9bea1d5b 126typedef enum {
9fdfc93e 127 LOOKUP_NONE,
128 LOOKUP_HIT,
4b4cd312 129 LOOKUP_MISS
9bea1d5b 130} lookup_t;
9fdfc93e 131
9bea1d5b 132typedef enum {
e6ccf245 133 CC_BADHDR = -1,
134 CC_PUBLIC = 0,
7faf2bdb 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,
7e3ce7b9 142 CC_S_MAXAGE,
49ff0930 143 CC_MAX_STALE,
d8b249ef 144 CC_ONLY_IF_CACHED,
145 CC_OTHER,
7faf2bdb 146 CC_ENUM_END
9bea1d5b 147} http_hdr_cc_type;
7faf2bdb 148
43ae1d95 149typedef 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
9bea1d5b 158typedef enum {
f892c2bf 159 HIER_NONE,
46e12f3a 160 HIER_DIRECT,
f892c2bf 161 SIBLING_HIT,
162 PARENT_HIT,
163 DEFAULT_PARENT,
164 SINGLE_PARENT,
165 FIRSTUP_PARENT,
f892c2bf 166 FIRST_PARENT_MISS,
167 CLOSEST_PARENT_MISS,
69c95dd3 168 CLOSEST_PARENT,
f892c2bf 169 CLOSEST_DIRECT,
170 NO_DIRECT_FAIL,
171 SOURCE_FASTEST,
f892c2bf 172 ROUNDROBIN_PARENT,
6cfa8966 173#if USE_CACHE_DIGESTS
9bc73deb 174 CD_PARENT_HIT,
175 CD_SIBLING_HIT,
afd88fbe 176#endif
afd88fbe 177 CARP,
6a655df0 178 ANY_OLD_PARENT,
f4a21650
HN
179 USERHASH_PARENT,
180 SOURCEHASH_PARENT,
d67acb4e
AJ
181 HIER_MAX,
182 PINNED
9bea1d5b 183} hier_code;
f892c2bf 184
63be0a78 185/// \ingroup ServerProtocolICPAPI
9bea1d5b 186typedef enum {
27cd7235 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,
58e170f0 199 ICP_NOTIFY,
200 ICP_INVALIDATE,
201 ICP_DELETE,
27cd7235 202 ICP_UNUSED15,
203 ICP_UNUSED16,
204 ICP_UNUSED17,
205 ICP_UNUSED18,
206 ICP_UNUSED19,
207 ICP_UNUSED20,
208 ICP_MISS_NOFETCH,
da2d50d1 209 ICP_DENIED,
27cd7235 210 ICP_HIT_OBJ,
211 ICP_END
9bea1d5b 212} icp_opcode;
f892c2bf 213
e6ccf245 214typedef enum _mem_status_t {
f892c2bf 215 NOT_IN_MEMORY,
f892c2bf 216 IN_MEMORY
e6ccf245 217} mem_status_t;
f892c2bf 218
9bea1d5b 219enum {
f892c2bf 220 PING_NONE,
221 PING_WAITING,
f892c2bf 222 PING_DONE
9bea1d5b 223};
f892c2bf 224
9bea1d5b 225enum {
f892c2bf 226 STORE_OK,
b7fe0ab0 227 STORE_PENDING
9bea1d5b 228};
f892c2bf 229
9bea1d5b 230enum {
8350fe9b 231 SWAPOUT_NONE,
8350fe9b 232 SWAPOUT_WRITING,
233 SWAPOUT_DONE
9bea1d5b 234};
f892c2bf 235
9bea1d5b 236typedef enum {
5d86029a 237 STORE_NON_CLIENT,
238 STORE_MEM_CLIENT,
239 STORE_DISK_CLIENT
9bea1d5b 240} store_client_t;
74ac2ecb 241
9bea1d5b 242typedef enum {
f892c2bf 243 PROTO_NONE,
244 PROTO_HTTP,
245 PROTO_FTP,
246 PROTO_GOPHER,
247 PROTO_WAIS,
248 PROTO_CACHEOBJ,
249 PROTO_ICP,
86aebcda 250#if USE_HTCP
251 PROTO_HTCP,
252#endif
23d92c64 253 PROTO_URN,
53ad48e6 254 PROTO_WHOIS,
1da5651f 255 PROTO_INTERNAL,
4f3de732 256 PROTO_HTTPS,
f892c2bf 257 PROTO_MAX
9bea1d5b 258} protocol_t;
9b312a19 259
9bea1d5b 260typedef enum {
728da2ee 261 HTTP_STATUS_NONE = 0,
9b312a19 262 HTTP_CONTINUE = 100,
263 HTTP_SWITCHING_PROTOCOLS = 101,
7e3ce7b9 264 HTTP_PROCESSING = 102, /* RFC2518 section 10.1 */
9b312a19 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,
7e3ce7b9 272 HTTP_MULTI_STATUS = 207, /* RFC2518 section 10.2 */
9b312a19 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,
69660be0 279 HTTP_TEMPORARY_REDIRECT = 307,
9b312a19 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,
9e8942b0 296 HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
297 HTTP_EXPECTATION_FAILED = 417,
7e3ce7b9 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 */
9b312a19 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,
cb69b4c7 306 HTTP_HTTP_VERSION_NOT_SUPPORTED = 505,
7e3ce7b9 307 HTTP_INSUFFICIENT_STORAGE = 507, /* RFC2518 section 10.6 */
4eb368f9 308 HTTP_INVALID_HEADER = 600, /* Squid header parsing error */
309 HTTP_HEADER_TOO_LARGE = 601 /* Header too large to process */
9bea1d5b 310} http_status;
79a15e0a 311
d46a87a8 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 */
9bea1d5b 318enum {
d46a87a8 319 ENTRY_SPECIAL,
320 ENTRY_REVALIDATE,
321 DELAY_SENDING,
322 RELEASE_REQUEST,
323 REFRESH_REQUEST,
324 ENTRY_CACHABLE,
325 ENTRY_DISPATCHED,
326 KEY_PRIVATE,
d46a87a8 327 ENTRY_FWD_HDR_WAIT,
d46a87a8 328 ENTRY_NEGCACHED,
329 ENTRY_VALIDATED,
b7fe0ab0 330 ENTRY_BAD_LENGTH,
e95eff47 331 ENTRY_ABORTED
9bea1d5b 332};
79a15e0a 333
edce4d98 334/*
335 * These are for client Streams. Each node in the stream can be queried for
336 * its status
337 */
338typedef enum {
339 STREAM_NONE, /* No particular status */
340 STREAM_COMPLETE, /* All data has been flushed, no more reads allowed */
b0dd28ba 341 /* an unpredicted end has occured, no more
26ac0430 342 * reads occured, but no need to tell
b0dd28ba 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
edce4d98 351} clientStream_status_t;
352
9bea1d5b 353typedef enum {
60d096f4 354 AUTH_ACL_CHALLENGE = -2,
355 AUTH_ACL_HELPER = -1,
356 AUTH_ACL_CANNOT_AUTHENTICATE = 0,
d35b9a94 357 AUTH_AUTHENTICATED = 1
9bea1d5b 358} auth_acl_t;
60d096f4 359
9bea1d5b 360typedef enum {
94439e4e 361 AUTH_UNKNOWN, /* default */
362 AUTH_BASIC,
363 AUTH_NTLM,
2d70df72 364 AUTH_DIGEST,
6bf4f823 365 AUTH_NEGOTIATE,
94439e4e 366 AUTH_BROKEN /* known type, but broken data */
9bea1d5b 367} auth_type_t;
94439e4e 368
94439e4e 369/* stateful helper callback response codes */
9bea1d5b 370typedef enum {
94439e4e 371 S_HELPER_UNKNOWN,
372 S_HELPER_RESERVE,
373 S_HELPER_RELEASE,
374 S_HELPER_DEFER
9bea1d5b 375} stateful_helper_callback_t;
94439e4e 376
377/* stateful helper reservation info */
9bea1d5b 378typedef enum {
94439e4e 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 */
9bea1d5b 382} stateful_helper_reserve_t;
94439e4e 383
384
3f6c0fb2 385#if SQUID_SNMP
9bea1d5b 386enum {
be335c22 387 SNMP_C_VIEW,
388 SNMP_C_USER,
389 SNMP_C_COMMUNITY
9bea1d5b 390};
067bea91 391
3f6c0fb2 392#endif
393
9bea1d5b 394typedef enum {
067bea91 395 MEM_NONE,
137ee196 396 MEM_2K_BUF,
067bea91 397 MEM_4K_BUF,
398 MEM_8K_BUF,
58cd5bbd 399 MEM_16K_BUF,
400 MEM_32K_BUF,
401 MEM_64K_BUF,
c68e9c6b 402 MEM_ACL_DENY_INFO_LIST,
c68e9c6b 403 MEM_ACL_NAME_LIST,
c68e9c6b 404#if USE_CACHE_DIGESTS
405 MEM_CACHE_DIGEST,
406#endif
c68e9c6b 407 MEM_CLIENT_INFO,
58cd5bbd 408 MEM_LINK_LIST,
c68e9c6b 409 MEM_DLINK_NODE,
c68e9c6b 410 MEM_DONTFREE,
411 MEM_DREAD_CTRL,
067bea91 412 MEM_DWRITE_Q,
067bea91 413 MEM_FQDNCACHE_ENTRY,
798b0889 414 MEM_FWD_SERVER,
7faf2bdb 415 MEM_HTTP_HDR_CC,
d76fcfa7 416 MEM_HTTP_HDR_CONTENT_RANGE,
067bea91 417 MEM_IPCACHE_ENTRY,
c68e9c6b 418 MEM_MD5_DIGEST,
c68e9c6b 419 MEM_NETDBENTRY,
067bea91 420 MEM_NET_DB_NAME,
c68e9c6b 421 MEM_RELIST,
eb824054 422#if !USE_DNSSERVERS
7b724b86 423 MEM_IDNS_QUERY,
eb824054 424#endif
067bea91 425 MEM_MAX
9bea1d5b 426} mem_type;
a21fbb54 427
9bea1d5b 428enum {
5830cdb3 429 STORE_LOG_CREATE,
430 STORE_LOG_SWAPIN,
431 STORE_LOG_SWAPOUT,
284ac611 432 STORE_LOG_RELEASE,
433 STORE_LOG_SWAPOUTFAIL
9bea1d5b 434};
5830cdb3 435
9bea1d5b 436typedef enum {
5830cdb3 437 SWAP_LOG_NOP,
438 SWAP_LOG_ADD,
b109de6b 439 SWAP_LOG_DEL,
47f6e231 440 SWAP_LOG_VERSION,
b109de6b 441 SWAP_LOG_MAX
9bea1d5b 442} swap_log_op;
adba4a64 443
444
445/* parse state of HttpReply or HttpRequest */
9bea1d5b 446typedef enum {
2ac76861 447 psReadyToParseStartLine = 0,
448 psReadyToParseHeaders,
449 psParsed,
450 psError
9bea1d5b 451} HttpMsgParseState;
b87b92fb 452
453
9bea1d5b 454enum {
04a28d46 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
9bea1d5b 463};
071a3ae7 464
9bea1d5b 465enum {
071a3ae7 466 SENT,
467 RECV
9bea1d5b 468};
de2a0782 469
470/*
471 * These are field indicators for raw cache-cache netdb transfers
472 */
9bea1d5b 473enum {
58a6c186 474 NETDB_EX_NONE,
475 NETDB_EX_NETWORK,
476 NETDB_EX_RTT,
477 NETDB_EX_HOPS
9bea1d5b 478};
28c60158 479
f66a9ef4 480/*
481 * Return codes from checkVary(request)
482 */
9bea1d5b 483enum {
f66a9ef4 484 VARY_NONE,
485 VARY_MATCH,
486 VARY_OTHER,
487 VARY_CANCEL
9bea1d5b 488};
b5638623 489
add2192d 490/*
491 * Store digest state enum
492 */
493typedef enum {
76cdc28d 494 DIGEST_READ_NONE,
495 DIGEST_READ_REPLY,
496 DIGEST_READ_HEADERS,
497 DIGEST_READ_CBLOCK,
498 DIGEST_READ_MASK,
499 DIGEST_READ_DONE
add2192d 500} digest_read_state_t;
501
8c01ada0 502/* Distinguish between Request and Reply (for header mangling) */
503enum {
504 ROR_REQUEST,
505 ROR_REPLY
506};
507
3d7e9d7c 508
be20dac7 509/* CygWin & Windows NT Port */
ec4daaa5 510#ifdef _SQUID_WIN32_
be20dac7 511/*
512 * Supported Windows OS types codes
513 */
514enum {
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,
6b1846cf 522 _WIN_OS_WINXP,
28170269 523 _WIN_OS_WINNET,
524 _WIN_OS_WINLON
be20dac7 525};
526
527#endif
528
7684c4b1 529typedef enum {
530 CLF_UNKNOWN,
531 CLF_AUTO,
532 CLF_CUSTOM,
533 CLF_SQUID,
534 CLF_COMMON,
535 CLF_NONE
536} customlog_type;
537
5529ca8a 538enum {
539 DISABLE_PMTU_OFF,
540 DISABLE_PMTU_ALWAYS,
541 DISABLE_PMTU_TRANSPARENT
542};
543
90bd689c
BR
544#if USE_HTCP
545/*
546 * This should be in htcp.h but because neighborsHtcpClear is defined in
547 * protos.h it has to be here.
548 */
549typedef enum {
550 HTCP_CLR_PURGE,
551 HTCP_CLR_INVALIDATION,
552} htcp_clr_reason;
553#endif
554
b5638623 555#endif /* SQUID_ENUMS_H */