diff options
author | Nathan Skrzypczak <nathan.skrzypczak@gmail.com> | 2019-05-03 14:20:27 +0200 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2019-05-06 13:08:16 +0000 |
commit | 3a34b1d9366551bbff7eabff3ab48ec8189249e2 (patch) | |
tree | 3452571d43f045df0ebcb2ed713df75c26d39c93 /src/plugins/quic/quic.h | |
parent | 7107d7ef036b48cf910cb90a03978b9371b5c3ab (diff) |
Add QUIC multistream support
Change-Id: I9dc746b8c62c3e7ee2f65e34a1a1dca243ed4bd9
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/plugins/quic/quic.h')
-rw-r--r-- | src/plugins/quic/quic.h | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/plugins/quic/quic.h b/src/plugins/quic/quic.h index a4615946d94..512ffd95eeb 100644 --- a/src/plugins/quic/quic.h +++ b/src/plugins/quic/quic.h @@ -20,19 +20,17 @@ #include <vppinfra/lock.h> #include <vppinfra/tw_timer_1t_3w_1024sl_ov.h> +#include <vppinfra/bihash_16_8.h> #include <quicly.h> #include <quicly/streambuf.h> - -#define QUIC_DEBUG 0 -#define QUIC_DEBUG_LEVEL_CLIENT 0 -#define QUIC_DEBUG_LEVEL_SERVER 0 +#define QUIC_DEBUG 0 +#define QUIC_DEBUG_LEVEL_CLIENT 0 +#define QUIC_DEBUG_LEVEL_SERVER 0 #define QUIC_DEFAULT_CA_CERT_PATH "/etc/ssl/certs/ca-certificates.crt" -#define QUIC_TIMER_HANDLE_INVALID ((u32) ~0) - #define QUIC_TSTAMP_RESOLUTION 0.001 /* QUIC tick resolution (1ms) */ @@ -44,16 +42,9 @@ #define QUIC_DBG(_lvl, _fmt, _args...) #endif -#define QUIC_CONN_STATE_HANDSHAKE 0 -#define QUIC_CONN_STATE_READY 1 - -enum quic_session_type_t -{ - QUIC_SESSION_TYPE_QUIC = 0, - QUIC_SESSION_TYPE_STREAM = 1, - QUIC_SESSION_TYPE_LISTEN = INT32_MAX, -}; - +#define QUIC_CONN_STATE_OPENED 0 +#define QUIC_CONN_STATE_HANDSHAKE 1 +#define QUIC_CONN_STATE_READY 2 /* *INDENT-OFF* */ typedef CLIB_PACKED (struct quic_ctx_id_ @@ -62,14 +53,14 @@ typedef CLIB_PACKED (struct quic_ctx_id_ u32 parent_app_id; union { CLIB_PACKED (struct { - session_handle_t quic_session_handle; // TODO: remove + session_handle_t quic_session_handle; /* TODO: remove */ session_handle_t udp_session_handle; quicly_conn_t *conn; u32 listener_ctx_id; u8 udp_is_ip4; }); CLIB_PACKED (struct { - session_handle_t stream_session_handle; // TODO: remove + session_handle_t stream_session_handle; /* TODO: remove */ quicly_stream_t *stream; u32 quic_connection_ctx_id; }); @@ -80,8 +71,8 @@ typedef CLIB_PACKED (struct quic_ctx_id_ STATIC_ASSERT (sizeof (quic_ctx_id_t) <= 42, "ctx id must be less than 42"); -// This structure is used to implement the concept of VPP connection for QUIC. -// We create one per connection and one per stream. +/* This structure is used to implement the concept of VPP connection for QUIC. + * We create one per connection and one per stream. */ typedef struct quic_ctx_ { union @@ -105,8 +96,9 @@ typedef struct quic_stream_data_ typedef struct quic_worker_ctx_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); - u32 time_now; /**< worker time */ + int64_t time_now; /**< worker time */ tw_timer_wheel_1t_3w_1024sl_ov_t timer_wheel; /**< worker timer wheel */ + u32 *opening_ctx_pool; } quic_worker_ctx_t; typedef struct quic_main_ @@ -114,7 +106,9 @@ typedef struct quic_main_ u32 app_index; quic_ctx_t **ctx_pool; quic_worker_ctx_t *wrk_ctx; + clib_bihash_16_8_t connection_hash; /* quicly connection id -> conn handle */ f64 tstamp_ticks_per_clock; + u32 fake_app_listener_index; /* ugly hack for accept cb */ /* * Config |