]> git.ipfire.org Git - thirdparty/squid.git/blob - src/format/ByteCode.h
Merge mime.cc refactoring work
[thirdparty/squid.git] / src / format / ByteCode.h
1 #ifndef _SQUID_FMT_BYTECODE_H
2 #define _SQUID_FMT_BYTECODE_H
3
4 /*
5 * Squid configuration allows users to define custom formats in
6 * several components.
7 * - logging
8 * - external ACL input
9 * - deny page URL
10 *
11 * These enumerations and classes define the API for parsing of
12 * format directives to define these patterns. Along with output
13 * functionality to produce formatted buffers.
14 */
15
16 namespace Format
17 {
18
19 /*
20 * Bytecodes for the configureable format stuff
21 */
22 typedef enum {
23 LFT_NONE, /* dummy */
24
25 /* arbitrary string between tokens */
26 LFT_STRING,
27
28 /* client TCP connection remote end details */
29 LFT_CLIENT_IP_ADDRESS,
30 LFT_CLIENT_FQDN,
31 LFT_CLIENT_PORT,
32 LFT_CLIENT_EUI,
33
34 /* client TCP connection local end details */
35 LFT_CLIENT_LOCAL_IP,
36 LFT_CLIENT_LOCAL_PORT,
37 /*LFT_CLIENT_LOCAL_FQDN, (rDNS) */
38
39 /* client connection local squid.conf details */
40 LFT_LOCAL_LISTENING_IP,
41 LFT_LOCAL_LISTENING_PORT,
42 /*LFT_LOCAL_LISTENING_NAME, (myportname) */
43
44 /* server TCP connection remote end details */
45 LFT_SERVER_IP_ADDRESS,
46 LFT_SERVER_FQDN_OR_PEER_NAME,
47 LFT_SERVER_PORT,
48
49 /* server TCP connection local end details */
50 LFT_SERVER_LOCAL_IP,
51 LFT_SERVER_LOCAL_IP_OLD_27,
52 LFT_SERVER_LOCAL_PORT,
53
54 /* original Request-Line details recieved from client */
55 LFT_CLIENT_REQ_METHOD,
56 LFT_CLIENT_REQ_URI,
57 LFT_CLIENT_REQ_URLPATH,
58 /* LFT_CLIENT_REQ_QUERY, */
59 LFT_CLIENT_REQ_VERSION,
60
61 /* Request-Line details recieved from client (legacy, filtered) */
62 LFT_REQUEST_METHOD,
63 LFT_REQUEST_URI,
64 LFT_REQUEST_URLPATH_OLD_31,
65 /*LFT_REQUEST_QUERY, */
66 LFT_REQUEST_VERSION_OLD_2X,
67 LFT_REQUEST_VERSION,
68
69 /* request header details pre-adaptation */
70 LFT_REQUEST_HEADER,
71 LFT_REQUEST_HEADER_ELEM,
72 LFT_REQUEST_ALL_HEADERS,
73
74 /* request header details post-adaptation */
75 LFT_ADAPTED_REQUEST_HEADER,
76 LFT_ADAPTED_REQUEST_HEADER_ELEM,
77 LFT_ADAPTED_REQUEST_ALL_HEADERS,
78
79 /* Request-Line details sent to the server/peer */
80 LFT_SERVER_REQ_METHOD,
81 LFT_SERVER_REQ_URI,
82 LFT_SERVER_REQ_URLPATH,
83 /*LFT_SERVER_REQ_QUERY, */
84 LFT_SERVER_REQ_VERSION,
85
86 /* request meta details */
87 LFT_REQUEST_SIZE_TOTAL,
88 /*LFT_REQUEST_SIZE_LINE, */
89 LFT_REQUEST_SIZE_HEADERS,
90 /*LFT_REQUEST_SIZE_BODY, */
91 /*LFT_REQUEST_SIZE_BODY_NO_TE, */
92
93 /* original Status-Line details recieved from server */
94 // XXX: todo
95
96 /* Status-Line details sent to the client */
97 // XXX: todo
98
99 /* response Status-Line details (legacy, filtered) */
100 LFT_HTTP_SENT_STATUS_CODE_OLD_30,
101 LFT_HTTP_SENT_STATUS_CODE,
102 LFT_HTTP_RECEIVED_STATUS_CODE,
103 /*LFT_HTTP_STATUS, */
104 LFT_HTTP_BODY_BYTES_READ,
105
106 /* response header details pre-adaptation */
107 LFT_REPLY_HEADER,
108 LFT_REPLY_HEADER_ELEM,
109 LFT_REPLY_ALL_HEADERS,
110
111 /* response header details post-adaptation */
112 /* LFT_ADAPTED_REPLY_HEADER, */
113 /* LFT_ADAPTED_REPLY_HEADER_ELEM, */
114 /* LFT_ADAPTED_REPLY_ALL_HEADERS, */
115
116 /* response meta details */
117 LFT_REPLY_SIZE_TOTAL,
118 LFT_REPLY_HIGHOFFSET,
119 LFT_REPLY_OBJECTSIZE,
120 /*LFT_REPLY_SIZE_LINE, */
121 LFT_REPLY_SIZE_HEADERS,
122 /*LFT_REPLY_SIZE_BODY, */
123 /*LFT_REPLY_SIZE_BODY_NO_TE, */
124
125 /* client credentials */
126 LFT_USER_NAME, /* any source will do */
127 LFT_USER_LOGIN,
128 LFT_USER_IDENT,
129 /*LFT_USER_REALM, */
130 /*LFT_USER_SCHEME, */
131 LFT_USER_EXTERNAL,
132 /* LFT_USER_SSL_CERT, */
133
134 /* global time details */
135 LFT_TIME_SECONDS_SINCE_EPOCH,
136 LFT_TIME_SUBSECOND,
137 LFT_TIME_LOCALTIME,
138 LFT_TIME_GMT,
139
140 /* processing time details */
141 LFT_TIME_TO_HANDLE_REQUEST,
142 LFT_PEER_RESPONSE_TIME,
143 LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME,
144 LFT_DNS_WAIT_TIME,
145
146 /* Squid internal processing details */
147 LFT_SQUID_STATUS,
148 LFT_SQUID_ERROR,
149 LFT_SQUID_ERROR_DETAIL,
150 LFT_SQUID_HIERARCHY,
151
152 LFT_MIME_TYPE,
153 LFT_TAG,
154 LFT_IO_SIZE_TOTAL,
155 LFT_EXT_LOG,
156
157 LFT_SEQUENCE_NUMBER,
158
159 #if USE_ADAPTATION
160 LFT_ADAPTATION_SUM_XACT_TIMES,
161 LFT_ADAPTATION_ALL_XACT_TIMES,
162 LFT_ADAPTATION_LAST_HEADER,
163 LFT_ADAPTATION_LAST_HEADER_ELEM,
164 LFT_ADAPTATION_LAST_ALL_HEADERS,
165 #endif
166
167 #if ICAP_CLIENT
168
169 LFT_ICAP_TOTAL_TIME,
170
171 LFT_ICAP_ADDR,
172 LFT_ICAP_SERV_NAME,
173 LFT_ICAP_REQUEST_URI,
174 LFT_ICAP_REQUEST_METHOD,
175 LFT_ICAP_BYTES_SENT,
176 LFT_ICAP_BYTES_READ,
177 LFT_ICAP_BODY_BYTES_READ,
178
179 LFT_ICAP_REQ_HEADER,
180 LFT_ICAP_REQ_HEADER_ELEM,
181 LFT_ICAP_REQ_ALL_HEADERS,
182
183 LFT_ICAP_REP_HEADER,
184 LFT_ICAP_REP_HEADER_ELEM,
185 LFT_ICAP_REP_ALL_HEADERS,
186
187 LFT_ICAP_TR_RESPONSE_TIME,
188 LFT_ICAP_IO_TIME,
189 LFT_ICAP_OUTCOME,
190 LFT_ICAP_STATUS_CODE,
191 #endif
192
193 #if USE_SSL
194 LFT_SSL_BUMP_MODE,
195 LFT_SSL_USER_CERT_SUBJECT,
196 LFT_SSL_USER_CERT_ISSUER,
197 #endif
198
199 LFT_NOTE,
200 LFT_PERCENT /* special string cases for escaped chars */
201 } ByteCode_t;
202
203 /// Quoting style for a format output.
204 enum Quoting {
205 LOG_QUOTE_NONE = 0,
206 LOG_QUOTE_QUOTES,
207 LOG_QUOTE_MIMEBLOB,
208 LOG_QUOTE_URL,
209 LOG_QUOTE_RAW
210 };
211
212 } // namespace Format
213
214 #endif /* _SQUID_FMT_BYTECODE_H */