annotate src/event/quic/ngx_event_quic_output.h @ 8763:4117aa7fa38e quic

QUIC: connection migration. The patch adds proper transitions between multiple networking addresses that can be used by a single quic connection. New networking paths are validated using PATH_CHALLENGE/PATH_RESPONSE frames.
author Vladimir Homutov <vl@nginx.com>
date Thu, 29 Apr 2021 15:35:02 +0300
parents bc910a5ec737
children ff473a6f656c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8751
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
1
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
2 /*
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
3 * Copyright (C) Nginx, Inc.
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
4 */
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
5
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
6
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
7 #ifndef _NGX_EVENT_QUIC_OUTPUT_H_INCLUDED_
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
8 #define _NGX_EVENT_QUIC_OUTPUT_H_INCLUDED_
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
9
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
10
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
11 #include <ngx_config.h>
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
12 #include <ngx_core.h>
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
13
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
14
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
15 size_t ngx_quic_max_udp_payload(ngx_connection_t *c);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
16
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
17 ngx_int_t ngx_quic_output(ngx_connection_t *c);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
18
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
19 ngx_int_t ngx_quic_negotiate_version(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
20 ngx_quic_header_t *inpkt);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
21
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
22 int ngx_quic_send_alert(ngx_ssl_conn_t *ssl_conn,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
23 enum ssl_encryption_level_t level, uint8_t alert);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
24
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
25 ngx_int_t ngx_quic_send_stateless_reset(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
26 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
27 ngx_int_t ngx_quic_send_cc(ngx_connection_t *c);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
28 ngx_int_t ngx_quic_send_early_cc(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
29 ngx_quic_header_t *inpkt, ngx_uint_t err, const char *reason);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
30
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
31 ngx_int_t ngx_quic_send_retry(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
32 ngx_quic_conf_t *conf, ngx_quic_header_t *pkt);
8763
4117aa7fa38e QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents: 8751
diff changeset
33 ngx_int_t ngx_quic_send_new_token(ngx_connection_t *c, ngx_quic_path_t *path);
8751
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
34
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
35 ngx_int_t ngx_quic_send_ack(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
36 ngx_quic_send_ctx_t *ctx);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
37 ngx_int_t ngx_quic_send_ack_range(ngx_connection_t *c,
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
38 ngx_quic_send_ctx_t *ctx, uint64_t smallest, uint64_t largest);
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
39
8763
4117aa7fa38e QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents: 8751
diff changeset
40 ssize_t ngx_quic_frame_sendto(ngx_connection_t *c, ngx_quic_frame_t *frame,
4117aa7fa38e QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents: 8751
diff changeset
41 size_t min, struct sockaddr *sockaddr, socklen_t socklen);
4117aa7fa38e QUIC: connection migration.
Vladimir Homutov <vl@nginx.com>
parents: 8751
diff changeset
42
8751
bc910a5ec737 QUIC: separate files for output and ack related processing.
Vladimir Homutov <vl@nginx.com>
parents:
diff changeset
43 #endif /* _NGX_EVENT_QUIC_OUTPUT_H_INCLUDED_ */