summaryrefslogtreecommitdiffstats
path: root/src/vnet/session/stream_session.h
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-02-21 12:07:41 -0800
committerDave Barach <openvpp@barachs.net>2018-03-02 12:54:31 +0000
commit371ca50a74a9c4f1b74c4c1b65c6fdec610fcfc3 (patch)
tree947e800faa7846223bdf8fb73429c657ddaf5805 /src/vnet/session/stream_session.h
parent9e6356962a0cbb84f7ea9056b954d65aaa231a61 (diff)
session: first approximation implementation of tls
It consists of two main parts. First, add an application transport type whereby applications can offer transport to other applications. For instance, a tls app can offer transport services to other applications. And second, a tls transport app that leverages the mbedtls library for tls protocol implementation. Change-Id: I616996c6e6539a9e2368fab8a1ac874d7c5d9838 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/stream_session.h')
-rw-r--r--src/vnet/session/stream_session.h33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/vnet/session/stream_session.h b/src/vnet/session/stream_session.h
index 5c4601daa31..6f6dce66040 100644
--- a/src/vnet/session/stream_session.h
+++ b/src/vnet/session/stream_session.h
@@ -85,8 +85,13 @@ typedef struct _stream_session_t
/** Transport specific */
u32 connection_index;
- /** Parent listener session if the result of an accept */
- u32 listener_index;
+ union
+ {
+ /** Parent listener session if the result of an accept */
+ u32 listener_index;
+ /** Opaque, for general use */
+ u32 opaque;
+ };
CLIB_CACHE_LINE_ALIGN_MARK (pad);
} stream_session_t;
@@ -133,20 +138,27 @@ typedef struct local_session_
CLIB_CACHE_LINE_ALIGN_MARK (pad);
} local_session_t;
+#define foreach_session_endpoint_fields \
+ foreach_transport_connection_fields \
+ _(u8, transport_proto) \
+ _(u8, app_proto) \
+
typedef struct _session_endpoint
{
- /*
- * Network specific
- */
#define _(type, name) type name;
- foreach_transport_connection_fields
+ foreach_session_endpoint_fields
#undef _
- /*
- * Session specific
- */
- u8 transport_proto; /**< transport protocol for session */
} session_endpoint_t;
+typedef struct _session_endpoint_extended
+{
+#define _(type, name) type name;
+ foreach_session_endpoint_fields
+#undef _
+ u32 app_index;
+ u32 opaque;
+} session_endpoint_extended_t;
+
#define SESSION_IP46_ZERO \
{ \
.ip6 = { \
@@ -161,6 +173,7 @@ typedef struct _session_endpoint
.is_ip4 = 0, \
.port = 0, \
.transport_proto = 0, \
+ .app_proto = 0, \
}
#define session_endpoint_to_transport(_sep) ((transport_endpoint_t *)_sep)