]> git.ipfire.org Git - thirdparty/squid.git/blame - src/http/RegisteredHeaders.h
Merged from trunk
[thirdparty/squid.git] / src / http / RegisteredHeaders.h
CommitLineData
eac61ce1 1/*
bde978a6 2 * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
eac61ce1
AJ
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
1139d406
AJ
9#ifndef SQUID_HTTP_REGISTEREDHEADERS_H
10#define SQUID_HTTP_REGISTEREDHEADERS_H
11
12/// recognized or "known" header fields; and the RFC which defines them (or not)
17437edf 13/// http://www.iana.org/assignments/message-headers/message-headers.xhtml
1139d406 14typedef enum {
f73b02a9
AJ
15 HDR_ACCEPT = 0, /**< RFC 7231 */
16 HDR_ACCEPT_CHARSET, /**< RFC 7231 */
17 HDR_ACCEPT_ENCODING, /**< RFC 7231 */
18 /*HDR_ACCEPT_FEATURES,*/ /* RFC 2295 */
19 HDR_ACCEPT_LANGUAGE, /**< RFC 7231 */
20 HDR_ACCEPT_RANGES, /**< RFC 7233 */
21 HDR_AGE, /**< RFC 7234 */
22 HDR_ALLOW, /**< RFC 7231 */
ec9d1de5 23 HDR_ALTERNATE_PROTOCOL, /**< GFE custom header we may have to erase */
f73b02a9
AJ
24 HDR_AUTHENTICATION_INFO, /**< RFC 2617 */
25 HDR_AUTHORIZATION, /**< RFC 7235, 4559 */
26 HDR_CACHE_CONTROL, /**< RFC 7234 */
27 HDR_CONNECTION, /**< RFC 7230 */
28 HDR_CONTENT_BASE, /**< obsoleted RFC 2068 */
29 HDR_CONTENT_DISPOSITION, /**< RFC 2183, 6266 */
30 HDR_CONTENT_ENCODING, /**< RFC 7231 */
31 HDR_CONTENT_LANGUAGE, /**< RFC 7231 */
32 HDR_CONTENT_LENGTH, /**< RFC 7230 */
33 HDR_CONTENT_LOCATION, /**< RFC 7231 */
34 HDR_CONTENT_MD5, /**< deprecated, RFC 2616 */
35 HDR_CONTENT_RANGE, /**< RFC 7233 */
36 HDR_CONTENT_TYPE, /**< RFC 7231 */
37 HDR_COOKIE, /**< RFC 6265 header we may need to erase */
1139d406 38 HDR_COOKIE2, /**< obsolete RFC 2965 header we may need to erase */
f73b02a9 39 HDR_DATE, /**< RFC 7231 */
1139d406
AJ
40 /*HDR_DAV,*/ /* RFC 2518 */
41 /*HDR_DEPTH,*/ /* RFC 2518 */
f73b02a9 42 /*HDR_DERIVED_FROM,*/ /* deprecated RFC 2068 */
1139d406 43 /*HDR_DESTINATION,*/ /* RFC 2518 */
f73b02a9
AJ
44 HDR_ETAG, /**< RFC 7232 */
45 HDR_EXPECT, /**< RFC 7231 */
46 HDR_EXPIRES, /**< RFC 7234 */
1b2ae44e 47 HDR_FORWARDED, /**< RFC 7239 */
f73b02a9
AJ
48 HDR_FROM, /**< RFC 7231 */
49 HDR_HOST, /**< RFC 7230 */
c27e1e37 50 HDR_HTTP2_SETTINGS, /**< RFC 7540 */
1139d406 51 /*HDR_IF,*/ /* RFC 2518 */
f73b02a9
AJ
52 HDR_IF_MATCH, /**< RFC 7232 */
53 HDR_IF_MODIFIED_SINCE, /**< RFC 7232 */
54 HDR_IF_NONE_MATCH, /**< RFC 7232 */
55 HDR_IF_RANGE, /**< RFC 7233 */
56 HDR_IF_UNMODIFIED_SINCE, /**< RFC 7232 */
57 HDR_KEEP_ALIVE, /**< obsoleted RFC 2068 header we may need to erase */
1139d406 58 HDR_KEY, /**< experimental RFC Draft draft-fielding-http-key-02 */
f73b02a9
AJ
59 HDR_LAST_MODIFIED, /**< RFC 7232 */
60 HDR_LINK, /**< RFC 5988 */
61 HDR_LOCATION, /**< RFC 7231 */
1139d406 62 /*HDR_LOCK_TOKEN,*/ /* RFC 2518 */
f73b02a9
AJ
63 HDR_MAX_FORWARDS, /**< RFC 7231 */
64 HDR_MIME_VERSION, /**< RFC 2045, 7231 */
1139d406
AJ
65 HDR_NEGOTIATE, /**< experimental RFC 2295. Why only this one from 2295? */
66 /*HDR_OVERWRITE,*/ /* RFC 2518 */
67 HDR_ORIGIN, /* CORS Draft specification (see http://www.w3.org/TR/cors/) */
f73b02a9
AJ
68 HDR_PRAGMA, /**< RFC 7234 */
69 HDR_PROXY_AUTHENTICATE, /**< RFC 7235 */
1139d406 70 HDR_PROXY_AUTHENTICATION_INFO, /**< RFC 2617 */
f73b02a9 71 HDR_PROXY_AUTHORIZATION, /**< RFC 7235 */
1139d406
AJ
72 HDR_PROXY_CONNECTION, /**< obsolete Netscape header we may need to erase. */
73 HDR_PROXY_SUPPORT, /**< RFC 4559 */
f73b02a9
AJ
74 HDR_PUBLIC, /**< RFC 2068 */
75 HDR_RANGE, /**< RFC 7233 */
76 HDR_REFERER, /**< RFC 7231 */
1139d406 77 HDR_REQUEST_RANGE, /**< some clients use this, sigh */
f73b02a9
AJ
78 HDR_RETRY_AFTER, /**< RFC 7231 */
79 HDR_SERVER, /**< RFC 7231 */
80 HDR_SET_COOKIE, /**< RFC 6265 header we may need to erase */
81 HDR_SET_COOKIE2, /**< obsoleted RFC 2965 header we may need to erase */
1139d406
AJ
82 /*HDR_STATUS_URI,*/ /* RFC 2518 */
83 /*HDR_TCN,*/ /* experimental RFC 2295 */
f73b02a9 84 HDR_TE, /**< RFC 7230 */
1139d406 85 /*HDR_TIMEOUT,*/ /* RFC 2518 */
1b2ae44e 86 HDR_TITLE, /* obsolete draft suggested header */
f73b02a9
AJ
87 HDR_TRAILER, /**< RFC 7230 */
88 HDR_TRANSFER_ENCODING, /**< RFC 7230 */
1139d406
AJ
89 HDR_TRANSLATE, /**< IIS custom header we may need to erase */
90 HDR_UNLESS_MODIFIED_SINCE, /**< IIS custom header we may need to erase */
f73b02a9
AJ
91 HDR_UPGRADE, /**< RFC 7230 */
92 HDR_USER_AGENT, /**< RFC 7231 */
1139d406 93 /*HDR_VARIANT_VARY,*/ /* experimental RFC 2295 */
f73b02a9
AJ
94 HDR_VARY, /**< RFC 7231 */
95 HDR_VIA, /**< RFC 7230 */
96 HDR_WARNING, /**< RFC 7234 */
97 HDR_WWW_AUTHENTICATE, /**< RFC 7235, 4559 */
1139d406
AJ
98 HDR_X_CACHE, /**< Squid custom header */
99 HDR_X_CACHE_LOOKUP, /**< Squid custom header. temporary hack that became de-facto. TODO remove */
f73b02a9 100 HDR_X_FORWARDED_FOR, /**< obsolete Squid custom header, RFC 7239 */
1139d406
AJ
101 HDR_X_REQUEST_URI, /**< Squid custom header appended if ADD_X_REQUEST_URI is defined */
102 HDR_X_SQUID_ERROR, /**< Squid custom header on generated error responses */
103#if X_ACCELERATOR_VARY
104 HDR_X_ACCELERATOR_VARY, /**< obsolete Squid custom header. */
105#endif
106#if USE_ADAPTATION
107 HDR_X_NEXT_SERVICES, /**< Squid custom ICAP header */
108#endif
109 HDR_SURROGATE_CAPABILITY, /**< Edge Side Includes (ESI) header */
110 HDR_SURROGATE_CONTROL, /**< Edge Side Includes (ESI) header */
111 HDR_FRONT_END_HTTPS, /**< MS Exchange custom header we may have to add */
17437edf
AJ
112 HDR_FTP_COMMAND, /**< Internal header for FTP command */
113 HDR_FTP_ARGUMENTS, /**< Internal header for FTP command arguments */
114 HDR_FTP_PRE, /**< Internal header containing leading FTP control response lines */
115 HDR_FTP_STATUS, /**< Internal header for FTP reply status */
116 HDR_FTP_REASON, /**< Internal header for FTP reply reason */
1139d406 117 HDR_OTHER, /**< internal tag value for "unknown" headers */
fadc02c9
FC
118 HDR_ENUM_END,
119 HDR_BAD_HDR = -1
1139d406
AJ
120} http_hdr_type;
121
dc25554a 122/** possible types for http header fields */
07697384 123//TODO: move to strongly-typed enums? (enum class)
dc25554a
FC
124typedef enum {
125 ftInvalid = HDR_ENUM_END, /**< to catch nasty errors with hdr_id<->fld_type clashes */
126 ftInt,
127 ftInt64,
128 ftStr,
129 ftDate_1123,
130 ftETag,
131 ftPCc,
132 ftPContRange,
133 ftPRange,
134 ftPSc,
135 ftDate_1123_or_ETag
136} field_type;
137
138/* POD for headerTable */
139class HeaderTableRecord {
140public:
141 const char *name;
142 http_hdr_type id;
143 field_type type;
144};
145
146extern const HeaderTableRecord headerTable[];
147
1139d406 148#endif /* SQUID_HTTP_REGISTEREDHEADERS_H */
f53969cc 149