From: Amaury Denoyelle Date: Mon, 17 Oct 2022 16:05:18 +0000 (+0200) Subject: MINOR: quic: add version field on quic_rx_packet X-Git-Tag: v2.7-dev9~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0eae57273b3a2b585ddc19d6f97cdc05f2203f0b;p=thirdparty%2Fhaproxy.git MINOR: quic: add version field on quic_rx_packet Add a new field version on quic_rx_packet structure. This is set on header parsing in qc_lstnr_pkt_rcv() function. This change has no functional impact. It is a part of a refactoring series on qc_lstnr_pkt_rcv(). The objective is facilitate integration of FD-owned socket patches. This should be backported up to 2.6. --- diff --git a/include/haproxy/quic_conn-t.h b/include/haproxy/quic_conn-t.h index 8bfd618983..75bd2d50a9 100644 --- a/include/haproxy/quic_conn-t.h +++ b/include/haproxy/quic_conn-t.h @@ -395,7 +395,11 @@ struct quic_dgram { struct quic_rx_packet { struct list list; struct list qc_rx_pkt_list; + + /* QUIC version used in packet. */ + const struct quic_version *version; struct quic_conn *qc; + unsigned char type; /* Initial desctination connection ID. */ struct quic_cid dcid; diff --git a/src/quic_conn.c b/src/quic_conn.c index 44c944c014..dcf5eea5fd 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -6032,6 +6032,7 @@ static void qc_lstnr_pkt_rcv(unsigned char *buf, const unsigned char *end, TRACE_PROTO("VN packet sent", QUIC_EV_CONN_LPKT); goto err; } + pkt->version = qv; /* For Initial packets, and for servers (QUIC clients connections), * there is no Initial connection IDs storage. @@ -7167,12 +7168,16 @@ struct task *quic_lstnr_dghdlr(struct task *t, void *ctx, unsigned int state) do { struct quic_rx_packet *pkt; + /* TODO replace zalloc -> alloc. */ pkt = pool_zalloc(pool_head_quic_rx_packet); if (!pkt) { TRACE_ERROR("RX packet allocation failed", QUIC_EV_CONN_LPKT); + /* TODO count lost datagram. */ goto leave; } + pkt->version = NULL; + LIST_INIT(&pkt->qc_rx_pkt_list); pkt->time_received = now_ms; quic_rx_packet_refinc(pkt);