diff options
author | Hugo Landau <hlandau@openssl.org> | 2024-02-09 12:52:09 +0000 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-02-19 10:15:46 +0100 |
commit | 40c457029e7861eeedae5c5ca3267e4b668ba205 (patch) | |
tree | c7938e9e55c1545b042a807f6e59ce839e2e281c | |
parent | e5313f20486f86be42059fce6b0d9e43a35e8655 (diff) | |
download | openssl-40c457029e7861eeedae5c5ca3267e4b668ba205.tar.gz |
QUIC: Add docs for SSL_VALUE_EVENT_HANDLING_MODE
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23535)
-rw-r--r-- | doc/man3/SSL_get_value_uint.pod | 100 |
1 files changed, 90 insertions, 10 deletions
diff --git a/doc/man3/SSL_get_value_uint.pod b/doc/man3/SSL_get_value_uint.pod index 5502559178..0be08e2e12 100644 --- a/doc/man3/SSL_get_value_uint.pod +++ b/doc/man3/SSL_get_value_uint.pod @@ -11,8 +11,14 @@ SSL_get_quic_stream_uni_remote_avail, SSL_VALUE_CLASS_GENERIC, SSL_VALUE_CLASS_FEATURE_REQUEST, SSL_VALUE_CLASS_FEATURE_PEER_REQUEST, SSL_VALUE_CLASS_FEATURE_NEGOTIATED, SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL, SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL, SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL, -SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, SSL_VALUE_QUIC_IDLE_TIMEOUT - manage -negotiable features and configuration values for a SSL object +SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL, SSL_VALUE_QUIC_IDLE_TIMEOUT, +SSL_VALUE_EVENT_HANDLING_MODE, +SSL_VALUE_EVENT_HANDLING_MODE_INHERIT, +SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT, +SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT, +SSL_get_event_handling_mode, +SSL_set_event_handling_mode - +manage negotiable features and configuration values for a SSL object =head1 SYNOPSIS @@ -34,6 +40,11 @@ negotiable features and configuration values for a SSL object #define SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL #define SSL_VALUE_QUIC_IDLE_TIMEOUT + #define SSL_VALUE_EVENT_HANDLING_MODE + #define SSL_VALUE_EVENT_HANDLING_MODE_INHERIT + #define SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT + #define SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT + The following convenience macros can also be used: int SSL_get_generic_value_uint(SSL *ssl, uint32_t id, uint64_t *value); @@ -50,6 +61,9 @@ The following convenience macros can also be used: int SSL_get_quic_stream_uni_local_avail(SSL *ssl, uint64_t *value); int SSL_get_quic_stream_uni_remote_avail(SSL *ssl, uint64_t *value); + int SSL_get_event_handling_mode(SSL *ssl, uint64_t *value); + int SSL_set_event_handling_mode(SSL *ssl, uint64_t value); + =head1 DESCRIPTION SSL_get_value_uint() and SSL_set_value_uint() provide access to configurable @@ -119,11 +133,13 @@ SSL_get_feature_negotiated_uint() for brevity. =head1 CONFIGURABLE VALUES FOR QUIC CONNECTIONS -The following configurable values are supported for QUIC connection SSL objects: +The following configurable values are supported for QUIC SSL objects. Whether a +value is supported for a QUIC connection SSL object or a QUIC stream SSL object +is indicated in the heading for each value: =over 4 -=item B<SSL_VALUE_QUIC_IDLE_TIMEOUT> +=item B<SSL_VALUE_QUIC_IDLE_TIMEOUT> (connection object) Negotiated feature value. This configures the desired QUIC idle timeout in milliseconds, where 0 represents a lack of an idle timeout. This feature can @@ -133,7 +149,7 @@ changed. This release of OpenSSL uses a default value of 30 seconds. This default value may change between releases of OpenSSL. -=item B<SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL> +=item B<SSL_VALUE_QUIC_STREAM_BIDI_LOCAL_AVAIL> (connection object) Generic read-only statistical value. The number of bidirectional, locally-initiated streams available to be created (but not yet created). For @@ -144,7 +160,7 @@ block or fail due to backpressure. Can be queried using the convenience macro SSL_get_quic_stream_bidi_local_avail(). -=item B<SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL> +=item B<SSL_VALUE_QUIC_STREAM_UNI_LOCAL_AVAIL> (connection object) As above, but provides the number of unidirectional, locally-initiated streams available to be created (but not yet created). @@ -152,7 +168,7 @@ available to be created (but not yet created). Can be queried using the convenience macro SSL_get_quic_stream_uni_local_avail(). -=item B<SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL> +=item B<SSL_VALUE_QUIC_STREAM_BIDI_REMOTE_AVAIL> (connection object) As above, but provides the number of bidirectional, remotely-initiated streams available to be created (but not yet created) by the peer. This represents the @@ -162,7 +178,7 @@ of QUIC stream creation flow control. Can be queried using the convenience macro SSL_get_quic_stream_bidi_remote_avail(). -=item B<SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL> +=item B<SSL_VALUE_QUIC_STREAM_UNI_REMOTE_AVAIL> (connection object) As above, but provides the number of unidirectional, remotely-initiated streams available to be created (but not yet created). @@ -170,10 +186,74 @@ available to be created (but not yet created). Can be queried using the convenience macro SSL_get_quic_stream_uni_remote_avail(). +=item B<SSL_VALUE_EVENT_HANDLING_MODE> (connection or stream object) + +Generic value. This is an integer value which takes one of the following values, +and determines the event handling mode in use: + +=over 4 + +=item B<SSL_VALUE_EVENT_HANDLING_MODE_INHERIT> + +When set, the event handling mode used is inherited from the value set on the +parent connection (for a stream), or, for a connection, defaults to the implicit +event handling model. + +When a new connection is created, or a new stream is created or accepted, it +defaults to this setting. + +=item B<SSL_VALUE_EVENT_HANDLING_MODE_IMPLICIT> (Implicit event handling) + +If set to this value (the default), the implicit event handling model is used. +Under this model, QUIC objects will automatically perform background event +processing (equivalent to a call to L<SSL_handle_events(3)>) when calls to I/O +functions such as L<SSL_read_ex(3)> or L<SSL_write_ex(3)> are made on a QUIC SSL +object. This helps to maintain the health of the QUIC connection and ensures +that incoming datagrams and timeout events are processed. + +=item B<SSL_VALUE_EVENT_HANDLING_MODE_EXPLICIT> (Explicit event handling) + +If set to 0, the explicit event handling model is used. Under this model, +B<nonblocking> calls to I/O functions such as L<SSL_read_ex(3)> or +L<SSL_write_ex(3)> do not result in the automatic processing of QUIC events. Any +new incoming network traffic is not handled; no new outgoing network traffic is +generated, and pending timeout events are not processed. This allows an +application to obtain greater control over the circumstances in which QUIC event +processing occurs. If this event handling model is used, it is the application's +responsibility to call L<SSL_handle_events(3)> as and when called for by the +QUIC implementation; see the L<SSL_get_rpoll_descriptor(3)> man page for more +information. + +Selecting this model does not affect the operation of blocking I/O calls, which +will continue to use the implicit event handling model. Therefore, applications +using this model will generally want to disable blocking operation using +L<SSL_set_blocking_mode(3)>. + +=back + +Can be configured using the convenience macros SSL_get_event_handling_mode() and +SSL_set_event_handling_mode(). + +A call to SSL_set_value_uint() which causes this value to switch back to the +implicit event handling model does not in itself cause implicit event handling +to occur; such handling will occur on the next I/O API call. Equally, a call to +SSL_set_value_uint() which causes this value to switch to the explicit event +handling model will not cause event handling to occur before making that +transition. + +This value controls whether implicit event handling occurs when making an I/O +API call on the SSL object it is set on. However, event processing is not +confined to state which relates to only that object. For example, if you +configure explicit event handling on QUIC stream SSL object "A" and configure +implicit event handling on QUIC stream SSL object "B", a call to an I/O function +on "B" may result in state changes to "A". In other words, if event handling +does happen as a result of an API call to an object related to a connection, +processing of background events (for example, received QUIC network traffic) may +also affect the state of any other object related to a connection. + =back -No configurable values are currently defined for QUIC stream SSL objects or for -other kinds of SSL object. +No configurable values are currently defined for non-QUIC SSL objects. =head1 RETURN VALUES |