From 1c2af06852fb6d7788f0f4926d062c11e5869ead Mon Sep 17 00:00:00 2001 From: Aloys Augustin Date: Thu, 25 Jul 2019 17:08:32 +0200 Subject: quic: cleanup and refactorisation Change-Id: I031a60ac010b55110f32f0a08e19b1156aeda268 Type: refactor Signed-off-by: Aloys Augustin --- src/plugins/quic/quic.h | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'src/plugins/quic/quic.h') diff --git a/src/plugins/quic/quic.h b/src/plugins/quic/quic.h index de27f2ac7d5..a7ce4dd57ad 100644 --- a/src/plugins/quic/quic.h +++ b/src/plugins/quic/quic.h @@ -83,37 +83,30 @@ typedef enum quic_ctx_flags_ QUIC_F_IS_LISTENER = (1 << 1), } quic_ctx_flags_t; -/* *INDENT-OFF* */ -typedef struct quic_ctx_id_ +/* 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 { /** QUIC ctx case */ - struct { + union + { + transport_connection_t connection; + struct + { /** QUIC ctx case */ quicly_conn_t *conn; u32 listener_ctx_id; u32 client_opaque; u8 *srv_hostname; u8 conn_state; u8 udp_is_ip4; + u8 _qctx_end_marker; /* Leave this at the end */ }; - struct { /** STREAM ctx case */ + struct + { /** STREAM ctx case */ quicly_stream_t *stream; u32 quic_connection_ctx_id; + u8 _sctx_end_marker; /* Leave this at the end */ }; }; -} quic_ctx_id_t; -/* *INDENT-ON* */ - -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. */ -typedef struct quic_ctx_ -{ - union - { - transport_connection_t connection; - quic_ctx_id_t c_quic_ctx_id; - }; session_handle_t udp_session_handle; u32 timer_handle; u32 parent_app_wrk_id; @@ -121,6 +114,17 @@ typedef struct quic_ctx_ u8 flags; } quic_ctx_t; +/* Make sure our custom fields don't overlap with the fields we use in + .connection +*/ +STATIC_ASSERT (offsetof (quic_ctx_t, _qctx_end_marker) <= + TRANSPORT_CONN_ID_LEN, + "connection data must be less than TRANSPORT_CONN_ID_LEN bytes"); +STATIC_ASSERT (offsetof (quic_ctx_t, _sctx_end_marker) <= + TRANSPORT_CONN_ID_LEN, + "connection data must be less than TRANSPORT_CONN_ID_LEN bytes"); + + typedef struct quic_stream_data_ { u32 ctx_id; -- cgit 1.2.3-korg