#define TRC_ARG_QCON (1 << 4)
#define TRC_ARG_APPCTX (1 << 5)
#define TRC_ARG_HSTRM (1 << 6)
+#define TRC_ARG_HLDSTRM (1 << 7)
#define TRC_ARG1_PRIV (TRC_ARG_PRIV << 0)
#define TRC_ARG1_CONN (TRC_ARG_CONN << 0)
#define TRC_ARG1_QCON (TRC_ARG_QCON << 0)
#define TRC_ARG1_APPCTX (TRC_ARG_APPCTX << 0)
#define TRC_ARG1_HSTRM (TRC_ARG_HSTRM << 0)
+#define TRC_ARG1_HLDSTRM (TRC_ARG_HLDSTRM << 0)
#define TRC_ARG2_PRIV (TRC_ARG_PRIV << 8)
#define TRC_ARG2_CONN (TRC_ARG_CONN << 8)
#define TRC_ARG2_QCON (TRC_ARG_QCON << 8)
#define TRC_ARG2_APPCTX (TRC_ARG_APPCTX << 8)
#define TRC_ARG2_HSTRM (TRC_ARG_HSTRM << 8)
+#define TRC_ARG2_HLDSTRM (TRC_ARG_HLDSTRM << 8)
#define TRC_ARG3_PRIV (TRC_ARG_PRIV << 16)
#define TRC_ARG3_CONN (TRC_ARG_CONN << 16)
#define TRC_ARG3_QCON (TRC_ARG_QCON << 16)
#define TRC_ARG3_APPCTX (TRC_ARG_APPCTX << 16)
#define TRC_ARG3_HSTRM (TRC_ARG_HSTRM << 16)
+#define TRC_ARG3_HLDSTRM (TRC_ARG_HLDSTRM << 16)
#define TRC_ARG4_PRIV (TRC_ARG_PRIV << 24)
#define TRC_ARG4_CONN (TRC_ARG_CONN << 24)
#define TRC_ARG4_QCON (TRC_ARG_QCON << 24)
#define TRC_ARG4_APPCTX (TRC_ARG_APPCTX << 24)
#define TRC_ARG4_HSTRM (TRC_ARG_HSTRM << 24)
+#define TRC_ARG4_HLDSTRM (TRC_ARG_HLDSTRM << 24)
/* usable to detect the presence of any arg of the desired type */
#define TRC_ARGS_CONN (TRC_ARG_CONN * 0x01010101U)
#define TRC_ARGS_QCON (TRC_ARG_QCON * 0x01010101U)
#define TRC_ARGS_APPCTX (TRC_ARG_APPCTX * 0x01010101U)
#define TRC_ARGS_HSTRM (TRC_ARG_HSTRM * 0x01010101U)
+#define TRC_ARGS_HLDSTRM (TRC_ARG_HLDSTRM * 0x01010101U)
enum trace_state {
const struct quic_conn *qc;
const struct appctx *appctx;
const struct hstream *hs;
+ const struct hldstream *hldstrm;
};
/* Regarding the verbosity, if <decoding> is not NULL, it must point to a NULL-
if (src->arg_def & TRC_ARGS_HSTRM)
ctx.hs = trace_pick_arg(src->arg_def & TRC_ARGS_HSTRM, a1, a2, a3, a4);
+ if (src->arg_def & TRC_ARGS_HLDSTRM)
+ ctx.hldstrm = trace_pick_arg(src->arg_def & TRC_ARGS_HLDSTRM, a1, a2, a3, a4);
+
if (src->fill_ctx)
src->fill_ctx(&ctx, src, a1, a2, a3, a4);