PageRenderTime 53ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/src/enums.h

https://github.com/romanbsd/squid
C Header | 878 lines | 754 code | 54 blank | 70 comment | 0 complexity | ff1d22e7855fb46c8b4111bbbbba0406 MD5 | raw file
Possible License(s): GPL-2.0
  1. /*
  2. * $Id: enums.h,v 1.245.2.4 2009/06/25 22:48:37 hno Exp $
  3. *
  4. *
  5. * SQUID Web Proxy Cache http://www.squid-cache.org/
  6. * ----------------------------------------------------------
  7. *
  8. * Squid is the result of efforts by numerous individuals from
  9. * the Internet community; see the CONTRIBUTORS file for full
  10. * details. Many organizations have provided support for Squid's
  11. * development; see the SPONSORS file for full details. Squid is
  12. * Copyrighted (C) 2001 by the Regents of the University of
  13. * California; see the COPYRIGHT file for full details. Squid
  14. * incorporates software developed and/or copyrighted by other
  15. * sources; see the CREDITS file for full details.
  16. *
  17. * This program is free software; you can redistribute it and/or modify
  18. * it under the terms of the GNU General Public License as published by
  19. * the Free Software Foundation; either version 2 of the License, or
  20. * (at your option) any later version.
  21. *
  22. * This program is distributed in the hope that it will be useful,
  23. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  25. * GNU General Public License for more details.
  26. *
  27. * You should have received a copy of the GNU General Public License
  28. * along with this program; if not, write to the Free Software
  29. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  30. *
  31. */
  32. #ifndef SQUID_ENUMS_H
  33. #define SQUID_ENUMS_H
  34. typedef enum {
  35. LOG_TAG_NONE,
  36. LOG_TCP_HIT,
  37. LOG_TCP_MISS,
  38. LOG_TCP_REFRESH_HIT,
  39. LOG_TCP_REFRESH_FAIL_HIT,
  40. LOG_TCP_REFRESH_MISS,
  41. LOG_TCP_CLIENT_REFRESH_MISS,
  42. LOG_TCP_IMS_HIT,
  43. LOG_TCP_SWAPFAIL_MISS,
  44. LOG_TCP_NEGATIVE_HIT,
  45. LOG_TCP_MEM_HIT,
  46. LOG_TCP_DENIED,
  47. LOG_TCP_OFFLINE_HIT,
  48. #if LOG_TCP_REDIRECTS
  49. LOG_TCP_REDIRECT,
  50. #endif
  51. LOG_TCP_STALE_HIT,
  52. LOG_TCP_ASYNC_HIT,
  53. LOG_TCP_ASYNC_MISS,
  54. LOG_UDP_HIT,
  55. LOG_UDP_MISS,
  56. LOG_UDP_DENIED,
  57. LOG_UDP_INVALID,
  58. LOG_UDP_MISS_NOFETCH,
  59. LOG_ICP_QUERY,
  60. LOG_TYPE_MAX
  61. } log_type;
  62. typedef enum {
  63. ERR_NONE,
  64. ERR_READ_TIMEOUT,
  65. ERR_LIFETIME_EXP,
  66. ERR_READ_ERROR,
  67. ERR_WRITE_ERROR,
  68. ERR_SHUTTING_DOWN,
  69. ERR_CONNECT_FAIL,
  70. ERR_INVALID_REQ,
  71. ERR_UNSUP_REQ,
  72. ERR_INVALID_URL,
  73. ERR_SOCKET_FAILURE,
  74. ERR_DNS_FAIL,
  75. ERR_CANNOT_FORWARD,
  76. ERR_FORWARDING_DENIED,
  77. ERR_NO_RELAY,
  78. ERR_ZERO_SIZE_OBJECT,
  79. ERR_FTP_DISABLED,
  80. ERR_FTP_FAILURE,
  81. ERR_URN_RESOLVE,
  82. ERR_ACCESS_DENIED,
  83. ERR_CACHE_ACCESS_DENIED,
  84. ERR_CACHE_MGR_ACCESS_DENIED,
  85. ERR_SQUID_SIGNATURE, /* not really an error */
  86. ERR_FTP_PUT_CREATED, /* !error,a note that the file was created */
  87. ERR_FTP_PUT_MODIFIED, /* modified, !created */
  88. ERR_FTP_PUT_ERROR,
  89. ERR_FTP_NOT_FOUND,
  90. ERR_FTP_FORBIDDEN,
  91. ERR_FTP_UNAVAILABLE,
  92. ERR_ONLY_IF_CACHED_MISS, /* failure to satisfy only-if-cached request */
  93. ERR_TOO_BIG,
  94. TCP_RESET,
  95. ERR_ICAP_FAILURE,
  96. ERR_INVALID_RESP,
  97. ERR_MAX
  98. } err_type;
  99. typedef enum {
  100. ACL_NONE,
  101. ACL_SRC_IP,
  102. ACL_DST_IP,
  103. ACL_MY_IP,
  104. ACL_SRC_DOMAIN,
  105. ACL_DST_DOMAIN,
  106. ACL_SRC_DOM_REGEX,
  107. ACL_DST_DOM_REGEX,
  108. ACL_TIME,
  109. ACL_URLPATH_REGEX,
  110. ACL_URL_REGEX,
  111. ACL_URL_PORT,
  112. ACL_MY_PORT,
  113. ACL_MY_PORT_NAME,
  114. #if USE_IDENT
  115. ACL_IDENT,
  116. ACL_IDENT_REGEX,
  117. #endif
  118. ACL_TYPE,
  119. ACL_PROTO,
  120. ACL_METHOD,
  121. ACL_BROWSER,
  122. ACL_REFERER_REGEX,
  123. ACL_PROXY_AUTH,
  124. ACL_PROXY_AUTH_REGEX,
  125. ACL_SRC_ASN,
  126. ACL_DST_ASN,
  127. #if USE_ARP_ACL
  128. ACL_SRC_ARP,
  129. #endif
  130. #if SQUID_SNMP
  131. ACL_SNMP_COMMUNITY,
  132. #endif
  133. #if SRC_RTT_NOT_YET_FINISHED
  134. ACL_NETDB_SRC_RTT,
  135. #endif
  136. ACL_MAXCONN,
  137. ACL_REQ_MIME_TYPE,
  138. ACL_REP_MIME_TYPE,
  139. ACL_REP_HEADER,
  140. ACL_REQ_HEADER,
  141. ACL_MAX_USER_IP,
  142. ACL_EXTERNAL,
  143. ACL_URLLOGIN,
  144. #if USE_SSL
  145. ACL_USER_CERT,
  146. ACL_CA_CERT,
  147. #endif
  148. ACL_URLGROUP,
  149. ACL_EXTUSER,
  150. ACL_EXTUSER_REGEX,
  151. ACL_ENUM_MAX
  152. } squid_acl;
  153. typedef enum {
  154. ACL_LOOKUP_NONE,
  155. ACL_LOOKUP_NEEDED,
  156. ACL_LOOKUP_PENDING,
  157. ACL_LOOKUP_DONE,
  158. ACL_PROXY_AUTH_NEEDED
  159. } acl_lookup_state;
  160. enum {
  161. FD_NONE,
  162. FD_LOG,
  163. FD_FILE,
  164. FD_SOCKET,
  165. FD_PIPE,
  166. FD_UNKNOWN
  167. };
  168. enum {
  169. FD_READ,
  170. FD_WRITE
  171. };
  172. typedef enum {
  173. PEER_NONE,
  174. PEER_SIBLING,
  175. PEER_PARENT,
  176. PEER_MULTICAST
  177. } peer_t;
  178. typedef enum {
  179. LOOKUP_NONE,
  180. LOOKUP_HIT,
  181. LOOKUP_MISS
  182. } lookup_t;
  183. /* recognized or "known" header fields; @?@ add more! */
  184. typedef enum {
  185. HDR_UNKNOWN = -1,
  186. HDR_ACCEPT = 0,
  187. HDR_ACCEPT_CHARSET,
  188. HDR_ACCEPT_ENCODING,
  189. HDR_ACCEPT_LANGUAGE,
  190. HDR_ACCEPT_RANGES,
  191. HDR_AGE,
  192. HDR_ALLOW,
  193. HDR_AUTHORIZATION,
  194. HDR_CACHE_CONTROL,
  195. HDR_CONNECTION,
  196. HDR_CONTENT_BASE,
  197. HDR_CONTENT_DISPOSITION,
  198. HDR_CONTENT_ENCODING,
  199. HDR_CONTENT_LANGUAGE,
  200. HDR_CONTENT_LENGTH,
  201. HDR_CONTENT_LOCATION,
  202. HDR_CONTENT_MD5,
  203. HDR_CONTENT_RANGE,
  204. HDR_CONTENT_TYPE,
  205. HDR_TE,
  206. HDR_TRANSFER_ENCODING,
  207. HDR_TRAILER,
  208. HDR_COOKIE,
  209. HDR_DATE,
  210. HDR_ETAG,
  211. HDR_EXPIRES,
  212. HDR_FROM,
  213. HDR_HOST,
  214. HDR_IF_MATCH,
  215. HDR_IF_MODIFIED_SINCE,
  216. HDR_IF_NONE_MATCH,
  217. HDR_IF_RANGE,
  218. HDR_LAST_MODIFIED,
  219. HDR_LINK,
  220. HDR_LOCATION,
  221. HDR_MAX_FORWARDS,
  222. HDR_MIME_VERSION,
  223. HDR_PRAGMA,
  224. HDR_PROXY_AUTHENTICATE,
  225. HDR_PROXY_AUTHENTICATION_INFO,
  226. HDR_PROXY_AUTHORIZATION,
  227. HDR_PROXY_CONNECTION,
  228. HDR_PUBLIC,
  229. HDR_RANGE,
  230. HDR_REQUEST_RANGE, /* some clients use this, sigh */
  231. HDR_REFERER,
  232. HDR_RETRY_AFTER,
  233. HDR_SERVER,
  234. HDR_SET_COOKIE,
  235. HDR_UPGRADE,
  236. HDR_USER_AGENT,
  237. HDR_VARY,
  238. HDR_VIA,
  239. HDR_EXPECT,
  240. HDR_WARNING,
  241. HDR_WWW_AUTHENTICATE,
  242. HDR_AUTHENTICATION_INFO,
  243. HDR_X_CACHE,
  244. HDR_X_CACHE_LOOKUP, /* tmp hack, remove later */
  245. HDR_X_FORWARDED_FOR,
  246. HDR_X_REQUEST_URI, /* appended if ADD_X_REQUEST_URI is #defined */
  247. HDR_X_SQUID_ERROR,
  248. HDR_NEGOTIATE,
  249. #if X_ACCELERATOR_VARY
  250. HDR_X_ACCELERATOR_VARY,
  251. #endif
  252. HDR_X_ERROR_URL, /* errormap, requested URL */
  253. HDR_X_ERROR_STATUS, /* errormap, received HTTP status line */
  254. HDR_X_HTTP09_FIRST_LINE, /* internal, first line of HTTP/0.9 response */
  255. HDR_FRONT_END_HTTPS,
  256. HDR_PROXY_SUPPORT,
  257. HDR_KEEP_ALIVE,
  258. HDR_OTHER,
  259. HDR_ENUM_END
  260. } http_hdr_type;
  261. typedef enum {
  262. CC_PUBLIC,
  263. CC_PRIVATE,
  264. CC_NO_CACHE,
  265. CC_NO_STORE,
  266. CC_NO_TRANSFORM,
  267. CC_MUST_REVALIDATE,
  268. CC_PROXY_REVALIDATE,
  269. CC_MAX_AGE,
  270. CC_S_MAXAGE,
  271. CC_MAX_STALE,
  272. CC_ONLY_IF_CACHED,
  273. CC_STALE_WHILE_REVALIDATE,
  274. CC_STALE_IF_ERROR,
  275. CC_OTHER,
  276. CC_ENUM_END
  277. } http_hdr_cc_type;
  278. /* possible types for http header fields */
  279. typedef enum {
  280. ftInvalid = HDR_ENUM_END, /* to catch nasty errors with hdr_id<->fld_type clashes */
  281. ftInt,
  282. ftStr,
  283. ftDate_1123,
  284. ftETag,
  285. ftPCc,
  286. ftPContRange,
  287. ftPRange,
  288. ftDate_1123_or_ETag,
  289. ftSize
  290. } field_type;
  291. /* possible owners of http header */
  292. typedef enum {
  293. hoNone,
  294. #if USE_HTCP
  295. hoHtcpReply,
  296. #endif
  297. hoRequest,
  298. hoReply
  299. } http_hdr_owner_type;
  300. typedef enum {
  301. HIER_NONE,
  302. HIER_DIRECT,
  303. SIBLING_HIT,
  304. PARENT_HIT,
  305. DEFAULT_PARENT,
  306. SINGLE_PARENT,
  307. FIRSTUP_PARENT,
  308. FIRST_PARENT_MISS,
  309. CLOSEST_PARENT_MISS,
  310. CLOSEST_PARENT,
  311. CLOSEST_DIRECT,
  312. NO_DIRECT_FAIL,
  313. SOURCE_FASTEST,
  314. ROUNDROBIN_PARENT,
  315. #if USE_CACHE_DIGESTS
  316. CD_PARENT_HIT,
  317. CD_SIBLING_HIT,
  318. #endif
  319. #if USE_CARP
  320. CARP,
  321. #endif
  322. ANY_OLD_PARENT,
  323. USERHASH_PARENT,
  324. SOURCEHASH_PARENT,
  325. PINNED,
  326. HIER_MAX
  327. } hier_code;
  328. typedef enum {
  329. ICP_INVALID,
  330. ICP_QUERY,
  331. ICP_HIT,
  332. ICP_MISS,
  333. ICP_ERR,
  334. ICP_SEND,
  335. ICP_SENDA,
  336. ICP_DATABEG,
  337. ICP_DATA,
  338. ICP_DATAEND,
  339. ICP_SECHO,
  340. ICP_DECHO,
  341. ICP_NOTIFY,
  342. ICP_INVALIDATE,
  343. ICP_DELETE,
  344. ICP_UNUSED15,
  345. ICP_UNUSED16,
  346. ICP_UNUSED17,
  347. ICP_UNUSED18,
  348. ICP_UNUSED19,
  349. ICP_UNUSED20,
  350. ICP_MISS_NOFETCH,
  351. ICP_DENIED,
  352. ICP_HIT_OBJ,
  353. ICP_END
  354. } icp_opcode;
  355. enum {
  356. NOT_IN_MEMORY,
  357. IN_MEMORY
  358. };
  359. enum {
  360. PING_NONE,
  361. PING_WAITING,
  362. PING_DONE
  363. };
  364. enum {
  365. STORE_OK,
  366. STORE_PENDING
  367. };
  368. enum {
  369. SWAPOUT_NONE,
  370. SWAPOUT_WRITING,
  371. SWAPOUT_DONE
  372. };
  373. typedef enum {
  374. STORE_NON_CLIENT,
  375. STORE_MEM_CLIENT,
  376. STORE_DISK_CLIENT
  377. } store_client_t;
  378. enum {
  379. METHOD_NONE, /* 000 */
  380. METHOD_GET, /* 001 */
  381. METHOD_POST, /* 010 */
  382. METHOD_PUT, /* 011 */
  383. METHOD_HEAD, /* 100 */
  384. METHOD_CONNECT, /* 101 */
  385. METHOD_TRACE, /* 110 */
  386. METHOD_PURGE, /* 111 */
  387. METHOD_OPTIONS,
  388. METHOD_DELETE, /* RFC2616 section 9.7 */
  389. METHOD_PROPFIND,
  390. METHOD_PROPPATCH,
  391. METHOD_MKCOL,
  392. METHOD_COPY,
  393. METHOD_MOVE,
  394. METHOD_LOCK,
  395. METHOD_UNLOCK,
  396. METHOD_BMOVE,
  397. METHOD_BDELETE,
  398. METHOD_BPROPFIND,
  399. METHOD_BPROPPATCH,
  400. METHOD_BCOPY,
  401. METHOD_SEARCH,
  402. METHOD_SUBSCRIBE,
  403. METHOD_UNSUBSCRIBE,
  404. METHOD_POLL,
  405. METHOD_REPORT,
  406. METHOD_MKACTIVITY,
  407. METHOD_CHECKOUT,
  408. METHOD_MERGE,
  409. /* Extension methods must be last, Add any new methods before this line */
  410. METHOD_EXT00,
  411. METHOD_EXT01,
  412. METHOD_EXT02,
  413. METHOD_EXT03,
  414. METHOD_EXT04,
  415. METHOD_EXT05,
  416. METHOD_EXT06,
  417. METHOD_EXT07,
  418. METHOD_EXT08,
  419. METHOD_EXT09,
  420. METHOD_EXT10,
  421. METHOD_EXT11,
  422. METHOD_EXT12,
  423. METHOD_EXT13,
  424. METHOD_EXT14,
  425. METHOD_EXT15,
  426. METHOD_EXT16,
  427. METHOD_EXT17,
  428. METHOD_EXT18,
  429. METHOD_EXT19,
  430. METHOD_ENUM_END
  431. };
  432. typedef unsigned int method_t;
  433. typedef enum {
  434. PROTO_NONE,
  435. PROTO_HTTP,
  436. PROTO_FTP,
  437. PROTO_GOPHER,
  438. PROTO_WAIS,
  439. PROTO_CACHEOBJ,
  440. PROTO_ICP,
  441. #if USE_HTCP
  442. PROTO_HTCP,
  443. #endif
  444. PROTO_URN,
  445. PROTO_WHOIS,
  446. PROTO_INTERNAL,
  447. PROTO_HTTPS,
  448. #if HS_FEAT_ICAP
  449. PROTO_ICAP,
  450. #endif
  451. PROTO_MAX
  452. } protocol_t;
  453. typedef enum {
  454. HTTP_STATUS_NONE = 0,
  455. HTTP_CONTINUE = 100,
  456. HTTP_SWITCHING_PROTOCOLS = 101,
  457. HTTP_PROCESSING = 102, /* RFC2518 section 10.1 */
  458. HTTP_OK = 200,
  459. HTTP_CREATED = 201,
  460. HTTP_ACCEPTED = 202,
  461. HTTP_NON_AUTHORITATIVE_INFORMATION = 203,
  462. HTTP_NO_CONTENT = 204,
  463. HTTP_RESET_CONTENT = 205,
  464. HTTP_PARTIAL_CONTENT = 206,
  465. HTTP_MULTI_STATUS = 207, /* RFC2518 section 10.2 */
  466. HTTP_MULTIPLE_CHOICES = 300,
  467. HTTP_MOVED_PERMANENTLY = 301,
  468. HTTP_MOVED_TEMPORARILY = 302,
  469. HTTP_SEE_OTHER = 303,
  470. HTTP_NOT_MODIFIED = 304,
  471. HTTP_USE_PROXY = 305,
  472. HTTP_TEMPORARY_REDIRECT = 307,
  473. HTTP_BAD_REQUEST = 400,
  474. HTTP_UNAUTHORIZED = 401,
  475. HTTP_PAYMENT_REQUIRED = 402,
  476. HTTP_FORBIDDEN = 403,
  477. HTTP_NOT_FOUND = 404,
  478. HTTP_METHOD_NOT_ALLOWED = 405,
  479. HTTP_NOT_ACCEPTABLE = 406,
  480. HTTP_PROXY_AUTHENTICATION_REQUIRED = 407,
  481. HTTP_REQUEST_TIMEOUT = 408,
  482. HTTP_CONFLICT = 409,
  483. HTTP_GONE = 410,
  484. HTTP_LENGTH_REQUIRED = 411,
  485. HTTP_PRECONDITION_FAILED = 412,
  486. HTTP_REQUEST_ENTITY_TOO_LARGE = 413,
  487. HTTP_REQUEST_URI_TOO_LONG = 414,
  488. HTTP_UNSUPPORTED_MEDIA_TYPE = 415,
  489. HTTP_EXPECTATION_FAILED = 417,
  490. HTTP_UNPROCESSABLE_ENTITY = 422, /* RFC2518 section 10.3 */
  491. HTTP_LOCKED = 423, /* RFC2518 section 10.4 */
  492. HTTP_FAILED_DEPENDENCY = 424, /* RFC2518 section 10.5 */
  493. HTTP_INTERNAL_SERVER_ERROR = 500,
  494. HTTP_NOT_IMPLEMENTED = 501,
  495. HTTP_BAD_GATEWAY = 502,
  496. HTTP_SERVICE_UNAVAILABLE = 503,
  497. HTTP_GATEWAY_TIMEOUT = 504,
  498. HTTP_HTTP_VERSION_NOT_SUPPORTED = 505,
  499. HTTP_INSUFFICIENT_STORAGE = 507, /* RFC2518 section 10.6 */
  500. HTTP_INVALID_HEADER = 600, /* Squid header parsing error */
  501. HTTP_HEADER_TOO_LARGE = 601 /* Header too large to process */
  502. } http_status;
  503. /*
  504. * These are for StoreEntry->flag, which is defined as a SHORT
  505. *
  506. * NOTE: These flags are written to swap.state, so think very carefully
  507. * about deleting or re-assigning!
  508. */
  509. enum {
  510. ENTRY_SPECIAL,
  511. ENTRY_REVALIDATE,
  512. DELAY_SENDING,
  513. RELEASE_REQUEST,
  514. REFRESH_FAILURE,
  515. ENTRY_CACHABLE,
  516. ENTRY_DISPATCHED,
  517. KEY_PRIVATE,
  518. ENTRY_FWD_HDR_WAIT,
  519. ENTRY_NEGCACHED,
  520. ENTRY_VALIDATED,
  521. ENTRY_BAD_LENGTH,
  522. ENTRY_ABORTED,
  523. ENTRY_DEFER_READ,
  524. KEY_EARLY_PUBLIC
  525. };
  526. typedef enum {
  527. ACCESS_DENIED,
  528. ACCESS_ALLOWED,
  529. ACCESS_REQ_PROXY_AUTH
  530. } allow_t;
  531. typedef enum {
  532. AUTH_ACL_CHALLENGE = -2,
  533. AUTH_ACL_HELPER = -1,
  534. AUTH_ACL_CANNOT_AUTHENTICATE = 0,
  535. AUTH_AUTHENTICATED = 1
  536. } auth_acl_t;
  537. typedef enum {
  538. AUTH_UNKNOWN, /* default */
  539. AUTH_BASIC,
  540. AUTH_NTLM,
  541. AUTH_DIGEST,
  542. AUTH_NEGOTIATE,
  543. AUTH_BROKEN /* known type, but broken data */
  544. } auth_type_t;
  545. /* stateful helper reservation info */
  546. typedef enum {
  547. S_HELPER_FREE, /* available for requests */
  548. S_HELPER_RESERVED, /* in a reserved state - no active request, but state data in the helper shouldn't be disturbed */
  549. S_HELPER_DEFERRED /* available for requests, and at least one more will come from a previous caller with the server pointer */
  550. } stateful_helper_reserve_t;
  551. #if SQUID_SNMP
  552. enum {
  553. SNMP_C_VIEW,
  554. SNMP_C_USER,
  555. SNMP_C_COMMUNITY
  556. };
  557. #endif
  558. typedef enum {
  559. MEM_NONE,
  560. MEM_2K_BUF,
  561. MEM_4K_BUF,
  562. MEM_8K_BUF,
  563. MEM_16K_BUF,
  564. MEM_32K_BUF,
  565. MEM_64K_BUF,
  566. MEM_ACL,
  567. MEM_ACL_DENY_INFO_LIST,
  568. MEM_ACL_IP_DATA,
  569. MEM_ACL_LIST,
  570. MEM_ACL_NAME_LIST,
  571. MEM_ACL_REQUEST_TYPE,
  572. MEM_AUTH_USER_T,
  573. MEM_AUTH_USER_HASH,
  574. MEM_ACL_PROXY_AUTH_MATCH,
  575. MEM_ACL_USER_DATA,
  576. MEM_ACL_TIME_DATA,
  577. #if USE_CACHE_DIGESTS
  578. MEM_CACHE_DIGEST,
  579. #endif
  580. MEM_CLIENT_INFO,
  581. MEM_STORE_CLIENT_BUF,
  582. MEM_LINK_LIST,
  583. MEM_DLINK_NODE,
  584. MEM_DONTFREE,
  585. MEM_DREAD_CTRL,
  586. MEM_DWRITE_Q,
  587. MEM_FQDNCACHE_ENTRY,
  588. MEM_FWD_SERVER,
  589. MEM_HELPER_REQUEST,
  590. MEM_HELPER_STATEFUL_REQUEST,
  591. MEM_HTTP_HDR_CC,
  592. MEM_HTTP_HDR_CONTENT_RANGE,
  593. MEM_HTTP_HDR_ENTRY,
  594. MEM_HTTP_HDR_RANGE,
  595. MEM_HTTP_HDR_RANGE_SPEC,
  596. MEM_HTTP_REPLY,
  597. MEM_INTLIST,
  598. MEM_IPCACHE_ENTRY,
  599. MEM_MD5_DIGEST,
  600. MEM_MEMOBJECT,
  601. MEM_MEM_NODE,
  602. MEM_NETDBENTRY,
  603. MEM_NET_DB_NAME,
  604. MEM_RELIST,
  605. MEM_REQUEST_T,
  606. MEM_STOREENTRY,
  607. MEM_WORDLIST,
  608. #if !USE_DNSSERVERS
  609. MEM_IDNS_QUERY,
  610. #endif
  611. MEM_EVENT,
  612. MEM_TLV,
  613. MEM_SWAP_LOG_DATA,
  614. #if USE_SSL
  615. MEM_ACL_CERT_DATA,
  616. #endif
  617. #if HS_FEAT_ICAP
  618. MEM_ICAP_OPT_DATA,
  619. MEM_ICAP_SERVICE_LIST,
  620. MEM_ICAP_CLASS,
  621. MEM_ICAP_ACCESS,
  622. #endif
  623. MEM_MAX
  624. } mem_type;
  625. /*
  626. * NOTE! We must preserve the order of this list!
  627. */
  628. enum {
  629. STORE_META_VOID, /* should not come up */
  630. STORE_META_KEY_URL, /* key w/ keytype */
  631. STORE_META_KEY_SHA,
  632. STORE_META_KEY_MD5,
  633. STORE_META_URL, /* the url , if not in the header */
  634. STORE_META_STD, /* standard metadata */
  635. STORE_META_HITMETERING, /* reserved for hit metering */
  636. STORE_META_VALID,
  637. STORE_META_VARY_HEADERS, /* Stores Vary request headers */
  638. STORE_META_STD_LFS, /* standard metadata in lfs format */
  639. STORE_META_OBJSIZE, /* object size, if its known */
  640. STORE_META_STOREURL, /* the store url, if different to the normal URL */
  641. STORE_META_END
  642. };
  643. enum {
  644. STORE_LOG_CREATE,
  645. STORE_LOG_SWAPIN,
  646. STORE_LOG_SWAPOUT,
  647. STORE_LOG_RELEASE,
  648. STORE_LOG_SWAPOUTFAIL
  649. };
  650. typedef enum {
  651. SWAP_LOG_NOP,
  652. SWAP_LOG_ADD,
  653. SWAP_LOG_DEL,
  654. SWAP_LOG_VERSION,
  655. SWAP_LOG_MAX
  656. } swap_log_op;
  657. /* parse state of HttpReply or HttpRequest */
  658. typedef enum {
  659. psReadyToParseStartLine = 0,
  660. psReadyToParseHeaders,
  661. psParsed,
  662. psError
  663. } HttpMsgParseState;
  664. enum {
  665. MEDIAN_HTTP,
  666. MEDIAN_ICP_QUERY,
  667. MEDIAN_DNS,
  668. MEDIAN_HIT,
  669. MEDIAN_MISS,
  670. MEDIAN_NM,
  671. MEDIAN_NH,
  672. MEDIAN_ICP_REPLY
  673. };
  674. enum {
  675. SENT,
  676. RECV
  677. };
  678. /*
  679. * These are field indicators for raw cache-cache netdb transfers
  680. */
  681. enum {
  682. NETDB_EX_NONE,
  683. NETDB_EX_NETWORK,
  684. NETDB_EX_RTT,
  685. NETDB_EX_HOPS
  686. };
  687. /*
  688. * cbdata types. similar to the MEM_* types above, but managed
  689. * in cbdata.c. A big difference is that these types are dynamically
  690. * allocated. This list is only a list of predefined types. Other types
  691. * are added runtime
  692. */
  693. typedef enum {
  694. CBDATA_UNKNOWN = 0,
  695. CBDATA_UNDEF = 0,
  696. CBDATA_acl_access,
  697. CBDATA_aclCheck_t,
  698. CBDATA_clientHttpRequest,
  699. CBDATA_ConnStateData,
  700. CBDATA_ErrorState,
  701. CBDATA_FwdState,
  702. CBDATA_generic_cbdata,
  703. CBDATA_helper,
  704. CBDATA_helper_server,
  705. CBDATA_statefulhelper,
  706. CBDATA_helper_stateful_server,
  707. CBDATA_HttpStateData,
  708. CBDATA_peer,
  709. CBDATA_ps_state,
  710. CBDATA_RemovalPolicy,
  711. CBDATA_RemovalPolicyWalker,
  712. CBDATA_RemovalPurgeWalker,
  713. CBDATA_store_client,
  714. #ifdef HS_FEAT_ICAP
  715. CBDATA_IcapStateData,
  716. CBDATA_icap_service,
  717. #endif
  718. CBDATA_FIRST_CUSTOM_TYPE = 1000
  719. } cbdata_type;
  720. /*
  721. * Return codes from checkVary(request)
  722. */
  723. enum {
  724. VARY_NONE,
  725. VARY_MATCH,
  726. VARY_OTHER,
  727. VARY_RESTART,
  728. VARY_CANCEL
  729. };
  730. /* Windows Port */
  731. #ifdef _SQUID_WIN32_
  732. /*
  733. * Supported Windows OS types codes
  734. */
  735. enum {
  736. _WIN_OS_UNKNOWN,
  737. _WIN_OS_WIN32S,
  738. _WIN_OS_WIN95,
  739. _WIN_OS_WIN98,
  740. _WIN_OS_WINME,
  741. _WIN_OS_WINNT,
  742. _WIN_OS_WIN2K,
  743. _WIN_OS_WINXP,
  744. _WIN_OS_WINNET,
  745. _WIN_OS_WINLON,
  746. _WIN_OS_WIN7
  747. };
  748. #endif
  749. /*
  750. * Special case pending filedescriptors. Set in fd_table[fd].read/write_pending
  751. */
  752. typedef enum {
  753. COMM_PENDING_NORMAL, /* No special processing required */
  754. COMM_PENDING_WANTS_READ, /* need to read, no matter what commSetSelect indicates */
  755. COMM_PENDING_WANTS_WRITE, /* need to write, no matter what commSetSelect indicates */
  756. COMM_PENDING_NOW /* needs to be called again, without needing to wait for readiness
  757. * for example when data is already buffered etc */
  758. } comm_pending;
  759. typedef enum {
  760. ST_OP_NONE,
  761. ST_OP_OPEN,
  762. ST_OP_CREATE
  763. } store_op_t;
  764. #if HS_FEAT_ICAP
  765. typedef enum {
  766. ICAP_STATUS_NONE = 0,
  767. ICAP_STATUS_CONTINUE = 100,
  768. ICAP_STATUS_SWITCHING_PROTOCOLS = 101,
  769. ICAP_STATUS_STATUS_OK = 200,
  770. ICAP_CREATED = 201,
  771. ICAP_STATUS_ACCEPTED = 202,
  772. ICAP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203,
  773. ICAP_STATUS_NO_MODIFICATION_NEEDED = 204,
  774. ICAP_STATUS_RESET_CONTENT = 205,
  775. ICAP_STATUS_PARTIAL_CONTENT = 206,
  776. ICAP_STATUS_MULTIPLE_CHOICES = 300,
  777. ICAP_STATUS_MOVED_PERMANENTLY = 301,
  778. ICAP_STATUS_MOVED_TEMPORARILY = 302,
  779. ICAP_STATUS_SEE_OTHER = 303,
  780. ICAP_STATUS_NOT_MODIFIED = 304,
  781. ICAP_STATUS_USE_PROXY = 305,
  782. ICAP_STATUS_BAD_REQUEST = 400,
  783. ICAP_STATUS_UNAUTHORIZED = 401,
  784. ICAP_STATUS_PAYMENT_REQUIRED = 402,
  785. ICAP_STATUS_FORBIDDEN = 403,
  786. ICAP_STATUS_SERVICE_NOT_FOUND = 404,
  787. ICAP_STATUS_METHOD_NOT_ALLOWED = 405,
  788. ICAP_STATUS_NOT_ACCEPTABLE = 406,
  789. ICAP_STATUS_PROXY_AUTHENTICATION_REQUIRED = 407,
  790. ICAP_STATUS_REQUEST_TIMEOUT = 408,
  791. ICAP_STATUS_CONFLICT = 409,
  792. ICAP_STATUS_GONE = 410,
  793. ICAP_STATUS_LENGTH_REQUIRED = 411,
  794. ICAP_STATUS_PRECONDITION_FAILED = 412,
  795. ICAP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413,
  796. ICAP_STATUS_REQUEST_URI_TOO_LARGE = 414,
  797. ICAP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
  798. ICAP_STATUS_INTERNAL_SERVER_ERROR = 500,
  799. ICAP_STATUS_NOT_IMPLEMENTED = 501,
  800. ICAP_STATUS_BAD_GATEWAY = 502,
  801. ICAP_STATUS_SERVICE_OVERLOADED = 503,
  802. ICAP_STATUS_GATEWAY_TIMEOUT = 504,
  803. ICAP_STATUS_ICAP_VERSION_NOT_SUPPORTED = 505,
  804. ICAP_STATUS_INVALID_HEADER = 600
  805. } icap_status;
  806. /*
  807. * these values are used as index in an array, so it seems to be better to
  808. * assign some numbers
  809. */
  810. typedef enum {
  811. ICAP_SERVICE_REQMOD_PRECACHE = 0,
  812. ICAP_SERVICE_REQMOD_POSTCACHE = 1,
  813. ICAP_SERVICE_RESPMOD_PRECACHE = 2,
  814. ICAP_SERVICE_RESPMOD_POSTCACHE = 3,
  815. ICAP_SERVICE_MAX = 4
  816. } icap_service_t;
  817. typedef enum {
  818. ICAP_METHOD_NONE,
  819. ICAP_METHOD_OPTION,
  820. ICAP_METHOD_REQMOD,
  821. ICAP_METHOD_RESPMOD
  822. } icap_method_t;
  823. #endif /* HS_FEAT_ICAP */
  824. #endif /* SQUID_ENUMS_H */