lsquic_ev_log.h revision 7d09751d
1/* Copyright (c) 2017 - 2020 LiteSpeed Technologies Inc. See LICENSE. */ 2/* 3 * lsquic_ev_log.h -- Event logger 4 */ 5 6#ifndef LSQUIC_EV_LOG_H 7#define LSQUIC_EV_LOG_H 1 8 9#include "lsquic_int_types.h" 10#include "lsquic_qlog.h" 11 12struct ack_info; 13struct http_prio_frame; 14struct lsquic_http_headers; 15struct lsquic_packet_in; 16struct lsquic_packet_out; 17struct parse_funcs; 18struct stream_frame; 19struct uncompressed_headers; 20 21 22/* Log a generic event not tied to any particular connection */ 23#define EV_LOG_GENERIC_EVENT(...) do { \ 24 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 25 lsquic_logger_log1(LSQ_LOG_DEBUG, LSQLM_EVENT, __VA_ARGS__); \ 26} while (0) 27 28/* Log a generic event associated with connection `cid' */ 29#define EV_LOG_CONN_EVENT(cid, ...) do { \ 30 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 31 lsquic_logger_log2(LSQ_LOG_DEBUG, LSQLM_EVENT, cid, __VA_ARGS__); \ 32} while (0) 33 34void 35lsquic_ev_log_packet_in (const lsquic_cid_t *, const struct lsquic_packet_in *); 36 37#define EV_LOG_PACKET_IN(...) do { \ 38 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 39 lsquic_ev_log_packet_in(__VA_ARGS__); \ 40} while (0) 41 42void 43lsquic_ev_log_ack_frame_in (const lsquic_cid_t *, const struct ack_info *); 44 45#define EV_LOG_ACK_FRAME_IN(...) do { \ 46 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 47 lsquic_ev_log_ack_frame_in(__VA_ARGS__); \ 48} while (0) 49 50void 51lsquic_ev_log_stream_frame_in (const lsquic_cid_t *, 52 const struct stream_frame *); 53 54#define EV_LOG_STREAM_FRAME_IN(...) do { \ 55 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 56 lsquic_ev_log_stream_frame_in(__VA_ARGS__); \ 57} while (0) 58 59void 60lsquic_ev_log_crypto_frame_in (const lsquic_cid_t *, 61 const struct stream_frame *, unsigned enc_level); 62 63#define EV_LOG_CRYPTO_FRAME_IN(...) do { \ 64 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 65 lsquic_ev_log_crypto_frame_in(__VA_ARGS__); \ 66} while (0) 67 68void 69lsquic_ev_log_window_update_frame_in (const lsquic_cid_t *, lsquic_stream_id_t, 70 uint64_t offset); 71 72#define EV_LOG_WINDOW_UPDATE_FRAME_IN(...) do { \ 73 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 74 lsquic_ev_log_window_update_frame_in(__VA_ARGS__); \ 75} while (0) 76 77void 78lsquic_ev_log_blocked_frame_in (const lsquic_cid_t *, lsquic_stream_id_t); 79 80#define EV_LOG_BLOCKED_FRAME_IN(...) do { \ 81 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 82 lsquic_ev_log_blocked_frame_in(__VA_ARGS__); \ 83} while (0) 84 85void 86lsquic_ev_log_stop_waiting_frame_in (const lsquic_cid_t *, lsquic_packno_t); 87 88#define EV_LOG_STOP_WAITING_FRAME_IN(...) do { \ 89 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 90 lsquic_ev_log_stop_waiting_frame_in(__VA_ARGS__); \ 91} while (0) 92 93void 94lsquic_ev_log_connection_close_frame_in (const lsquic_cid_t *, 95 uint64_t error_code, int reason_len, const char *reason); 96 97#define EV_LOG_CONNECTION_CLOSE_FRAME_IN(...) do { \ 98 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 99 lsquic_ev_log_connection_close_frame_in(__VA_ARGS__); \ 100} while (0) 101 102void 103lsquic_ev_log_goaway_frame_in (const lsquic_cid_t *, uint32_t error_code, 104 lsquic_stream_id_t, int reason_len, const char *reason); 105 106#define EV_LOG_GOAWAY_FRAME_IN(...) do { \ 107 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 108 lsquic_ev_log_goaway_frame_in(__VA_ARGS__); \ 109} while (0) 110 111void 112lsquic_ev_log_rst_stream_frame_in (const lsquic_cid_t *, lsquic_stream_id_t, 113 uint64_t offset, uint64_t error_code); 114 115#define EV_LOG_RST_STREAM_FRAME_IN(...) do { \ 116 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 117 lsquic_ev_log_rst_stream_frame_in(__VA_ARGS__); \ 118} while (0) 119 120void 121lsquic_ev_log_stop_sending_frame_in (const lsquic_cid_t *,lsquic_stream_id_t, 122 uint64_t error_code); 123 124#define EV_LOG_STOP_SENDING_FRAME_IN(...) do { \ 125 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 126 lsquic_ev_log_stop_sending_frame_in(__VA_ARGS__); \ 127} while (0) 128 129void 130lsquic_ev_log_padding_frame_in (const lsquic_cid_t *, size_t len); 131 132#define EV_LOG_PADDING_FRAME_IN(...) do { \ 133 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 134 lsquic_ev_log_padding_frame_in(__VA_ARGS__); \ 135} while (0) 136 137void 138lsquic_ev_log_ping_frame_in (const lsquic_cid_t *); 139 140#define EV_LOG_PING_FRAME_IN(...) do { \ 141 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 142 lsquic_ev_log_ping_frame_in(__VA_ARGS__); \ 143} while (0) 144 145void 146lsquic_ev_log_packet_created (const lsquic_cid_t *, 147 const struct lsquic_packet_out *); 148 149#define EV_LOG_PACKET_CREATED(...) do { \ 150 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 151 lsquic_ev_log_packet_created(__VA_ARGS__); \ 152} while (0) 153 154void 155lsquic_ev_log_packet_sent (const lsquic_cid_t *, 156 const struct lsquic_packet_out *); 157 158#define EV_LOG_PACKET_SENT(...) do { \ 159 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 160 lsquic_ev_log_packet_sent(__VA_ARGS__); \ 161} while (0) 162 163void 164lsquic_ev_log_packet_not_sent (const lsquic_cid_t *, 165 const struct lsquic_packet_out *); 166 167#define EV_LOG_PACKET_NOT_SENT(...) do { \ 168 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 169 lsquic_ev_log_packet_not_sent(__VA_ARGS__); \ 170} while (0) 171 172void 173lsquic_ev_log_http_headers_in (const lsquic_cid_t *, int is_server, 174 const struct uncompressed_headers *); 175 176#define EV_LOG_HTTP_HEADERS_IN(...) do { \ 177 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 178 lsquic_ev_log_http_headers_in(__VA_ARGS__); \ 179} while (0) 180 181void 182lsquic_ev_log_action_stream_frame (const lsquic_cid_t *, 183 const struct parse_funcs *pf, 184 const unsigned char *, size_t len, const char *action); 185 186#define EV_LOG_GENERATED_STREAM_FRAME(...) do { \ 187 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 188 lsquic_ev_log_action_stream_frame(__VA_ARGS__, "generated"); \ 189} while (0) 190 191#define EV_LOG_UPDATED_STREAM_FRAME(...) do { \ 192 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 193 lsquic_ev_log_action_stream_frame(__VA_ARGS__, "updated"); \ 194} while (0) 195 196void 197lsquic_ev_log_generated_crypto_frame (const lsquic_cid_t *, 198 const struct parse_funcs *pf, 199 const unsigned char *, size_t len); 200 201#define EV_LOG_GENERATED_CRYPTO_FRAME(...) do { \ 202 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 203 lsquic_ev_log_generated_crypto_frame(__VA_ARGS__); \ 204} while (0) 205 206void 207lsquic_ev_log_generated_ack_frame (const lsquic_cid_t *, 208 const struct parse_funcs *, const unsigned char *, size_t len); 209 210#define EV_LOG_GENERATED_ACK_FRAME(...) do { \ 211 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 212 lsquic_ev_log_generated_ack_frame(__VA_ARGS__); \ 213} while (0) 214 215void 216lsquic_ev_log_generated_new_token_frame (const lsquic_cid_t *, 217 const struct parse_funcs *, const unsigned char *, size_t len); 218 219#define EV_LOG_GENERATED_NEW_TOKEN_FRAME(...) do { \ 220 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 221 lsquic_ev_log_generated_new_token_frame(__VA_ARGS__); \ 222} while (0) 223 224void 225lsquic_ev_log_generated_path_chal_frame (const lsquic_cid_t *, 226 const struct parse_funcs *, const unsigned char *, size_t len); 227 228#define EV_LOG_GENERATED_PATH_CHAL_FRAME(...) do { \ 229 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 230 lsquic_ev_log_generated_path_chal_frame(__VA_ARGS__); \ 231} while (0) 232 233void 234lsquic_ev_log_generated_path_resp_frame (const lsquic_cid_t *, 235 const struct parse_funcs *, const unsigned char *, size_t len); 236 237#define EV_LOG_GENERATED_PATH_RESP_FRAME(...) do { \ 238 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 239 lsquic_ev_log_generated_path_resp_frame(__VA_ARGS__); \ 240} while (0) 241 242void 243lsquic_ev_log_generated_new_connection_id_frame (const lsquic_cid_t *, 244 const struct parse_funcs *, const unsigned char *, size_t len); 245 246#define EV_LOG_GENERATED_NEW_CONNECTION_ID_FRAME(...) do { \ 247 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 248 lsquic_ev_log_generated_new_connection_id_frame(__VA_ARGS__); \ 249} while (0) 250 251void 252lsquic_ev_log_generated_stop_waiting_frame (const lsquic_cid_t *, 253 lsquic_packno_t); 254 255#define EV_LOG_GENERATED_STOP_WAITING_FRAME(...) do { \ 256 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 257 lsquic_ev_log_generated_stop_waiting_frame(__VA_ARGS__); \ 258} while (0) 259 260void 261lsquic_ev_log_generated_stop_sending_frame (const lsquic_cid_t *, 262 lsquic_stream_id_t, uint16_t); 263 264#define EV_LOG_GENERATED_STOP_SENDING_FRAME(...) do { \ 265 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 266 lsquic_ev_log_generated_stop_sending_frame(__VA_ARGS__); \ 267} while (0) 268 269void 270lsquic_ev_log_generated_http_headers (const lsquic_cid_t *, lsquic_stream_id_t, 271 int is_server, const struct http_prio_frame *, 272 const struct lsquic_http_headers *); 273 274 275#define EV_LOG_GENERATED_HTTP_HEADERS(...) do { \ 276 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 277 lsquic_ev_log_generated_http_headers(__VA_ARGS__); \ 278} while (0) 279 280void 281lsquic_ev_log_generated_http_push_promise (const lsquic_cid_t *, 282 lsquic_stream_id_t stream_id, lsquic_stream_id_t promised_stream_id, 283 const struct lsquic_http_headers *headers, 284 const struct lsquic_http_headers *extra_headers); 285 286#define EV_LOG_GENERATED_HTTP_PUSH_PROMISE(...) do { \ 287 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 288 lsquic_ev_log_generated_http_push_promise(__VA_ARGS__); \ 289} while (0) 290 291void 292lsquic_ev_log_create_connection (const lsquic_cid_t *, const struct sockaddr *, 293 const struct sockaddr *); 294 295#define EV_LOG_CREATE_CONN(...) do { \ 296 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 297 lsquic_ev_log_create_connection(__VA_ARGS__); \ 298 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ 299 lsquic_qlog_create_connection(__VA_ARGS__); \ 300} while (0) 301 302void 303lsquic_ev_log_hsk_completed (const lsquic_cid_t *); 304 305#define EV_LOG_HSK_COMPLETED(...) do { \ 306 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 307 lsquic_ev_log_hsk_completed(__VA_ARGS__); \ 308 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ 309 lsquic_qlog_hsk_completed(__VA_ARGS__); \ 310} while (0) 311 312 313void 314lsquic_ev_log_zero_rtt (const lsquic_cid_t *); 315 316#define EV_LOG_ZERO_RTT(...) do { \ 317 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 318 lsquic_ev_log_zero_rtt(__VA_ARGS__); \ 319 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ 320 lsquic_qlog_zero_rtt(__VA_ARGS__); \ 321} while (0) 322 323void 324lsquic_ev_log_check_certs (const lsquic_cid_t *, const lsquic_str_t **, size_t); 325 326#define EV_LOG_CHECK_CERTS(...) do { \ 327 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 328 lsquic_ev_log_check_certs(__VA_ARGS__); \ 329 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ 330 lsquic_qlog_check_certs(__VA_ARGS__); \ 331} while (0) 332 333void 334lsquic_ev_log_version_negotiation (const lsquic_cid_t *, const char *, const char *); 335 336#define EV_LOG_VER_NEG(...) do { \ 337 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_EVENT)) \ 338 lsquic_ev_log_version_negotiation(__VA_ARGS__); \ 339 if (LSQ_LOG_ENABLED_EXT(LSQ_LOG_DEBUG, LSQLM_QLOG)) \ 340 lsquic_qlog_version_negotiation(__VA_ARGS__); \ 341} while (0) 342 343#endif 344