From c00f480ba080847417b4ecb41118d5079f9860c7 Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Tue, 3 Dec 2019 16:25:11 +0100 Subject: quic: Add support for unidirectional streams Type: feature Change-Id: I3a642626a444504594c5e3df40dbc92df54136f0 Signed-off-by: Nathan Skrzypczak --- src/vnet/session/application_interface.h | 2 ++ src/vnet/session/session_api.c | 1 + src/vnet/session/session_node.c | 1 + src/vnet/session/session_types.h | 2 ++ 4 files changed, 6 insertions(+) (limited to 'src/vnet/session') diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h index 3a4f9928d04..ec29d18b59b 100644 --- a/src/vnet/session/application_interface.h +++ b/src/vnet/session/application_interface.h @@ -361,6 +361,7 @@ typedef struct session_accepted_msg_ u64 segment_handle; uword vpp_event_queue_address; transport_endpoint_t rmt; + u8 flags; } __clib_packed session_accepted_msg_t; typedef struct session_accepted_reply_msg_ @@ -386,6 +387,7 @@ typedef struct session_connect_msg_ u64 parent_handle; u32 ckpair_index; u8 crypto_engine; + u8 flags; } __clib_packed session_connect_msg_t; STATIC_ASSERT (sizeof (session_connect_msg_t) <= SESSION_CTRL_MSG_MAX_SIZE, diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 0846e571919..99e00a78bf3 100644 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -196,6 +196,7 @@ mq_send_session_accepted_cb (session_t * s) mp->server_rx_fifo = pointer_to_uword (s->rx_fifo); mp->server_tx_fifo = pointer_to_uword (s->tx_fifo); mp->segment_handle = session_segment_handle (s); + mp->flags = s->flags; if (session_has_transport (s)) { diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index 191be7ea3fc..f3ba9e77bcf 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -117,6 +117,7 @@ session_mq_connect_handler (void *data) a->sep_ext.parent_handle = mp->parent_handle; a->sep_ext.ckpair_index = mp->ckpair_index; a->sep_ext.crypto_engine = mp->crypto_engine; + a->sep_ext.flags = mp->flags; if (mp->hostname_len) { vec_validate (a->sep_ext.hostname, mp->hostname_len - 1); diff --git a/src/vnet/session/session_types.h b/src/vnet/session/session_types.h index 6d7f84f4c3f..16d48431572 100644 --- a/src/vnet/session/session_types.h +++ b/src/vnet/session/session_types.h @@ -47,6 +47,7 @@ typedef struct _session_endpoint_cfg u64 parent_handle; u32 ckpair_index; u8 crypto_engine; + u8 flags; } session_endpoint_cfg_t; #define SESSION_IP46_ZERO \ @@ -152,6 +153,7 @@ typedef enum _(PROXY, "proxy") \ _(CUSTOM_TX, "custom-tx") \ _(IS_MIGRATING, "migrating") \ + _(UNIDIRECTIONAL, "unidirectional") \ typedef enum session_flags_bits_ { -- cgit 1.2.3-korg