comparison src/event/ngx_event_quic_transport.h @ 7860:7ea34e13937f quic

Address validation using Retry packets. The behaviour is toggled with the new directive "quic_retry on|off". QUIC token construction is made suitable for issuing with NEW_TOKEN.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 14 May 2020 15:47:18 +0300
parents 9d9531431c8c
children 52d0c4832570
comparison
equal deleted inserted replaced
7859:b7704303a7e5 7860:7ea34e13937f
278 278
279 u_char *data; /* quic packet */ 279 u_char *data; /* quic packet */
280 size_t len; 280 size_t len;
281 281
282 /* cleartext fields */ 282 /* cleartext fields */
283 ngx_str_t odcid; /* retry packet tag */
283 ngx_str_t dcid; 284 ngx_str_t dcid;
284 ngx_str_t scid; 285 ngx_str_t scid;
285 uint64_t pn; 286 uint64_t pn;
286 u_char *plaintext; 287 u_char *plaintext;
287 ngx_str_t payload; /* decrypted data */ 288 ngx_str_t payload; /* decrypted data */
301 ngx_int_t ngx_quic_parse_short_header(ngx_quic_header_t *pkt, 302 ngx_int_t ngx_quic_parse_short_header(ngx_quic_header_t *pkt,
302 ngx_str_t *dcid); 303 ngx_str_t *dcid);
303 size_t ngx_quic_create_short_header(ngx_quic_header_t *pkt, u_char *out, 304 size_t ngx_quic_create_short_header(ngx_quic_header_t *pkt, u_char *out,
304 size_t pkt_len, u_char **pnp); 305 size_t pkt_len, u_char **pnp);
305 306
307 size_t ngx_quic_create_retry_itag(ngx_quic_header_t *pkt, u_char *out,
308 u_char **start);
309
306 ngx_int_t ngx_quic_parse_initial_header(ngx_quic_header_t *pkt); 310 ngx_int_t ngx_quic_parse_initial_header(ngx_quic_header_t *pkt);
307 ngx_int_t ngx_quic_parse_handshake_header(ngx_quic_header_t *pkt); 311 ngx_int_t ngx_quic_parse_handshake_header(ngx_quic_header_t *pkt);
308 312
309 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end, 313 ssize_t ngx_quic_parse_frame(ngx_quic_header_t *pkt, u_char *start, u_char *end,
310 ngx_quic_frame_t *frame); 314 ngx_quic_frame_t *frame);