]> git.ipfire.org Git - thirdparty/openssl.git/blobdiff - include/internal/quic_fc.h
QUIC FC: Modify RXFC to support use for enforcing MAX_STREAMS
[thirdparty/openssl.git] / include / internal / quic_fc.h
index b07326ddf426b5873570c0f91bc5a52405fb009d..78398c724275e1e3c47e7af00b0afe5d33bf9613 100644 (file)
@@ -137,7 +137,7 @@ struct quic_rxfc_st {
     OSSL_TIME       (*now)(void *arg);
     void            *now_arg;
     QUIC_RXFC       *parent;
-    unsigned char   error_code, has_cwm_changed, is_fin;
+    unsigned char   error_code, has_cwm_changed, is_fin, stream_count_mode;
 };
 
 /*
@@ -147,6 +147,9 @@ struct quic_rxfc_st {
  * and absolute maximum window sizes, respectively. Window size values are
  * expressed in bytes and determine how much credit the RXFC extends to the peer
  * to transmit more data at a time.
+ *
+ * If stream_count_mode is 1, this RXFC is for use tracking maximum stream count
+ * enforcement. In this case conn_rxfc must be NULL.
  */
 int ossl_quic_rxfc_init(QUIC_RXFC *rxfc, QUIC_RXFC *conn_rxfc,
                         uint64_t initial_window_size,
@@ -154,6 +157,14 @@ int ossl_quic_rxfc_init(QUIC_RXFC *rxfc, QUIC_RXFC *conn_rxfc,
                         OSSL_TIME (*now)(void *arg),
                         void *now_arg);
 
+/*
+ * Initialises an RX flow controller for stream count enforcement.
+ */
+int ossl_quic_rxfc_init_for_stream_count(QUIC_RXFC *rxfc,
+                                         uint64_t initial_window_size,
+                                         OSSL_TIME (*now)(void *arg),
+                                         void *now_arg);
+
 /*
  * Gets the parent (i.e., connection-level) RXFC. Returns NULL if called on a
  * connection-level RXFC.