lsquic_ver_neg.h revision 10c492f0
1/* Copyright (c) 2017 - 2018 LiteSpeed Technologies Inc.  See LICENSE. */
2#ifndef LSQUIC_VER_NEG_H
3#define LSQUIC_VER_NEG_H
4
5/* Client engages in version negotiation, going from highest supported
6 * version to lowest.
7 */
8struct ver_neg {
9    unsigned            vn_supp;    /* Remaining options, including `vn_ver' */
10    enum lsquic_version vn_ver;     /* If client, current version sent to server;
11                                     * if server, this is set to negotiated version.
12                                     */
13    enum ver_neg_state {
14        VN_START,                   /* Have not received ver-nego packet */
15        VN_IN_PROGRESS,             /* Received ver-nego packet */
16        VN_END,                     /* Received packet using supported version */
17    }                   vn_state;
18    lsquic_ver_tag_t    vn_buf;     /* Buffer to store version tag */
19    lsquic_ver_tag_t   *vn_tag;     /* Pointer to version tag.  Set to NULL if
20                                     * version negotiation is done in the client;
21                                     * always set to NULL in server.
22                                     */
23};
24
25#endif
26