annotate src/event/quic/ngx_event_quic_connection.h @ 8736:714e9af983de quic

QUIC: separate header for ngx_quic_connection_t.
author Vladimir Homutov <vl@nginx.com>
date Wed, 31 Mar 2021 14:56:16 +0300
parents
children 76f476ce4d31
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8736
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
1 /*
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
2 * Copyright (C) Nginx, Inc.
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
3 */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
4
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
5
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
6 #ifndef _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
7 #define _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
8
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
9
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
10 #include <ngx_config.h>
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
11 #include <ngx_core.h>
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
12 #include <ngx_event.h>
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
13 #include <ngx_event_quic_transport.h>
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
14 #include <ngx_event_quic_protection.h>
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
15
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
16
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
17 #define NGX_QUIC_SEND_CTX_LAST (NGX_QUIC_ENCRYPTION_LAST - 1)
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
18
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
19
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
20 typedef struct ngx_quic_connection_s ngx_quic_connection_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
21
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
22
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
23 typedef struct {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
24 ngx_queue_t queue;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
25 uint64_t seqnum;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
26 size_t len;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
27 u_char id[NGX_QUIC_CID_LEN_MAX];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
28 u_char sr_token[NGX_QUIC_SR_TOKEN_LEN];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
29 } ngx_quic_client_id_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
30
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
31
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
32 typedef struct {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
33 ngx_udp_connection_t udp;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
34 ngx_quic_connection_t *quic;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
35 ngx_queue_t queue;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
36 uint64_t seqnum;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
37 size_t len;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
38 u_char id[NGX_QUIC_CID_LEN_MAX];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
39 } ngx_quic_server_id_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
40
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
41
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
42 typedef struct {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
43 ngx_rbtree_t tree;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
44 ngx_rbtree_node_t sentinel;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
45
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
46 uint64_t received;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
47 uint64_t sent;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
48 uint64_t recv_max_data;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
49 uint64_t send_max_data;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
50
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
51 uint64_t server_max_streams_uni;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
52 uint64_t server_max_streams_bidi;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
53 uint64_t server_streams_uni;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
54 uint64_t server_streams_bidi;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
55
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
56 uint64_t client_max_streams_uni;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
57 uint64_t client_max_streams_bidi;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
58 uint64_t client_streams_uni;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
59 uint64_t client_streams_bidi;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
60 } ngx_quic_streams_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
61
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
62
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
63 typedef struct {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
64 size_t in_flight;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
65 size_t window;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
66 size_t ssthresh;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
67 ngx_msec_t recovery_start;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
68 } ngx_quic_congestion_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
69
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
70
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
71 /*
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
72 * 12.3. Packet Numbers
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
73 *
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
74 * Conceptually, a packet number space is the context in which a packet
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
75 * can be processed and acknowledged. Initial packets can only be sent
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
76 * with Initial packet protection keys and acknowledged in packets which
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
77 * are also Initial packets.
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
78 */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
79 typedef struct {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
80 enum ssl_encryption_level_t level;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
81
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
82 uint64_t pnum; /* to be sent */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
83 uint64_t largest_ack; /* received from peer */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
84 uint64_t largest_pn; /* received from peer */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
85
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
86 ngx_queue_t frames;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
87 ngx_queue_t sent;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
88
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
89 uint64_t pending_ack; /* non sent ack-eliciting */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
90 uint64_t largest_range;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
91 uint64_t first_range;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
92 ngx_msec_t largest_received;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
93 ngx_msec_t ack_delay_start;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
94 ngx_uint_t nranges;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
95 ngx_quic_ack_range_t ranges[NGX_QUIC_MAX_RANGES];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
96 ngx_uint_t send_ack;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
97 } ngx_quic_send_ctx_t;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
98
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
99
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
100 struct ngx_quic_connection_s {
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
101 uint32_t version;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
102
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
103 ngx_str_t scid; /* initial client ID */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
104 ngx_str_t dcid; /* server (our own) ID */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
105 ngx_str_t odcid; /* original server ID */
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
106
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
107 struct sockaddr *sockaddr;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
108 socklen_t socklen;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
109
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
110 ngx_queue_t client_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
111 ngx_queue_t server_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
112 ngx_queue_t free_client_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
113 ngx_queue_t free_server_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
114 ngx_uint_t nclient_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
115 ngx_uint_t nserver_ids;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
116 uint64_t max_retired_seqnum;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
117 uint64_t client_seqnum;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
118 uint64_t server_seqnum;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
119
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
120 ngx_uint_t client_tp_done;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
121 ngx_quic_tp_t tp;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
122 ngx_quic_tp_t ctp;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
123
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
124 ngx_quic_send_ctx_t send_ctx[NGX_QUIC_SEND_CTX_LAST];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
125
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
126 ngx_quic_frames_stream_t crypto[NGX_QUIC_ENCRYPTION_LAST];
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
127
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
128 ngx_quic_keys_t *keys;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
129
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
130 ngx_quic_conf_t *conf;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
131
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
132 ngx_event_t push;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
133 ngx_event_t pto;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
134 ngx_event_t close;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
135 ngx_msec_t last_cc;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
136
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
137 ngx_msec_t latest_rtt;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
138 ngx_msec_t avg_rtt;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
139 ngx_msec_t min_rtt;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
140 ngx_msec_t rttvar;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
141
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
142 ngx_uint_t pto_count;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
143
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
144 ngx_queue_t free_frames;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
145 ngx_chain_t *free_bufs;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
146 ngx_buf_t *free_shadow_bufs;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
147
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
148 #ifdef NGX_QUIC_DEBUG_ALLOC
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
149 ngx_uint_t nframes;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
150 ngx_uint_t nbufs;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
151 #endif
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
152
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
153 ngx_quic_streams_t streams;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
154 ngx_quic_congestion_t congestion;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
155 off_t received;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
156
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
157 ngx_uint_t error;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
158 enum ssl_encryption_level_t error_level;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
159 ngx_uint_t error_ftype;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
160 const char *error_reason;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
161
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
162 ngx_uint_t shutdown_code;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
163 const char *shutdown_reason;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
164
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
165 unsigned error_app:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
166 unsigned send_timer_set:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
167 unsigned closing:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
168 unsigned shutdown:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
169 unsigned draining:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
170 unsigned key_phase:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
171 unsigned validated:1;
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
172 };
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
173
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
174
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
175 ngx_quic_frame_t *ngx_quic_alloc_frame(ngx_connection_t *c);
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
176 void ngx_quic_queue_frame(ngx_quic_connection_t *qc, ngx_quic_frame_t *frame);
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
177 void ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc);
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
178
714e9af983de QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
179 #endif