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.
This commit is contained in:
Amaury Denoyelle 2022-10-17 18:05:18 +02:00
parent 6c940569f6
commit 0eae57273b
2 changed files with 9 additions and 0 deletions

View File

@ -395,7 +395,11 @@ struct quic_dgram {
struct quic_rx_packet { struct quic_rx_packet {
struct list list; struct list list;
struct list qc_rx_pkt_list; struct list qc_rx_pkt_list;
/* QUIC version used in packet. */
const struct quic_version *version;
struct quic_conn *qc; struct quic_conn *qc;
unsigned char type; unsigned char type;
/* Initial desctination connection ID. */ /* Initial desctination connection ID. */
struct quic_cid dcid; struct quic_cid dcid;

View File

@ -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); TRACE_PROTO("VN packet sent", QUIC_EV_CONN_LPKT);
goto err; goto err;
} }
pkt->version = qv;
/* For Initial packets, and for servers (QUIC clients connections), /* For Initial packets, and for servers (QUIC clients connections),
* there is no Initial connection IDs storage. * 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 { do {
struct quic_rx_packet *pkt; struct quic_rx_packet *pkt;
/* TODO replace zalloc -> alloc. */
pkt = pool_zalloc(pool_head_quic_rx_packet); pkt = pool_zalloc(pool_head_quic_rx_packet);
if (!pkt) { if (!pkt) {
TRACE_ERROR("RX packet allocation failed", QUIC_EV_CONN_LPKT); TRACE_ERROR("RX packet allocation failed", QUIC_EV_CONN_LPKT);
/* TODO count lost datagram. */
goto leave; goto leave;
} }
pkt->version = NULL;
LIST_INIT(&pkt->qc_rx_pkt_list); LIST_INIT(&pkt->qc_rx_pkt_list);
pkt->time_received = now_ms; pkt->time_received = now_ms;
quic_rx_packet_refinc(pkt); quic_rx_packet_refinc(pkt);