Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic_migration.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 | c8bda5e1e662 |
children | 5186ee5a94b9 |
comparison
equal
deleted
inserted
replaced
8762:12f18e0bca09 | 8763:4117aa7fa38e |
---|---|
9 | 9 |
10 | 10 |
11 #include <ngx_config.h> | 11 #include <ngx_config.h> |
12 #include <ngx_core.h> | 12 #include <ngx_core.h> |
13 | 13 |
14 #define NGX_QUIC_PATH_RETRIES 3 | |
15 | |
16 #define NGX_QUIC_PATH_NEW 0 | |
17 #define NGX_QUIC_PATH_VALIDATING 1 | |
18 #define NGX_QUIC_PATH_VALIDATED 2 | |
19 | |
20 #define NGX_QUIC_PATH_VALID_TIME 600 /* seconds */ | |
21 | |
22 | |
23 #define ngx_quic_path_state_str(p) \ | |
24 ((p)->state == NGX_QUIC_PATH_NEW) ? "new" : \ | |
25 (((p)->state == NGX_QUIC_PATH_VALIDATED) ? "validated" : "validating") | |
26 | |
14 | 27 |
15 ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, | 28 ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c, |
16 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); | 29 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); |
17 ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c, | 30 ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c, |
18 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); | 31 ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f); |
19 | 32 |
33 ngx_quic_path_t *ngx_quic_add_path(ngx_connection_t *c, | |
34 struct sockaddr *sockaddr, socklen_t socklen); | |
35 | |
36 ngx_int_t ngx_quic_check_migration(ngx_connection_t *c, | |
37 ngx_quic_header_t *pkt); | |
38 ngx_int_t ngx_quic_update_paths(ngx_connection_t *c, ngx_quic_header_t *pkt); | |
39 ngx_int_t ngx_quic_handle_migration(ngx_connection_t *c, | |
40 ngx_quic_header_t *pkt); | |
41 | |
42 void ngx_quic_path_validation_handler(ngx_event_t *ev); | |
43 | |
20 #endif /* _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_ */ | 44 #endif /* _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_ */ |