diff options
author | Florin Coras <fcoras@cisco.com> | 2018-02-21 12:07:41 -0800 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-03-02 12:54:31 +0000 |
commit | 371ca50a74a9c4f1b74c4c1b65c6fdec610fcfc3 (patch) | |
tree | 947e800faa7846223bdf8fb73429c657ddaf5805 /src/vnet/session/stream_session.h | |
parent | 9e6356962a0cbb84f7ea9056b954d65aaa231a61 (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.h | 33 |
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) |