From 5849dbe52e6657db0b653b93d1eb5bab34f43351 Mon Sep 17 00:00:00 2001 From: Hugo Landau Date: Fri, 8 Sep 2023 14:10:06 +0100 Subject: [PATCH] QLOG: Events: Implement transport:packet_received Reviewed-by: Matt Caswell Reviewed-by: Neil Horman (Merged from https://github.com/openssl/openssl/pull/22037) --- include/internal/qlog_event_helpers.h | 8 ++++++++ include/internal/qlog_events.h | 1 + ssl/quic/qlog_event_helpers.c | 14 ++++++++++++++ ssl/quic/quic_channel.c | 7 +++++++ 4 files changed, 30 insertions(+) diff --git a/include/internal/qlog_event_helpers.h b/include/internal/qlog_event_helpers.h index e1a9bcf534..83defe043b 100644 --- a/include/internal/qlog_event_helpers.h +++ b/include/internal/qlog_event_helpers.h @@ -45,4 +45,12 @@ void ossl_qlog_event_transport_packet_sent(QLOG *qlog, size_t numn_iovec, uint64_t datagram_id); +/* transport:packet_received */ +void ossl_qlog_event_transport_packet_received(QLOG *qlog, + const QUIC_PKT_HDR *hdr, + QUIC_PN pn, + const OSSL_QTX_IOVEC *iovec, + size_t numn_iovec, + uint64_t datagram_id); + #endif diff --git a/include/internal/qlog_events.h b/include/internal/qlog_events.h index 06706b5952..e79b952461 100644 --- a/include/internal/qlog_events.h +++ b/include/internal/qlog_events.h @@ -11,4 +11,5 @@ QLOG_EVENT(connectivity, connection_state_updated) QLOG_EVENT(connectivity, connection_closed) QLOG_EVENT(transport, parameters_set) QLOG_EVENT(transport, packet_sent) +QLOG_EVENT(transport, packet_received) QLOG_EVENT(recovery, packet_lost) diff --git a/ssl/quic/qlog_event_helpers.c b/ssl/quic/qlog_event_helpers.c index ad2e87ff3d..16fd8ae74e 100644 --- a/ssl/quic/qlog_event_helpers.c +++ b/ssl/quic/qlog_event_helpers.c @@ -611,3 +611,17 @@ void ossl_qlog_event_transport_packet_sent(QLOG *qlog, QLOG_EVENT_END() #endif } + +void ossl_qlog_event_transport_packet_received(QLOG *qlog, + const QUIC_PKT_HDR *hdr, + QUIC_PN pn, + const OSSL_QTX_IOVEC *iovec, + size_t num_iovec, + uint64_t datagram_id) +{ +#ifndef OPENSSL_NO_QLOG + QLOG_EVENT_BEGIN(qlog, transport, packet_received) + log_packet(qlog, hdr, pn, iovec, num_iovec, datagram_id); + QLOG_EVENT_END() +#endif +} diff --git a/ssl/quic/quic_channel.c b/ssl/quic/quic_channel.c index 274765b731..b76f825d0e 100644 --- a/ssl/quic/quic_channel.c +++ b/ssl/quic/quic_channel.c @@ -2098,6 +2098,7 @@ static void ch_rx_handle_packet(QUIC_CHANNEL *ch, int channel_only) { uint32_t enc_level; int old_have_processed_any_pkt = ch->have_processed_any_pkt; + OSSL_QTX_IOVEC iovec; assert(ch->qrx_pkt != NULL); @@ -2184,6 +2185,12 @@ static void ch_rx_handle_packet(QUIC_CHANNEL *ch, int channel_only) return; } + iovec.buf = ch->qrx_pkt->hdr->data; + iovec.buf_len = ch->qrx_pkt->hdr->len; + ossl_qlog_event_transport_packet_received(ch_get_qlog(ch), ch->qrx_pkt->hdr, + ch->qrx_pkt->pn, &iovec, 1, + ch->qrx_pkt->datagram_id); + /* Handle incoming packet. */ switch (ch->qrx_pkt->hdr->type) { case QUIC_PKT_TYPE_RETRY: -- 2.39.2