]> git.ipfire.org Git - thirdparty/squid.git/blame - src/format/ByteCode.h
%busy_time: Time spent in transaction-related code (#1216)
[thirdparty/squid.git] / src / format / ByteCode.h
CommitLineData
bbc27441 1/*
bf95c10a 2 * Copyright (C) 1996-2022 The Squid Software Foundation and contributors
bbc27441
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
31971e6a
AJ
9#ifndef _SQUID_FMT_BYTECODE_H
10#define _SQUID_FMT_BYTECODE_H
38e16f92 11
20efa1c2 12/*
38e16f92
AJ
13 * Squid configuration allows users to define custom formats in
14 * several components.
15 * - logging
16 * - external ACL input
17 * - deny page URL
20efa1c2 18 *
38e16f92
AJ
19 * These enumerations and classes define the API for parsing of
20 * format directives to define these patterns. Along with output
21 * functionality to produce formatted buffers.
20efa1c2 22 */
20efa1c2 23
38e16f92
AJ
24namespace Format
25{
20efa1c2 26
20efa1c2 27/*
2f8abb64 28 * Bytecodes for the configurable format stuff
20efa1c2
AJ
29 */
30typedef enum {
f53969cc 31 LFT_NONE, /* dummy */
31971e6a
AJ
32
33 /* arbitrary string between tokens */
20efa1c2
AJ
34 LFT_STRING,
35
31971e6a 36 /* client TCP connection remote end details */
20efa1c2
AJ
37 LFT_CLIENT_IP_ADDRESS,
38 LFT_CLIENT_FQDN,
39 LFT_CLIENT_PORT,
20efa1c2 40 LFT_CLIENT_EUI,
20efa1c2 41
31971e6a 42 /* client TCP connection local end details */
8652f8e7 43 LFT_CLIENT_LOCAL_IP,
8652f8e7 44 LFT_CLIENT_LOCAL_PORT,
31971e6a 45 /*LFT_CLIENT_LOCAL_FQDN, (rDNS) */
f123f5e9
CT
46 LFT_CLIENT_LOCAL_TOS,
47 LFT_CLIENT_LOCAL_NFMARK,
31971e6a 48
a120b7a8
CT
49 LFT_TRANSPORT_CLIENT_CONNECTION_ID,
50
6131103b
CT
51 LFT_CLIENT_HANDSHAKE,
52
31971e6a
AJ
53 /* client connection local squid.conf details */
54 LFT_LOCAL_LISTENING_IP,
28417506 55 LFT_LOCAL_LISTENING_PORT,
31971e6a
AJ
56 /*LFT_LOCAL_LISTENING_NAME, (myportname) */
57
58 /* server TCP connection remote end details */
59 LFT_SERVER_IP_ADDRESS,
60 LFT_SERVER_FQDN_OR_PEER_NAME,
61 LFT_SERVER_PORT,
8652f8e7 62
31971e6a 63 /* server TCP connection local end details */
8652f8e7
AJ
64 LFT_SERVER_LOCAL_IP,
65 LFT_SERVER_LOCAL_IP_OLD_27,
66 LFT_SERVER_LOCAL_PORT,
f123f5e9
CT
67 LFT_SERVER_LOCAL_TOS,
68 LFT_SERVER_LOCAL_NFMARK,
20efa1c2 69
2f8abb64 70 /* original Request-Line details received from client */
f025622f
AJ
71 LFT_CLIENT_REQ_METHOD,
72 LFT_CLIENT_REQ_URI,
5aca9cf2 73 LFT_CLIENT_REQ_URLSCHEME,
fa450988 74 LFT_CLIENT_REQ_URLDOMAIN,
5aca9cf2 75 LFT_CLIENT_REQ_URLPORT,
f025622f
AJ
76 LFT_CLIENT_REQ_URLPATH,
77 /* LFT_CLIENT_REQ_QUERY, */
78 LFT_CLIENT_REQ_VERSION,
79
2f8abb64 80 /* Request-Line details received from client (legacy, filtered) */
20efa1c2
AJ
81 LFT_REQUEST_METHOD,
82 LFT_REQUEST_URI,
f025622f
AJ
83 LFT_REQUEST_URLPATH_OLD_31,
84 /*LFT_REQUEST_QUERY, */
85 LFT_REQUEST_VERSION_OLD_2X,
20efa1c2 86 LFT_REQUEST_VERSION,
d074f918 87 LFT_REQUEST_URLGROUP_OLD_2X,
20efa1c2 88
31971e6a
AJ
89 /* request header details pre-adaptation */
90 LFT_REQUEST_HEADER,
91 LFT_REQUEST_HEADER_ELEM,
92 LFT_REQUEST_ALL_HEADERS,
93
94 /* request header details post-adaptation */
95 LFT_ADAPTED_REQUEST_HEADER,
96 LFT_ADAPTED_REQUEST_HEADER_ELEM,
97 LFT_ADAPTED_REQUEST_ALL_HEADERS,
98
f025622f
AJ
99 /* Request-Line details sent to the server/peer */
100 LFT_SERVER_REQ_METHOD,
101 LFT_SERVER_REQ_URI,
5aca9cf2
AJ
102 LFT_SERVER_REQ_URLSCHEME,
103 LFT_SERVER_REQ_URLDOMAIN,
104 LFT_SERVER_REQ_URLPORT,
f025622f
AJ
105 LFT_SERVER_REQ_URLPATH,
106 /*LFT_SERVER_REQ_QUERY, */
107 LFT_SERVER_REQ_VERSION,
108
31971e6a 109 /* request meta details */
d6df21d2
AJ
110 LFT_CLIENT_REQUEST_SIZE_TOTAL,
111 LFT_CLIENT_REQUEST_SIZE_HEADERS,
20efa1c2
AJ
112 /*LFT_REQUEST_SIZE_BODY, */
113 /*LFT_REQUEST_SIZE_BODY_NO_TE, */
114
2f8abb64 115 /* original Status-Line details received from server */
9837567d 116 // TODO: implement server detail logging
31971e6a
AJ
117
118 /* Status-Line details sent to the client */
9837567d 119 // TODO: implement server detail logging
31971e6a
AJ
120
121 /* response Status-Line details (legacy, filtered) */
122 LFT_HTTP_SENT_STATUS_CODE_OLD_30,
123 LFT_HTTP_SENT_STATUS_CODE,
124 LFT_HTTP_RECEIVED_STATUS_CODE,
125 /*LFT_HTTP_STATUS, */
126 LFT_HTTP_BODY_BYTES_READ,
127
128 /* response header details pre-adaptation */
129 LFT_REPLY_HEADER,
130 LFT_REPLY_HEADER_ELEM,
131 LFT_REPLY_ALL_HEADERS,
132
133 /* response header details post-adaptation */
134 /* LFT_ADAPTED_REPLY_HEADER, */
135 /* LFT_ADAPTED_REPLY_HEADER_ELEM, */
136 /* LFT_ADAPTED_REPLY_ALL_HEADERS, */
137
138 /* response meta details */
d6df21d2 139 LFT_ADAPTED_REPLY_SIZE_TOTAL,
20efa1c2
AJ
140 LFT_REPLY_HIGHOFFSET,
141 LFT_REPLY_OBJECTSIZE,
d6df21d2 142 LFT_ADAPTED_REPLY_SIZE_HEADERS,
20efa1c2
AJ
143 /*LFT_REPLY_SIZE_BODY, */
144 /*LFT_REPLY_SIZE_BODY_NO_TE, */
145
d6df21d2
AJ
146 LFT_CLIENT_IO_SIZE_TOTAL,
147
31971e6a
AJ
148 /* client credentials */
149 LFT_USER_NAME, /* any source will do */
150 LFT_USER_LOGIN,
151 LFT_USER_IDENT,
152 /*LFT_USER_REALM, */
153 /*LFT_USER_SCHEME, */
154 LFT_USER_EXTERNAL,
155 /* LFT_USER_SSL_CERT, */
156
157 /* global time details */
158 LFT_TIME_SECONDS_SINCE_EPOCH,
159 LFT_TIME_SUBSECOND,
160 LFT_TIME_LOCALTIME,
161 LFT_TIME_GMT,
af0ded40 162 LFT_TIME_START, // the time the master transaction started
31971e6a
AJ
163
164 /* processing time details */
165 LFT_TIME_TO_HANDLE_REQUEST,
166 LFT_PEER_RESPONSE_TIME,
167 LFT_TOTAL_SERVER_SIDE_RESPONSE_TIME,
168 LFT_DNS_WAIT_TIME,
0cd2a1b6 169 LFT_BUSY_TIME,
31971e6a
AJ
170
171 /* Squid internal processing details */
172 LFT_SQUID_STATUS,
173 LFT_SQUID_ERROR,
174 LFT_SQUID_ERROR_DETAIL,
175 LFT_SQUID_HIERARCHY,
176
177 LFT_MIME_TYPE,
20efa1c2 178 LFT_TAG,
20efa1c2
AJ
179 LFT_EXT_LOG,
180
181 LFT_SEQUENCE_NUMBER,
182
183#if USE_ADAPTATION
31971e6a
AJ
184 LFT_ADAPTATION_SUM_XACT_TIMES,
185 LFT_ADAPTATION_ALL_XACT_TIMES,
ed231061
AR
186 LFT_ADAPTATION_LAST_HEADER,
187 LFT_ADAPTATION_LAST_HEADER_ELEM,
188 LFT_ADAPTATION_LAST_ALL_HEADERS,
20efa1c2
AJ
189#endif
190
191#if ICAP_CLIENT
192
193 LFT_ICAP_TOTAL_TIME,
20efa1c2
AJ
194
195 LFT_ICAP_ADDR,
196 LFT_ICAP_SERV_NAME,
197 LFT_ICAP_REQUEST_URI,
198 LFT_ICAP_REQUEST_METHOD,
199 LFT_ICAP_BYTES_SENT,
200 LFT_ICAP_BYTES_READ,
201 LFT_ICAP_BODY_BYTES_READ,
202
203 LFT_ICAP_REQ_HEADER,
204 LFT_ICAP_REQ_HEADER_ELEM,
205 LFT_ICAP_REQ_ALL_HEADERS,
206
207 LFT_ICAP_REP_HEADER,
208 LFT_ICAP_REP_HEADER_ELEM,
209 LFT_ICAP_REP_ALL_HEADERS,
210
211 LFT_ICAP_TR_RESPONSE_TIME,
212 LFT_ICAP_IO_TIME,
213 LFT_ICAP_OUTCOME,
214 LFT_ICAP_STATUS_CODE,
215#endif
d4806c91 216 LFT_CREDENTIALS,
20efa1c2 217
cb4f4424 218#if USE_OPENSSL
08097970 219 LFT_SSL_BUMP_MODE,
f4698e0b
CT
220 LFT_SSL_USER_CERT_SUBJECT,
221 LFT_SSL_USER_CERT_ISSUER,
cedca6e7 222 LFT_SSL_CLIENT_SNI,
789dda8d
CT
223 LFT_SSL_SERVER_CERT_SUBJECT,
224 LFT_SSL_SERVER_CERT_ISSUER,
7598eb63 225 LFT_SSL_SERVER_CERT_ERRORS,
12b5040f 226 LFT_SSL_SERVER_CERT_WHOLE,
2bcab852
CT
227 LFT_TLS_CLIENT_NEGOTIATED_VERSION,
228 LFT_TLS_SERVER_NEGOTIATED_VERSION,
229 LFT_TLS_CLIENT_NEGOTIATED_CIPHER,
230 LFT_TLS_SERVER_NEGOTIATED_CIPHER,
231 LFT_TLS_CLIENT_RECEIVED_HELLO_VERSION,
232 LFT_TLS_SERVER_RECEIVED_HELLO_VERSION,
233 LFT_TLS_CLIENT_SUPPORTED_VERSION,
234 LFT_TLS_SERVER_SUPPORTED_VERSION,
08097970
AR
235#endif
236
d7f4a0b7 237 LFT_NOTE,
f53969cc 238 LFT_PERCENT, /* special string cases for escaped chars */
7cfd3a41 239 LFT_MASTER_XACTION,
5aca9cf2
AJ
240
241 // TODO assign better bytecode names and Token strings for these
ce810e33 242#if USE_OPENSSL
5aca9cf2
AJ
243 LFT_EXT_ACL_USER_CERT_RAW,
244 LFT_EXT_ACL_USER_CERTCHAIN_RAW,
245 LFT_EXT_ACL_USER_CERT,
246 LFT_EXT_ACL_USER_CA_CERT,
ce810e33 247#endif
5aca9cf2
AJ
248 LFT_EXT_ACL_CLIENT_EUI48,
249 LFT_EXT_ACL_CLIENT_EUI64,
250 LFT_EXT_ACL_NAME,
36c774f7 251 LFT_EXT_ACL_DATA,
5aca9cf2 252
36c774f7
EB
253 /* PROXY protocol details */
254 LFT_PROXY_PROTOCOL_RECEIVED_HEADER,
255 LFT_PROXY_PROTOCOL_RECEIVED_HEADER_ELEM,
256 LFT_PROXY_PROTOCOL_RECEIVED_ALL_HEADERS
38e16f92 257} ByteCode_t;
20efa1c2 258
38e16f92
AJ
259/// Quoting style for a format output.
260enum Quoting {
20efa1c2
AJ
261 LOG_QUOTE_NONE = 0,
262 LOG_QUOTE_QUOTES,
263 LOG_QUOTE_MIMEBLOB,
264 LOG_QUOTE_URL,
95d78f10 265 LOG_QUOTE_SHELL,
20efa1c2
AJ
266 LOG_QUOTE_RAW
267};
268
38e16f92 269} // namespace Format
20efa1c2 270
31971e6a 271#endif /* _SQUID_FMT_BYTECODE_H */
f53969cc 272