comparison src/event/ngx_event_quic.h @ 7713:e9891e8ee975 quic

Configurable transport parameters. - integer parameters can be configured using the following directives: quic_max_idle_timeout quic_max_ack_delay quic_max_packet_size quic_initial_max_data quic_initial_max_stream_data_bidi_local quic_initial_max_stream_data_bidi_remote quic_initial_max_stream_data_uni quic_initial_max_streams_bidi quic_initial_max_streams_uni quic_ack_delay_exponent quic_active_migration quic_active_connection_id_limit - only following parameters are actually sent: active_connection_id_limit initial_max_streams_uni initial_max_streams_bidi initial_max_stream_data_bidi_local initial_max_stream_data_bidi_remote initial_max_stream_data_uni (other parameters are to be added into ngx_quic_create_transport_params() function as needed, should be easy now) - draft 24 and draft 27 are now supported (at compile-time using quic_version macro)
author Vladimir Homutov <vl@nginx.com>
date Fri, 20 Mar 2020 13:47:44 +0300
parents ae35ccba7aa6
children 1295b293d09a
comparison
equal deleted inserted replaced
7712:0d9bc77ae30d 7713:e9891e8ee975
13 13
14 #define quic_version 0xff000018 /* draft-24 (ngtcp2) */ 14 #define quic_version 0xff000018 /* draft-24 (ngtcp2) */
15 //#define quic_version 0xff00001b /* draft-27 (FFN 76) */ 15 //#define quic_version 0xff00001b /* draft-27 (FFN 76) */
16 16
17 17
18 typedef struct {
19 /* configurable */
20 ngx_msec_t max_idle_timeout;
21 ngx_msec_t max_ack_delay;
22
23 ngx_uint_t max_packet_size;
24 ngx_uint_t initial_max_data;
25 ngx_uint_t initial_max_stream_data_bidi_local;
26 ngx_uint_t initial_max_stream_data_bidi_remote;
27 ngx_uint_t initial_max_stream_data_uni;
28 ngx_uint_t initial_max_streams_bidi;
29 ngx_uint_t initial_max_streams_uni;
30 ngx_uint_t ack_delay_exponent;
31 ngx_uint_t disable_active_migration;
32 ngx_uint_t active_connection_id_limit;
33
34 /* TODO */
35 ngx_uint_t original_connection_id;
36 u_char stateless_reset_token[16];
37 void *preferred_address;
38 } ngx_quic_tp_t;
39
40
18 struct ngx_quic_stream_s { 41 struct ngx_quic_stream_s {
19 uint64_t id; 42 uint64_t id;
20 ngx_uint_t unidirectional:1; 43 ngx_uint_t unidirectional:1;
21 ngx_connection_t *parent; 44 ngx_connection_t *parent;
22 void *data; 45 void *data;
23 }; 46 };
24 47
25 48
26 void ngx_quic_init_ssl_methods(SSL_CTX* ctx); 49 void ngx_quic_init_ssl_methods(SSL_CTX* ctx);
27 50
28 void ngx_quic_run(ngx_connection_t *c, ngx_ssl_t *ssl, ngx_msec_t timeout, 51 void ngx_quic_run(ngx_connection_t *c, ngx_ssl_t *ssl, ngx_quic_tp_t *tp,
29 ngx_connection_handler_pt handler); 52 ngx_msec_t timeout, ngx_connection_handler_pt handler);
30 ngx_connection_t *ngx_quic_create_uni_stream(ngx_connection_t *c); 53 ngx_connection_t *ngx_quic_create_uni_stream(ngx_connection_t *c);
31 54
32 55
33 /********************************* DEBUG *************************************/ 56 /********************************* DEBUG *************************************/
34 57