]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: Implement a packet number space identification function
authorFrédéric Lécaille <flecaille@haproxy.com>
Mon, 12 Jun 2023 16:54:29 +0000 (18:54 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 30 Jun 2023 14:20:55 +0000 (16:20 +0200)
Implement quic_pktns_char() to identify a packet number space from a
quic_conn object. Usefull only for traces.

include/haproxy/quic_tls.h
src/quic_conn.c

index 28f59f0bc81d3e716174b71f4240b31265e999db..74a436a0f8bc95fc24b6d407e6963158d285b5c1 100644 (file)
@@ -322,6 +322,23 @@ static inline char quic_packet_type_enc_level_char(int packet_type)
        }
 }
 
+/* Return a character to identify the packet number space <pktns> of <qc> QUIC
+ * connection. 'I' for Initial packet number space, 'H' for Handshake packet
+ * space, and 'A' for Application data number space, or '-' if not found.
+ */
+static inline char quic_pktns_char(const struct quic_conn *qc,
+                                   const struct quic_pktns *pktns)
+{
+       if (pktns == &qc->pktns[QUIC_TLS_PKTNS_01RTT])
+               return 'A';
+       else if (pktns == &qc->pktns[QUIC_TLS_PKTNS_HANDSHAKE])
+               return 'H';
+       else if (pktns == &qc->pktns[QUIC_TLS_PKTNS_INITIAL])
+               return 'I';
+
+       return '-';
+}
+
 /* Return the TLS encryption level to be used for <packet_type>
  * QUIC packet type.
  * Returns -1 if there is no TLS encryption level for <packet_type>
index fa68ef5f3c647b5a560293a5b8773587c8e52104..847046f50bf5c361fe8167c40e6bda6da220b0e6 100644 (file)
@@ -614,9 +614,7 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
                        const struct list *lost_pkts = a3;
 
                        if (pktns) {
-                               chunk_appendf(&trace_buf, " pktns=%s",
-                                             pktns == &qc->pktns[QUIC_TLS_PKTNS_INITIAL] ? "I" :
-                                             pktns == &qc->pktns[QUIC_TLS_PKTNS_01RTT] ? "01RTT": "H");
+                               chunk_appendf(&trace_buf, " pktns=%c", quic_pktns_char(qc, pktns));
                                if (pktns->tx.loss_time)
                                              chunk_appendf(&trace_buf, " loss_time=%dms",
                                                            TICKS_TO_MS(tick_remain(now_ms, pktns->tx.loss_time)));
@@ -639,9 +637,8 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
                                chunk_appendf(&trace_buf, " ifae_pkts=%llu",
                                              (unsigned long long)*ifae_pkts);
                        if (pktns) {
-                               chunk_appendf(&trace_buf, " pktns=%s pp=%d",
-                                             pktns == &qc->pktns[QUIC_TLS_PKTNS_INITIAL] ? "I" :
-                                             pktns == &qc->pktns[QUIC_TLS_PKTNS_01RTT] ? "01RTT": "H",
+                               chunk_appendf(&trace_buf, " pktns=%c pp=%d",
+                                             quic_pktns_char(qc, pktns),
                                              pktns->tx.pto_probe);
                                if (mask & (QUIC_EV_CONN_STIMER|QUIC_EV_CONN_SPTO)) {
                                        if (pktns->tx.in_flight)
@@ -677,10 +674,9 @@ static void quic_trace(enum trace_level level, uint64_t mask, const struct trace
                                const struct quic_frame *frm;
                                if (pkt->flags & QUIC_FL_TX_PACKET_ACK)
                                    chunk_appendf(&trace_buf, " ack");
-                               chunk_appendf(&trace_buf, " pn=%lu(%s) iflen=%llu",
+                               chunk_appendf(&trace_buf, " pn=%lu(%c) iflen=%llu",
                                              (unsigned long)pkt->pn_node.key,
-                                             pkt->pktns == &qc->pktns[QUIC_TLS_PKTNS_INITIAL] ? "I" :
-                                             pkt->pktns == &qc->pktns[QUIC_TLS_PKTNS_01RTT] ? "01RTT": "H",
+                                             quic_pktns_char(qc, pkt->pktns),
                                              (unsigned long long)pkt->in_flight_len);
                                chunk_appendf(&trace_buf, " rx.bytes=%llu tx.bytes=%llu",
                                              (unsigned long long)qc->rx.bytes,