aboutsummaryrefslogtreecommitdiff
path: root/include/internal/quic_txpim.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/internal/quic_txpim.h')
-rw-r--r--include/internal/quic_txpim.h135
1 files changed, 0 insertions, 135 deletions
diff --git a/include/internal/quic_txpim.h b/include/internal/quic_txpim.h
deleted file mode 100644
index 5df6ad46cb30..000000000000
--- a/include/internal/quic_txpim.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the Apache License 2.0 (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-#ifndef OSSL_QUIC_TXPIM_H
-# define OSSL_QUIC_TXPIM_H
-
-# include <openssl/ssl.h>
-# include "internal/quic_types.h"
-# include "internal/quic_predef.h"
-# include "internal/quic_cfq.h"
-# include "internal/quic_ackm.h"
-
-# ifndef OPENSSL_NO_QUIC
-
-/*
- * QUIC Transmitted Packet Information Manager
- * ===========================================
- */
-
-typedef struct quic_txpim_pkt_st {
- /* ACKM-specific data. Caller should fill this. */
- OSSL_ACKM_TX_PKT ackm_pkt;
-
- /* Linked list of CFQ items in this packet. */
- QUIC_CFQ_ITEM *retx_head;
-
- /* Reserved for FIFD use. */
- QUIC_FIFD *fifd;
-
- /* QUIC_PKT_TYPE value. For diagnostic use only. */
- unsigned char pkt_type;
-
- /* Regenerate-strategy frames. */
- unsigned int had_handshake_done_frame : 1;
- unsigned int had_max_data_frame : 1;
- unsigned int had_max_streams_bidi_frame : 1;
- unsigned int had_max_streams_uni_frame : 1;
- unsigned int had_ack_frame : 1;
- unsigned int had_conn_close : 1;
-
- /* Private data follows. */
-} QUIC_TXPIM_PKT;
-
-/* Represents a range of bytes in an application or CRYPTO stream. */
-typedef struct quic_txpim_chunk_st {
- /* The stream ID, or UINT64_MAX for the CRYPTO stream. */
- uint64_t stream_id;
- /*
- * The inclusive range of bytes in the stream. Exceptionally, if end <
- * start, designates a frame of zero length (used for FIN-only frames). In
- * this case end is the number of the final byte (i.e., one less than the
- * final size of the stream).
- */
- uint64_t start, end;
- /*
- * Whether a FIN was sent for this stream in the packet. Not valid for
- * CRYPTO stream.
- */
- unsigned int has_fin : 1;
- /*
- * If set, a STOP_SENDING frame was sent for this stream ID. (If no data was
- * sent for the stream, set end < start.)
- */
- unsigned int has_stop_sending : 1;
- /*
- * If set, a RESET_STREAM frame was sent for this stream ID. (If no data was
- * sent for the stream, set end < start.)
- */
- unsigned int has_reset_stream : 1;
-} QUIC_TXPIM_CHUNK;
-
-QUIC_TXPIM *ossl_quic_txpim_new(void);
-
-/*
- * Frees the TXPIM. All QUIC_TXPIM_PKTs which have been handed out by the TXPIM
- * must be released via a call to ossl_quic_txpim_pkt_release() before calling
- * this function.
- */
-void ossl_quic_txpim_free(QUIC_TXPIM *txpim);
-
-/*
- * Allocates a new QUIC_TXPIM_PKT structure from the pool. Returns NULL on
- * failure. The returned structure is cleared of all data and is in a fresh
- * initial state.
- */
-QUIC_TXPIM_PKT *ossl_quic_txpim_pkt_alloc(QUIC_TXPIM *txpim);
-
-/*
- * Releases the TXPIM packet, returning it to the pool.
- */
-void ossl_quic_txpim_pkt_release(QUIC_TXPIM *txpim, QUIC_TXPIM_PKT *fpkt);
-
-/* Clears the chunk list of the packet, removing all entries. */
-void ossl_quic_txpim_pkt_clear_chunks(QUIC_TXPIM_PKT *fpkt);
-
-/* Appends a chunk to the packet. The structure is copied. */
-int ossl_quic_txpim_pkt_append_chunk(QUIC_TXPIM_PKT *fpkt,
- const QUIC_TXPIM_CHUNK *chunk);
-
-/* Adds a CFQ item to the packet by prepending it to the retx_head list. */
-void ossl_quic_txpim_pkt_add_cfq_item(QUIC_TXPIM_PKT *fpkt,
- QUIC_CFQ_ITEM *item);
-
-/*
- * Returns a pointer to an array of stream chunk information structures for the
- * given packet. The caller must call ossl_quic_txpim_pkt_get_num_chunks() to
- * determine the length of this array. The returned pointer is invalidated
- * if the chunk list is mutated, for example via a call to
- * ossl_quic_txpim_pkt_append_chunk() or ossl_quic_txpim_pkt_clear_chunks().
- *
- * The chunks are sorted by (stream_id, start) in ascending order.
- */
-const QUIC_TXPIM_CHUNK *ossl_quic_txpim_pkt_get_chunks(const QUIC_TXPIM_PKT *fpkt);
-
-/*
- * Returns the number of entries in the array returned by
- * ossl_quic_txpim_pkt_get_chunks().
- */
-size_t ossl_quic_txpim_pkt_get_num_chunks(const QUIC_TXPIM_PKT *fpkt);
-
-/*
- * Returns the number of QUIC_TXPIM_PKTs allocated by the given TXPIM that have
- * yet to be returned to the TXPIM.
- */
-size_t ossl_quic_txpim_get_in_use(const QUIC_TXPIM *txpim);
-
-# endif
-
-#endif