tls: enforce certificate verification
[vpp.git] / src / vnet / session / stream_session.h
index 57d256c..b7a5eee 100644 (file)
@@ -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;
@@ -119,6 +124,7 @@ typedef struct local_session_
 
   /** Has transport embedded when listener not purely local */
   session_type_t listener_session_type;
+  u32 transport_listener_index;
 
   /**
    * Client data
@@ -132,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)                                     \
+
 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;
+  u8 *hostname;
+} session_endpoint_extended_t;
+
 #define SESSION_IP46_ZERO              \
 {                                      \
     .ip6 = {                           \
@@ -161,6 +174,18 @@ typedef struct _session_endpoint
   .port = 0,                           \
   .transport_proto = 0,                        \
 }
+#define SESSION_ENDPOINT_EXT_NULL      \
+{                                      \
+  .sw_if_index = ENDPOINT_INVALID_INDEX,       \
+  .ip = SESSION_IP46_ZERO,             \
+  .fib_index = ENDPOINT_INVALID_INDEX, \
+  .is_ip4 = 0,                         \
+  .port = 0,                           \
+  .transport_proto = 0,                        \
+  .app_index = ENDPOINT_INVALID_INDEX, \
+  .opaque = ENDPOINT_INVALID_INDEX,    \
+  .hostname = 0,                               \
+}
 
 #define session_endpoint_to_transport(_sep) ((transport_endpoint_t *)_sep)