X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fstream_session.h;h=1ed6e0b9eec09ff6732ba30f20a622b398fdc40f;hb=cea194d8f973a2f2b5ef72d212533057174cc70a;hp=4c26321194deaef3f43cd8f95dc74d099f5581f3;hpb=52851e6aa9304054fd1059c8dd284abf8e532bf2;p=vpp.git diff --git a/src/vnet/session/stream_session.h b/src/vnet/session/stream_session.h index 4c26321194d..1ed6e0b9eec 100644 --- a/src/vnet/session/stream_session.h +++ b/src/vnet/session/stream_session.h @@ -18,6 +18,7 @@ #include #include +#include #define foreach_session_type \ _(IP4_TCP, ip4_tcp) \ @@ -56,16 +57,13 @@ typedef struct _stream_session_t u8 session_type; /** State */ - u8 session_state; + volatile u8 session_state; u8 thread_index; /** To avoid n**2 "one event per frame" check */ u8 enqueue_epoch; - /** Pad to a multiple of 8 octets */ - u8 align_pad[4]; - /** svm segment index where fifos were allocated */ u32 svm_segment_index; @@ -81,15 +79,47 @@ typedef struct _stream_session_t /** Parent listener session if the result of an accept */ u32 listener_index; - u32 opaque2; - - /** connected (server) session handle */ - u64 server_session_handle; - - /** Opaque, pad to a 64-octet boundary */ - u64 opaque[1]; + CLIB_CACHE_LINE_ALIGN_MARK (pad); } stream_session_t; +typedef struct _session_endpoint +{ + /* + * Network specific + */ +#define _(type, name) type name; + foreach_transport_connection_fields +#undef _ + /* + * Session specific + */ + u8 transport_proto; /**< transport protocol for session */ +} session_endpoint_t; + +#define SESSION_IP46_ZERO \ +{ \ + .ip6 = { \ + { 0, 0, }, \ + }, \ +} +#define SESSION_ENDPOINT_NULL \ +{ \ + .sw_if_index = ENDPOINT_INVALID_INDEX, \ + .ip = SESSION_IP46_ZERO, \ + .fib_index = ENDPOINT_INVALID_INDEX, \ + .is_ip4 = 0, \ + .port = 0, \ + .transport_proto = 0, \ +} + +#define session_endpoint_to_transport(_sep) ((transport_endpoint_t *)_sep) + +always_inline u8 +session_endpoint_fib_proto (session_endpoint_t * sep) +{ + return sep->is_ip4 ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6; +} + #endif /* SRC_VNET_SESSION_STREAM_SESSION_H_ */ /*