diff options
Diffstat (limited to 'include/internal/quic_txpim.h')
-rw-r--r-- | include/internal/quic_txpim.h | 135 |
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 |