Mercurial > hg > nginx-quic
annotate src/event/quic/ngx_event_quic_connection.h @ 8408:e0cb1e58ca13 quic
QUIC: separate files for connection id related processing.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Tue, 13 Apr 2021 14:37:41 +0300 |
parents | c8bda5e1e662 |
children | 660c4a2f95f3 |
rev | line source |
---|---|
8386
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> |
8407 | 13 |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
14 #include <ngx_event_quic_transport.h> |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
15 #include <ngx_event_quic_protection.h> |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
16 |
8407 | 17 typedef struct ngx_quic_connection_s ngx_quic_connection_t; |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
18 |
8407 | 19 #include <ngx_event_quic_migration.h> |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
20 #include <ngx_event_quic_connid.h> |
8386
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 |
8407 | 23 #define NGX_QUIC_MAX_SHORT_HEADER 25 /* 1 flags + 20 dcid + 4 pn */ |
24 #define NGX_QUIC_MAX_LONG_HEADER 56 | |
25 /* 1 flags + 4 version + 2 x (1 + 20) s/dcid + 4 pn + 4 len + token len */ | |
26 | |
27 #define NGX_QUIC_MAX_UDP_PAYLOAD_OUT 1252 | |
28 #define NGX_QUIC_MAX_UDP_PAYLOAD_OUT6 1232 | |
29 | |
30 #define NGX_QUIC_RETRY_TOKEN_LIFETIME 3 /* seconds */ | |
31 #define NGX_QUIC_NEW_TOKEN_LIFETIME 600 /* seconds */ | |
32 #define NGX_QUIC_RETRY_BUFFER_SIZE 256 | |
33 /* 1 flags + 4 version + 3 x (1 + 20) s/o/dcid + itag + token(64) */ | |
34 #define NGX_QUIC_MAX_TOKEN_SIZE 64 | |
35 /* SHA-1(addr)=20 + sizeof(time_t) + retry(1) + odcid.len(1) + odcid */ | |
36 | |
37 /* quic-recovery, section 6.2.2, kInitialRtt */ | |
38 #define NGX_QUIC_INITIAL_RTT 333 /* ms */ | |
39 | |
40 /* quic-recovery, section 6.1.1, Packet Threshold */ | |
41 #define NGX_QUIC_PKT_THR 3 /* packets */ | |
42 /* quic-recovery, section 6.1.2, Time Threshold */ | |
43 #define NGX_QUIC_TIME_THR 1.125 | |
44 #define NGX_QUIC_TIME_GRANULARITY 1 /* ms */ | |
45 | |
46 #define NGX_QUIC_CC_MIN_INTERVAL 1000 /* 1s */ | |
47 | |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
48 #define NGX_QUIC_BUFFER_SIZE 4096 |
8407 | 49 |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
50 #define NGX_QUIC_UNSET_PN (uint64_t) -1 |
8407 | 51 |
52 #define NGX_QUIC_SEND_CTX_LAST (NGX_QUIC_ENCRYPTION_LAST - 1) | |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
53 |
8387
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
54 /* 0-RTT and 1-RTT data exist in the same packet number space, |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
55 * so we have 3 packet number spaces: |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
56 * |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
57 * 0 - Initial |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
58 * 1 - Handshake |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
59 * 2 - 0-RTT and 1-RTT |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
60 */ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
61 #define ngx_quic_get_send_ctx(qc, level) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
62 ((level) == ssl_encryption_initial) ? &((qc)->send_ctx[0]) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
63 : (((level) == ssl_encryption_handshake) ? &((qc)->send_ctx[1]) \ |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
64 : &((qc)->send_ctx[2])) |
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
65 |
8407 | 66 #define ngx_quic_get_connection(c) \ |
67 (((c)->udp) ? (((ngx_quic_server_id_t *)((c)->udp))->quic) : NULL) | |
68 | |
8386
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 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
71 ngx_queue_t queue; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
72 uint64_t seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
73 size_t len; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
74 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
|
75 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
|
76 } ngx_quic_client_id_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
77 |
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 ngx_udp_connection_t udp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
81 ngx_quic_connection_t *quic; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
82 ngx_queue_t queue; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
83 uint64_t seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
84 size_t len; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
85 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
|
86 } ngx_quic_server_id_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
87 |
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 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
90 ngx_rbtree_t tree; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
91 ngx_rbtree_node_t sentinel; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
92 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
93 uint64_t received; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
94 uint64_t sent; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
95 uint64_t recv_max_data; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
96 uint64_t send_max_data; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
97 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
98 uint64_t server_max_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
99 uint64_t server_max_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
100 uint64_t server_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
101 uint64_t server_streams_bidi; |
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 uint64_t client_max_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
104 uint64_t client_max_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
105 uint64_t client_streams_uni; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
106 uint64_t client_streams_bidi; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
107 } ngx_quic_streams_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
108 |
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 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
111 size_t in_flight; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
112 size_t window; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
113 size_t ssthresh; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
114 ngx_msec_t recovery_start; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
115 } ngx_quic_congestion_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
116 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
117 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
118 /* |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
119 * 12.3. Packet Numbers |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
120 * |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
121 * 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
|
122 * 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
|
123 * 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
|
124 * are also Initial packets. |
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 typedef struct { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
127 enum ssl_encryption_level_t level; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
128 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
129 uint64_t pnum; /* to be sent */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
130 uint64_t largest_ack; /* received from peer */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
131 uint64_t largest_pn; /* received from peer */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
132 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
133 ngx_queue_t frames; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
134 ngx_queue_t sent; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
135 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
136 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
|
137 uint64_t largest_range; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
138 uint64_t first_range; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
139 ngx_msec_t largest_received; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
140 ngx_msec_t ack_delay_start; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
141 ngx_uint_t nranges; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
142 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
|
143 ngx_uint_t send_ack; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
144 } ngx_quic_send_ctx_t; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
145 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
146 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
147 struct ngx_quic_connection_s { |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
148 uint32_t version; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
149 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
150 ngx_str_t scid; /* initial client ID */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
151 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
|
152 ngx_str_t odcid; /* original server ID */ |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
153 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
154 struct sockaddr *sockaddr; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
155 socklen_t socklen; |
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_queue_t client_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
158 ngx_queue_t server_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
159 ngx_queue_t free_client_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
160 ngx_queue_t free_server_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
161 ngx_uint_t nclient_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
162 ngx_uint_t nserver_ids; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
163 uint64_t max_retired_seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
164 uint64_t client_seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
165 uint64_t server_seqnum; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
166 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
167 ngx_uint_t client_tp_done; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
168 ngx_quic_tp_t tp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
169 ngx_quic_tp_t ctp; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
170 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
171 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
|
172 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
173 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
|
174 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
175 ngx_quic_keys_t *keys; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
176 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
177 ngx_quic_conf_t *conf; |
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 ngx_event_t push; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
180 ngx_event_t pto; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
181 ngx_event_t close; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
182 ngx_msec_t last_cc; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
183 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
184 ngx_msec_t latest_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
185 ngx_msec_t avg_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
186 ngx_msec_t min_rtt; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
187 ngx_msec_t rttvar; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
188 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
189 ngx_uint_t pto_count; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
190 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
191 ngx_queue_t free_frames; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
192 ngx_chain_t *free_bufs; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
193 ngx_buf_t *free_shadow_bufs; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
194 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
195 #ifdef NGX_QUIC_DEBUG_ALLOC |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
196 ngx_uint_t nframes; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
197 ngx_uint_t nbufs; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
198 #endif |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
199 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
200 ngx_quic_streams_t streams; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
201 ngx_quic_congestion_t congestion; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
202 off_t received; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
203 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
204 ngx_uint_t error; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
205 enum ssl_encryption_level_t error_level; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
206 ngx_uint_t error_ftype; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
207 const char *error_reason; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
208 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
209 ngx_uint_t shutdown_code; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
210 const char *shutdown_reason; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
211 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
212 unsigned error_app:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
213 unsigned send_timer_set:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
214 unsigned closing:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
215 unsigned shutdown:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
216 unsigned draining:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
217 unsigned key_phase:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
218 unsigned validated:1; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
219 }; |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
220 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
221 |
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
222 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
|
223 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
|
224 void ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc); |
8387
76f476ce4d31
QUIC: distinct files for connection migration.
Vladimir Homutov <vl@nginx.com>
parents:
8386
diff
changeset
|
225 ngx_msec_t ngx_quic_pto(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx); |
8386
714e9af983de
QUIC: separate header for ngx_quic_connection_t.
Vladimir Homutov <vl@nginx.com>
parents:
diff
changeset
|
226 |
8408
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
227 ngx_int_t ngx_quic_new_sr_token(ngx_connection_t *c, ngx_str_t *cid, |
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
228 u_char *secret, u_char *token); |
e0cb1e58ca13
QUIC: separate files for connection id related processing.
Vladimir Homutov <vl@nginx.com>
parents:
8407
diff
changeset
|
229 |
8407 | 230 /********************************* DEBUG *************************************/ |
231 | |
232 /* #define NGX_QUIC_DEBUG_PACKETS */ /* dump packet contents */ | |
233 /* #define NGX_QUIC_DEBUG_FRAMES */ /* dump frames contents */ | |
234 /* #define NGX_QUIC_DEBUG_ALLOC */ /* log frames and bufs alloc */ | |
235 /* #define NGX_QUIC_DEBUG_CRYPTO */ | |
236 | |
237 #endif /* _NGX_EVENT_QUIC_CONNECTION_H_INCLUDED_ */ |