const struct trace_source *src,
const struct ist where, const struct ist func,
const void *a1, const void *a2, const void *a3, const void *a4);
+ void (*fill_ctx)(struct trace_ctx *ctx, const struct trace_source *src,
+ const void *a1, const void *a2, const void *a3, const void *a4);
uint32_t arg_def; // argument definitions (sum of TRC_ARG{1..4}_*)
const struct name_desc *lockon_args; // must be 4 entries if not NULL
const struct name_desc *decoding; // null-terminated if not NULL
if (src->arg_def & TRC_ARGS_APPCTX)
ctx.appctx = trace_pick_arg(src->arg_def & TRC_ARGS_APPCTX, a1, a2, a3, a4);
+ if (src->fill_ctx)
+ src->fill_ctx(&ctx, src, a1, a2, a3, a4);
+
#ifdef USE_QUIC
if (ctx.qc && !ctx.conn)
ctx.conn = ctx.qc->conn;