MINOR: trace: add quic_conn argument definition
Prepare trace support for quic_conn instances as argument. This will be
used by the xprt-quic layer in replacement of the connection.
This commit is part of the rearchitecture of xprt-quic layers and the
separation between xprt and connection instances.
diff --git a/include/haproxy/trace-t.h b/include/haproxy/trace-t.h
index 0ecbaa4..dcdaec3 100644
--- a/include/haproxy/trace-t.h
+++ b/include/haproxy/trace-t.h
@@ -43,36 +43,54 @@
#define TRC_ARG_SESS (1 << 1)
#define TRC_ARG_STRM (1 << 2)
#define TRC_ARG_CHK (1 << 3)
+#ifdef USE_QUIC
+#define TRC_ARG_QCON (1 << 4)
+#endif
#define TRC_ARG1_PRIV (TRC_ARG_PRIV << 0)
#define TRC_ARG1_CONN (TRC_ARG_CONN << 0)
#define TRC_ARG1_SESS (TRC_ARG_SESS << 0)
#define TRC_ARG1_STRM (TRC_ARG_STRM << 0)
#define TRC_ARG1_CHK (TRC_ARG_CHK << 0)
+#ifdef USE_QUIC
+#define TRC_ARG1_QCON (TRC_ARG_QCON << 0)
+#endif
#define TRC_ARG2_PRIV (TRC_ARG_PRIV << 8)
#define TRC_ARG2_CONN (TRC_ARG_CONN << 8)
#define TRC_ARG2_SESS (TRC_ARG_SESS << 8)
#define TRC_ARG2_STRM (TRC_ARG_STRM << 8)
#define TRC_ARG2_CHK (TRC_ARG_CHK << 8)
+#ifdef USE_QUIC
+#define TRC_ARG2_QCON (TRC_ARG_QCON << 8)
+#endif
#define TRC_ARG3_PRIV (TRC_ARG_PRIV << 16)
#define TRC_ARG3_CONN (TRC_ARG_CONN << 16)
#define TRC_ARG3_SESS (TRC_ARG_SESS << 16)
#define TRC_ARG3_STRM (TRC_ARG_STRM << 16)
#define TRC_ARG3_CHK (TRC_ARG_CHK << 16)
+#ifdef USE_QUIC
+#define TRC_ARG3_QCON (TRC_ARG_QCON << 16)
+#endif
#define TRC_ARG4_PRIV (TRC_ARG_PRIV << 24)
#define TRC_ARG4_CONN (TRC_ARG_CONN << 24)
#define TRC_ARG4_SESS (TRC_ARG_SESS << 24)
#define TRC_ARG4_STRM (TRC_ARG_STRM << 24)
#define TRC_ARG4_CHK (TRC_ARG_CHK << 24)
+#ifdef USE_QUIC
+#define TRC_ARG4_QCON (TRC_ARG_QCON << 24)
+#endif
/* usable to detect the presence of any arg of the desired type */
#define TRC_ARGS_CONN (TRC_ARG_CONN * 0x01010101U)
#define TRC_ARGS_SESS (TRC_ARG_SESS * 0x01010101U)
#define TRC_ARGS_STRM (TRC_ARG_STRM * 0x01010101U)
#define TRC_ARGS_CHK (TRC_ARG_CHK * 0x01010101U)
+#ifdef USE_QUIC
+#define TRC_ARGS_QCON (TRC_ARG_QCON * 0x01010101U)
+#endif
enum trace_state {
@@ -104,6 +122,9 @@
TRACE_LOCKON_SESSION, // lock on the session that started the trace
TRACE_LOCKON_STREAM, // lock on the stream that started the trace
TRACE_LOCKON_CHECK, // lock on the check that started the trace
+#ifdef USE_QUIC
+ TRACE_LOCKON_QCON, // lock on the QUIC connection that started the trace
+#endif
TRACE_LOCKON_ARG1, // lock on arg1, totally source-dependent
TRACE_LOCKON_ARG2, // lock on arg2, totally source-dependent
TRACE_LOCKON_ARG3, // lock on arg3, totally source-dependent
diff --git a/src/trace.c b/src/trace.c
index f075787..15e0148 100644
--- a/src/trace.c
+++ b/src/trace.c
@@ -86,6 +86,9 @@
const struct stream *strm = NULL;
const struct connection *conn = NULL;
const struct check *check = NULL;
+#ifdef USE_QUIC
+ const struct quic_conn *qc = NULL;
+#endif
const void *lockon_ptr = NULL;
struct ist ist_func = ist(func);
char tnum[4];
@@ -112,6 +115,11 @@
if (src->arg_def & TRC_ARGS_CHK)
check = trace_pick_arg(src->arg_def & TRC_ARGS_CHK, a1, a2, a3, a4);
+#ifdef USE_QUIC
+ if (src->arg_def & TRC_ARGS_QCON)
+ qc = trace_pick_arg(src->arg_def & TRC_ARGS_QCON, a1, a2, a3, a4);
+#endif
+
if (!sess && strm)
sess = strm->sess;
else if (!sess && conn)
@@ -171,6 +179,9 @@
case TRACE_LOCKON_STREAM: lockon_ptr = strm; break;
case TRACE_LOCKON_CHECK: lockon_ptr = check; break;
case TRACE_LOCKON_THREAD: lockon_ptr = ti; break;
+#ifdef USE_QUIC
+ case TRACE_LOCKON_QCON: lockon_ptr = qc; break;
+#endif
case TRACE_LOCKON_ARG1: lockon_ptr = a1; break;
case TRACE_LOCKON_ARG2: lockon_ptr = a2; break;
case TRACE_LOCKON_ARG3: lockon_ptr = a3; break;