Home | History | Annotate | Download | only in quic

Lines Matching defs:qlog

10 #include "internal/qlog.h"
55 QLOG *ossl_qlog_new(const QLOG_TRACE_INFO *info)
57 QLOG *qlog = OPENSSL_zalloc(sizeof(QLOG));
59 if (qlog == NULL)
62 qlog->info.odcid = info->odcid;
63 qlog->info.is_server = info->is_server;
64 qlog->info.now_cb = info->now_cb;
65 qlog->info.now_cb_arg = info->now_cb_arg;
66 qlog->info.override_process_id = info->override_process_id;
69 && (qlog->info.title = OPENSSL_strdup(info->title)) == NULL)
73 && (qlog->info.description = OPENSSL_strdup(info->description)) == NULL)
77 && (qlog->info.group_id = OPENSSL_strdup(info->group_id)) == NULL)
81 && (qlog->info.override_impl_name
86 if (!ossl_json_init(&qlog->json, NULL,
90 if (qlog->info.now_cb == NULL)
91 qlog->info.now_cb = default_now;
93 return qlog;
96 if (qlog != NULL) {
97 OPENSSL_free((char *)qlog->info.title);
98 OPENSSL_free((char *)qlog->info.description);
99 OPENSSL_free((char *)qlog->info.group_id);
100 OPENSSL_free((char *)qlog->info.override_impl_name);
101 OPENSSL_free(qlog);
106 QLOG *ossl_qlog_new_from_env(const QLOG_TRACE_INFO *info)
108 QLOG *qlog = NULL;
139 qlog = ossl_qlog_new(info);
140 if (qlog == NULL)
143 if (!ossl_qlog_set_sink_filename(qlog, filename))
149 if (!ossl_qlog_set_filter(qlog, qfilter))
153 return qlog;
157 ossl_qlog_free(qlog);
161 void ossl_qlog_free(QLOG *qlog)
163 if (qlog == NULL)
166 ossl_json_flush_cleanup(&qlog->json);
167 BIO_free_all(qlog->bio);
168 OPENSSL_free((char *)qlog->info.title);
169 OPENSSL_free((char *)qlog->info.description);
170 OPENSSL_free((char *)qlog->info.group_id);
171 OPENSSL_free((char *)qlog->info.override_impl_name);
172 OPENSSL_free(qlog);
179 int ossl_qlog_set_sink_bio(QLOG *qlog, BIO *bio)
181 if (qlog == NULL)
184 ossl_qlog_flush(qlog); /* best effort */
185 BIO_free_all(qlog->bio);
186 qlog->bio = bio;
187 ossl_json_set0_sink(&qlog->json, bio);
193 int ossl_qlog_set_sink_file(QLOG *qlog, FILE *f, int close_flag)
197 if (qlog == NULL)
204 if (!ossl_qlog_set_sink_bio(qlog, bio)) {
214 int ossl_qlog_set_sink_filename(QLOG *qlog, const char *filename)
218 if (qlog == NULL)
229 if (!ossl_qlog_set_sink_bio(qlog, bio)) {
237 int ossl_qlog_flush(QLOG *qlog)
239 if (qlog == NULL)
242 return ossl_json_flush(&qlog->json);
245 int ossl_qlog_set_event_type_enabled(QLOG *qlog, uint32_t event_type,
248 if (qlog == NULL || event_type >= QLOG_EVENT_TYPE_NUM)
251 bit_set(qlog->enabled, event_type, enabled);
255 int ossl_qlog_enabled(QLOG *qlog, uint32_t event_type)
257 if (qlog == NULL)
260 return bit_get(qlog->enabled, event_type) != 0;
267 static void write_str_once(QLOG *qlog, const char *key, char **p)
272 ossl_json_key(&qlog->json, key);
273 ossl_json_str(&qlog->json, *p);
279 static void qlog_event_seq_header(QLOG *qlog)
281 if (qlog->header_done)
284 ossl_json_object_begin(&qlog->json);
286 ossl_json_key(&qlog->json, "qlog_version");
287 ossl_json_str(&qlog->json, "0.3");
289 ossl_json_key(&qlog->json, "qlog_format");
290 ossl_json_str(&qlog->json, "JSON-SEQ");
292 write_str_once(qlog, "title", (char **)&qlog->info.title);
293 write_str_once(qlog, "description", (char **)&qlog->info.description);
295 ossl_json_key(&qlog->json, "trace");
296 ossl_json_object_begin(&qlog->json);
298 ossl_json_key(&qlog->json, "common_fields");
299 ossl_json_object_begin(&qlog->json);
301 ossl_json_key(&qlog->json, "time_format");
302 ossl_json_str(&qlog->json, "delta");
304 ossl_json_key(&qlog->json, "protocol_type");
305 ossl_json_array_begin(&qlog->json);
307 ossl_json_str(&qlog->json, "QUIC");
309 ossl_json_array_end(&qlog->json);
311 write_str_once(qlog, "group_id", (char **)&qlog->info.group_id);
313 ossl_json_key(&qlog->json, "system_info");
314 ossl_json_object_begin(&qlog->json);
316 if (qlog->info.override_process_id != 0) {
317 ossl_json_key(&qlog->json, "process_id");
318 ossl_json_u64(&qlog->json, qlog->info.override_process_id);
321 ossl_json_key(&qlog->json, "process_id");
322 ossl_json_u64(&qlog->json, (uint64_t)getpid());
324 ossl_json_key(&qlog->json, "process_id");
325 ossl_json_u64(&qlog->json, (uint64_t)GetCurrentProcessId());
329 ossl_json_object_end(&qlog->json);
331 ossl_json_object_end(&qlog->json);
333 ossl_json_key(&qlog->json, "vantage_point");
334 ossl_json_object_begin(&qlog->json);
339 if (qlog->info.override_impl_name != NULL) {
340 p = qlog->info.override_impl_name;
347 ossl_json_key(&qlog->json, "type");
348 ossl_json_str(&qlog->json,
349 qlog->info.is_server ? "server" : "client");
351 ossl_json_key(&qlog->json, "name");
352 ossl_json_str(&qlog->json, p);
354 ossl_json_object_end(&qlog->json);
356 ossl_json_object_end(&qlog->json);
358 ossl_json_object_end(&qlog->json);
360 qlog->header_done = 1;
363 static void qlog_event_prologue(QLOG *qlog)
365 qlog_event_seq_header(qlog);
367 ossl_json_object_begin(&qlog->json);
369 ossl_json_key(&qlog->json, "name");
370 ossl_json_str(&qlog->json, qlog->event_combined_name);
372 ossl_json_key(&qlog->json, "data");
373 ossl_json_object_begin(&qlog->json);
376 static void qlog_event_epilogue(QLOG *qlog)
378 ossl_json_object_end(&qlog->json);
380 ossl_json_key(&qlog->json, "time");
381 if (!qlog->first_event_done) {
382 ossl_json_u64(&qlog->json, ossl_time2ms(qlog->event_time));
383 qlog->prev_event_time = qlog->event_time;
384 qlog->first_event_done = 1;
386 OSSL_TIME delta = ossl_time_subtract(qlog->event_time,
387 qlog->prev_event_time);
389 ossl_json_u64(&qlog->json, ossl_time2ms(delta));
390 qlog->prev_event_time = qlog->event_time;
393 ossl_json_object_end(&qlog->json);
396 int ossl_qlog_event_try_begin(QLOG *qlog,
402 if (qlog == NULL)
405 if (!ossl_assert(qlog->event_type == QLOG_EVENT_TYPE_NONE)
406 || !ossl_qlog_enabled(qlog, event_type))
409 qlog->event_type = event_type;
410 qlog->event_cat = event_cat;
411 qlog->event_name = event_name;
412 qlog->event_combined_name = event_combined_name;
413 qlog->event_time = qlog->info.now_cb(qlog->info.now_cb_arg);
415 qlog_event_prologue(qlog);
419 void ossl_qlog_event_end(QLOG *qlog)
421 if (!ossl_assert(qlog != NULL && qlog->event_type != QLOG_EVENT_TYPE_NONE))
424 qlog_event_epilogue(qlog);
425 qlog->event_type = QLOG_EVENT_TYPE_NONE;
432 void ossl_qlog_group_begin(QLOG *qlog, const char *name)
435 ossl_json_key(&qlog->json, name);
437 ossl_json_object_begin(&qlog->json);
440 void ossl_qlog_group_end(QLOG *qlog)
442 ossl_json_object_end(&qlog->json);
445 void ossl_qlog_array_begin(QLOG *qlog, const char *name)
448 ossl_json_key(&qlog->json, name);
450 ossl_json_array_begin(&qlog->json);
453 void ossl_qlog_array_end(QLOG *qlog)
455 ossl_json_array_end(&qlog->json);
458 void ossl_qlog_override_time(QLOG *qlog, OSSL_TIME event_time)
460 qlog->event_time = event_time;
463 void ossl_qlog_str(QLOG *qlog, const char *name, const char *value)
466 ossl_json_key(&qlog->json, name);
468 ossl_json_str(&qlog->json, value);
471 void ossl_qlog_str_len(QLOG *qlog, const char *name,
475 ossl_json_key(&qlog->json, name);
477 ossl_json_str_len(&qlog->json, value, value_len);
480 void ossl_qlog_u64(QLOG *qlog, const char *name, uint64_t value)
483 ossl_json_key(&qlog->json, name);
485 ossl_json_u64(&qlog->json, value);
488 void ossl_qlog_i64(QLOG *qlog, const char *name, int64_t value)
491 ossl_json_key(&qlog->json, name);
493 ossl_json_i64(&qlog->json, value);
496 void ossl_qlog_bool(QLOG *qlog, const char *name, int value)
499 ossl_json_key(&qlog->json, name);
501 ossl_json_bool(&qlog->json, value);
504 void ossl_qlog_bin(QLOG *qlog, const char *name,
508 ossl_json_key(&qlog->json, name);
510 ossl_json_str_hex(&qlog->json, value, value_len);
656 * TODO(QLOG FUTURE): Determine how to print log messages about bad filter
684 int ossl_qlog_set_filter(QLOG *qlog, const char *filter)
692 memcpy(enabled, qlog->enabled, sizeof(enabled));
730 memcpy(qlog->enabled, enabled, sizeof(enabled));