summaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>2019-12-03 16:25:11 +0100
committerFlorin Coras <florin.coras@gmail.com>2019-12-11 16:44:24 +0000
commitc00f480ba080847417b4ecb41118d5079f9860c7 (patch)
treeade498d4789dd3202c79e66e178c7663179999d9 /src/vnet/session
parentf98e59b86d886ad819e98e88b672dbd7c9560edf (diff)
quic: Add support for unidirectional streams
Type: feature Change-Id: I3a642626a444504594c5e3df40dbc92df54136f0 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/application_interface.h2
-rw-r--r--src/vnet/session/session_api.c1
-rw-r--r--src/vnet/session/session_node.c1
-rw-r--r--src/vnet/session/session_types.h2
4 files changed, 6 insertions, 0 deletions
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_
{