summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHugo Landau <hlandau@openssl.org>2023-07-25 11:32:24 +0100
committerMatt Caswell <matt@openssl.org>2023-08-08 14:33:42 +0100
commit371c29582aa683ab10d58ec448aef1bded208076 (patch)
tree92dcf1db469d3c9378cf000d84af720ec399ed82 /include
parent7eb330ff7aa5580d7d97f2d183606c2d6bbbb449 (diff)
QUIC CFQ: Unreliable transmission for PATH_RESPONSE
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21547)
Diffstat (limited to 'include')
-rw-r--r--include/internal/quic_cfq.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/internal/quic_cfq.h b/include/internal/quic_cfq.h
index 6ea69c22a1..2256f2f0a3 100644
--- a/include/internal/quic_cfq.h
+++ b/include/internal/quic_cfq.h
@@ -38,6 +38,9 @@ struct quic_cfq_item_st {
# define QUIC_CFQ_STATE_NEW 0
# define QUIC_CFQ_STATE_TX 1
+/* If set, do not retransmit on loss */
+#define QUIC_CFQ_ITEM_FLAG_UNRELIABLE (1U << 0)
+
/* Returns the frame type of a CFQ item. */
uint64_t ossl_quic_cfq_item_get_frame_type(const QUIC_CFQ_ITEM *item);
@@ -53,6 +56,9 @@ int ossl_quic_cfq_item_get_state(const QUIC_CFQ_ITEM *item);
/* Returns the PN space for the CFQ item. */
uint32_t ossl_quic_cfq_item_get_pn_space(const QUIC_CFQ_ITEM *item);
+/* Returns 1 if this is an unreliable frame. */
+int ossl_quic_cfq_item_is_unreliable(const QUIC_CFQ_ITEM *item);
+
/*
* QUIC Control Frame Queue
* ========================
@@ -88,6 +94,8 @@ void ossl_quic_cfq_free(QUIC_CFQ *cfq);
* The frame type is duplicated as the frame_type argument here, even though it
* is also encoded into the buffer. This allows the caller to determine the
* frame type if desired without having to decode the frame.
+ *
+ * flags is zero or more QUIC_CFQ_ITEM_FLAG values.
*/
typedef void (cfq_free_cb)(unsigned char *buf, size_t buf_len, void *arg);
@@ -95,6 +103,7 @@ QUIC_CFQ_ITEM *ossl_quic_cfq_add_frame(QUIC_CFQ *cfq,
uint32_t priority,
uint32_t pn_space,
uint64_t frame_type,
+ uint32_t flags,
const unsigned char *encoded,
size_t encoded_len,
cfq_free_cb *free_cb,