]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Add low level traces (addresses, DCID)
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 12 May 2023 15:37:29 +0000 (17:37 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 24 May 2023 14:30:11 +0000 (16:30 +0200)
Add source and destination addresses to QUIC_EV_CONN_RCV trace event. This is
used by datagram/socket level functions (quic_sock.c).

Must be backported to 2.7.

src/quic_conn.c

index edcaf6b7b2bfab193561edf4decee8b582c12ea1..1f5a54e95a852b1e5517ac5322f7c7c9e442beed 100644 (file)
@@ -742,13 +742,6 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
 
                }
 
-               if (mask & QUIC_EV_CONN_RCV) {
-                       const struct quic_dgram *dgram = a2;
-
-                       if (dgram)
-                               chunk_appendf(&trace_buf, " dgram.len=%zu", dgram->len);
-               }
-
                if (mask & QUIC_EV_CONN_IDLE_TIMER) {
                        if (tick_isset(qc->ack_expire))
                                chunk_appendf(&trace_buf, " ack_expire=%ums",
@@ -761,6 +754,38 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
                                              TICKS_TO_MS(tick_remain(now_ms, qc->idle_timer_task->expire)));
                }
        }
+
+       if (mask & QUIC_EV_CONN_RCV) {
+               int i;
+               const struct quic_dgram *dgram = a2;
+               char bufaddr[INET6_ADDRSTRLEN], bufport[6];
+
+               if (qc) {
+                       addr_to_str(&qc->peer_addr, bufaddr, sizeof(bufaddr));
+                       port_to_str(&qc->peer_addr, bufport, sizeof(bufport));
+                       chunk_appendf(&trace_buf, " peer_addr=%s:%s ", bufaddr, bufport);
+               }
+
+               if (dgram) {
+                       chunk_appendf(&trace_buf, " dgram.len=%zu", dgram->len);
+                       /* Socket */
+                       if (dgram->saddr.ss_family == AF_INET ||
+                               dgram->saddr.ss_family == AF_INET6) {
+                               addr_to_str(&dgram->saddr, bufaddr, sizeof(bufaddr));
+                               port_to_str(&dgram->saddr, bufport, sizeof(bufport));
+                               chunk_appendf(&trace_buf, "saddr=%s:%s ", bufaddr, bufport);
+
+                               addr_to_str(&dgram->daddr, bufaddr, sizeof(bufaddr));
+                               port_to_str(&dgram->daddr, bufport, sizeof(bufport));
+                               chunk_appendf(&trace_buf, "daddr=%s:%s ", bufaddr, bufport);
+                       }
+                       /* DCID */
+                       for (i = 0; i < dgram->dcid_len; ++i)
+                               chunk_appendf(&trace_buf, "%02x", dgram->dcid[i]);
+
+               }
+       }
+
        if (mask & QUIC_EV_CONN_LPKT) {
                const struct quic_rx_packet *pkt = a2;
                const uint64_t *len = a3;