FD.io VPP  v20.05.1-6-gf53edbc3b
Vector Packet Processing
session_types.h File Reference
+ Include dependency graph for session_types.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  session_
 
struct  session_rpc_args_t
 
struct  session_dgram_pre_hdr_
 
struct  session_dgram_header_
 

Macros

#define SESSION_INVALID_INDEX   ((u32)~0)
 
#define SESSION_INVALID_HANDLE   ((u64)~0)
 
#define SESSION_CTRL_MSG_MAX_SIZE   86
 
#define foreach_session_endpoint_fields
 
#define SESSION_IP46_ZERO
 
#define TRANSPORT_ENDPOINT_NULL
 
#define SESSION_ENDPOINT_NULL
 
#define SESSION_ENDPOINT_CFG_NULL
 
#define session_endpoint_to_transport(_sep)   ((transport_endpoint_t *)_sep)
 
#define session_endpoint_to_transport_cfg(_sep)   ((transport_endpoint_cfg_t *)_sep)
 
#define foreach_session_state
 
#define foreach_session_flag
 
#define foreach_session_ctrl_evt
 
#define FIFO_EVENT_APP_RX   SESSION_IO_EVT_RX
 
#define FIFO_EVENT_APP_TX   SESSION_IO_EVT_TX
 
#define FIFO_EVENT_DISCONNECT   SESSION_CTRL_EVT_CLOSE
 
#define FIFO_EVENT_BUILTIN_RX   SESSION_IO_EVT_BUILTIN_RX
 
#define FIFO_EVENT_BUILTIN_TX   SESSION_IO_EVT_BUILTIN_TX
 
#define SESSION_MSG_NULL   { }
 
#define SESSION_CONN_ID_LEN   37
 
#define SESSION_CONN_HDR_LEN   45
 
#define foreach_session_error
 
#define SESSION_ERROR_SEG_CREATE   SESSION_E_SEG_CREATE
 
#define SESSION_ERROR_NO_SPACE   SESSION_E_SEG_NO_SPACE
 
#define SESSION_ERROR_NEW_SEG_NO_SPACE   SESSION_E_SEG_NO_SPACE2
 

Typedefs

typedef struct _session_endpoint session_endpoint_t
 
typedef struct _session_endpoint_cfg session_endpoint_cfg_t
 
typedef u8 session_type_t
 
typedef u64 session_handle_t
 
typedef enum session_ft_action_ session_ft_action_t
 
typedef enum session_flags_bits_ session_flag_bits_t
 
typedef enum session_flags_ session_flags_t
 
typedef struct session_ session_t
 
typedef struct session_dgram_pre_hdr_ session_dgram_pre_hdr_t
 
typedef struct session_dgram_header_ session_dgram_hdr_t
 
typedef enum session_error_p_ session_error_p_t
 
typedef enum session_error_ session_error_t
 

Enumerations

enum  session_cleanup_ntf_t { SESSION_CLEANUP_TRANSPORT, SESSION_CLEANUP_SESSION }
 
enum  session_ft_action_ { SESSION_FT_ACTION_ENQUEUED, SESSION_FT_ACTION_DEQUEUED, SESSION_FT_ACTION_N_ACTIONS }
 
enum  session_state_t { SESSION_N_STATES }
 
enum  session_flags_bits_ { SESSION_N_FLAGS }
 
enum  session_flags_ { foreach_session_flag }
 
enum  session_evt_type_t {
  SESSION_IO_EVT_RX, SESSION_IO_EVT_TX, SESSION_IO_EVT_TX_FLUSH, SESSION_IO_EVT_BUILTIN_RX,
  SESSION_IO_EVT_BUILTIN_TX, SESSION_CTRL_EVT_RPC, SESSION_CTRL_EVT_CLOSE, SESSION_CTRL_EVT_RESET,
  SESSION_CTRL_EVT_BOUND, SESSION_CTRL_EVT_UNLISTEN_REPLY, SESSION_CTRL_EVT_ACCEPTED, SESSION_CTRL_EVT_ACCEPTED_REPLY,
  SESSION_CTRL_EVT_CONNECTED, SESSION_CTRL_EVT_DISCONNECTED, SESSION_CTRL_EVT_DISCONNECTED_REPLY, SESSION_CTRL_EVT_RESET_REPLY,
  SESSION_CTRL_EVT_REQ_WORKER_UPDATE, SESSION_CTRL_EVT_WORKER_UPDATE, SESSION_CTRL_EVT_WORKER_UPDATE_REPLY, SESSION_CTRL_EVT_DISCONNECT,
  SESSION_CTRL_EVT_CONNECT, SESSION_CTRL_EVT_CONNECT_URI, SESSION_CTRL_EVT_LISTEN, SESSION_CTRL_EVT_LISTEN_URI,
  SESSION_CTRL_EVT_UNLISTEN, SESSION_CTRL_EVT_APP_DETACH, SESSION_CTRL_EVT_APP_ADD_SEGMENT, SESSION_CTRL_EVT_APP_DEL_SEGMENT,
  SESSION_CTRL_EVT_MIGRATED, SESSION_CTRL_EVT_CLEANUP
}
 
enum  session_mq_rings_e { SESSION_MQ_IO_EVT_RING, SESSION_MQ_CTRL_EVT_RING, SESSION_MQ_N_RINGS }
 
enum  session_error_p_ { SESSION_N_ERRORS }
 
enum  session_error_ { foreach_session_error }
 

Functions

static u8 session_endpoint_fib_proto (session_endpoint_t *sep)
 
static u8 session_endpoint_is_local (session_endpoint_t *sep)
 
static u8 session_endpoint_is_zero (session_endpoint_t *sep)
 
static session_type_t session_type_from_proto_and_ip (transport_proto_t proto, u8 is_ip4)
 
static transport_proto_t session_type_transport_proto (session_type_t st)
 
static u8 session_type_is_ip4 (session_type_t st)
 
static transport_proto_t session_get_transport_proto (session_t *s)
 
static fib_protocol_t session_get_fib_proto (session_t *s)
 
static u8 session_has_transport (session_t *s)
 
static transport_service_type_t session_transport_service_type (session_t *s)
 
static transport_tx_fn_type_t session_transport_tx_fn_type (session_t *s)
 
static u8 session_tx_is_dgram (session_t *s)
 
static session_handle_t session_handle (session_t *s)
 
static u32 session_index_from_handle (session_handle_t handle)
 
static u32 session_thread_from_handle (session_handle_t handle)
 
static void session_parse_handle (session_handle_t handle, u32 *index, u32 *thread_index)
 
static session_handle_t session_make_handle (u32 session_index, u32 data)
 
static u32 session_handle_index (session_handle_t ho_handle)
 
static u32 session_handle_data (session_handle_t ho_handle)
 
 STATIC_ASSERT (sizeof(session_dgram_hdr_t)==(SESSION_CONN_ID_LEN+8), "session conn id wrong length")
 

Macro Definition Documentation

◆ FIFO_EVENT_APP_RX

#define FIFO_EVENT_APP_RX   SESSION_IO_EVT_RX

Definition at line 388 of file session_types.h.

◆ FIFO_EVENT_APP_TX

#define FIFO_EVENT_APP_TX   SESSION_IO_EVT_TX

Definition at line 389 of file session_types.h.

◆ FIFO_EVENT_BUILTIN_RX

#define FIFO_EVENT_BUILTIN_RX   SESSION_IO_EVT_BUILTIN_RX

Definition at line 391 of file session_types.h.

◆ FIFO_EVENT_BUILTIN_TX

#define FIFO_EVENT_BUILTIN_TX   SESSION_IO_EVT_BUILTIN_TX

Definition at line 392 of file session_types.h.

◆ FIFO_EVENT_DISCONNECT

#define FIFO_EVENT_DISCONNECT   SESSION_CTRL_EVT_CLOSE

Definition at line 390 of file session_types.h.

◆ foreach_session_ctrl_evt

#define foreach_session_ctrl_evt
Value:
_(LISTEN, listen) \
_(LISTEN_URI, listen_uri) \
_(BOUND, bound) \
_(UNLISTEN, unlisten) \
_(UNLISTEN_REPLY, unlisten_reply) \
_(ACCEPTED, accepted) \
_(ACCEPTED_REPLY, accepted_reply) \
_(CONNECT, connect) \
_(CONNECT_URI, connect_uri) \
_(CONNECTED, connected) \
_(DISCONNECT, disconnect) \
_(DISCONNECTED, disconnected) \
_(DISCONNECTED_REPLY, disconnected_reply) \
_(RESET_REPLY, reset_reply) \
_(REQ_WORKER_UPDATE, req_worker_update) \
_(WORKER_UPDATE, worker_update) \
_(WORKER_UPDATE_REPLY, worker_update_reply) \
_(APP_DETACH, app_detach) \
_(APP_ADD_SEGMENT, app_add_segment) \
_(APP_DEL_SEGMENT, app_del_segment) \
_(MIGRATED, migrated) \
_(CLEANUP, cleanup) \
static void cleanup(void)
Definition: client.c:120

Definition at line 363 of file session_types.h.

◆ foreach_session_endpoint_fields

#define foreach_session_endpoint_fields
Value:
foreach_transport_endpoint_cfg_fields \
transport_proto
Definition: session.api:22
unsigned char u8
Definition: types.h:56

Definition at line 26 of file session_types.h.

◆ foreach_session_error

#define foreach_session_error
Value:
_(NONE, "no error") \
_(UNKNOWN, "generic/unknown error") \
_(REFUSED, "refused") \
_(TIMEDOUT, "timedout") \
_(ALLOC, "obj/memory allocation error") \
_(OWNER, "object not owned by application") \
_(NOROUTE, "no route") \
_(NOINTF, "no resolving interface") \
_(NOIP, "no ip for lcl interface") \
_(NOPORT, "no lcl port") \
_(NOSUPPORT, "not supported") \
_(NOLISTEN, "not listening") \
_(NOSESSION, "session does not exist") \
_(NOAPP, "app not attached") \
_(PORTINUSE, "lcl port in use") \
_(IPINUSE, "ip in use") \
_(ALREADY_LISTENING, "ip port pair already listened on") \
_(INVALID_RMT_IP, "invalid remote ip") \
_(INVALID_APPWRK, "invalid app worker") \
_(INVALID_NS, "invalid namespace") \
_(SEG_NO_SPACE, "Couldn't allocate a fifo pair") \
_(SEG_NO_SPACE2, "Created segment, couldn't allocate a fifo pair") \
_(SEG_CREATE, "Couldn't create a new segment") \
_(FILTERED, "session filtered") \
_(SCOPE, "scope not supported") \
_(BAPI_NO_FD, "bapi doesn't have a socket fd") \
_(BAPI_SEND_FD, "couldn't send fd over bapi socket fd") \
_(BAPI_NO_REG, "app bapi registration not found") \
_(MQ_MSG_ALLOC, "failed to alloc mq msg") \
_(TLS_HANDSHAKE, "failed tls handshake") \

Definition at line 449 of file session_types.h.

◆ foreach_session_flag

#define foreach_session_flag
Value:
_(RX_EVT, "rx-event") \
_(PROXY, "proxy") \
_(CUSTOM_TX, "custom-tx") \
_(IS_MIGRATING, "migrating") \
_(UNIDIRECTIONAL, "unidirectional") \
_(CUSTOM_FIFO_TUNING, "custom-fifo-tuning") \

Definition at line 158 of file session_types.h.

◆ foreach_session_state

#define foreach_session_state
Value:
_(CREATED, "created") \
_(LISTENING, "listening") \
_(CONNECTING, "connecting") \
_(ACCEPTING, "accepting") \
_(READY, "ready") \
_(OPENED, "opened") \
_(TRANSPORT_CLOSING, "transport-closing") \
_(CLOSING, "closing") \
_(APP_CLOSED, "app-closed") \
_(TRANSPORT_CLOSED, "transport-closed") \
_(CLOSED, "closed") \
_(TRANSPORT_DELETED, "transport-deleted") \

Definition at line 136 of file session_types.h.

◆ SESSION_CONN_HDR_LEN

#define SESSION_CONN_HDR_LEN   45

Definition at line 444 of file session_types.h.

◆ SESSION_CONN_ID_LEN

#define SESSION_CONN_ID_LEN   37

Definition at line 443 of file session_types.h.

◆ SESSION_CTRL_MSG_MAX_SIZE

#define SESSION_CTRL_MSG_MAX_SIZE   86

Definition at line 24 of file session_types.h.

◆ SESSION_ENDPOINT_CFG_NULL

#define SESSION_ENDPOINT_CFG_NULL
Value:
{ \
.sw_if_index = ENDPOINT_INVALID_INDEX, \
.fib_index = ENDPOINT_INVALID_INDEX, \
.is_ip4 = 0, \
.port = 0, \
.transport_proto = 0, \
.app_wrk_index = ENDPOINT_INVALID_INDEX, \
.hostname = 0, \
.parent_handle = SESSION_INVALID_HANDLE, \
.ckpair_index = 0 \
}
#define ENDPOINT_INVALID_INDEX
#define SESSION_INVALID_HANDLE
Definition: session_types.h:23
#define SESSION_IP46_ZERO
Definition: session_types.h:53
#define TRANSPORT_ENDPOINT_NULL
Definition: session_types.h:60

Definition at line 78 of file session_types.h.

◆ SESSION_ENDPOINT_NULL

#define SESSION_ENDPOINT_NULL
Value:
{ \
.sw_if_index = ENDPOINT_INVALID_INDEX, \
.fib_index = ENDPOINT_INVALID_INDEX, \
.is_ip4 = 0, \
.port = 0, \
.transport_proto = 0, \
}
#define ENDPOINT_INVALID_INDEX
#define SESSION_IP46_ZERO
Definition: session_types.h:53
#define TRANSPORT_ENDPOINT_NULL
Definition: session_types.h:60

Definition at line 68 of file session_types.h.

◆ session_endpoint_to_transport

#define session_endpoint_to_transport (   _sep)    ((transport_endpoint_t *)_sep)

Definition at line 94 of file session_types.h.

◆ session_endpoint_to_transport_cfg

#define session_endpoint_to_transport_cfg (   _sep)    ((transport_endpoint_cfg_t *)_sep)

Definition at line 95 of file session_types.h.

◆ SESSION_ERROR_NEW_SEG_NO_SPACE

#define SESSION_ERROR_NEW_SEG_NO_SPACE   SESSION_E_SEG_NO_SPACE2

Definition at line 499 of file session_types.h.

◆ SESSION_ERROR_NO_SPACE

#define SESSION_ERROR_NO_SPACE   SESSION_E_SEG_NO_SPACE

Definition at line 498 of file session_types.h.

◆ SESSION_ERROR_SEG_CREATE

#define SESSION_ERROR_SEG_CREATE   SESSION_E_SEG_CREATE

Definition at line 497 of file session_types.h.

◆ SESSION_INVALID_HANDLE

#define SESSION_INVALID_HANDLE   ((u64)~0)

Definition at line 23 of file session_types.h.

◆ SESSION_INVALID_INDEX

#define SESSION_INVALID_INDEX   ((u32)~0)

Definition at line 22 of file session_types.h.

◆ SESSION_IP46_ZERO

#define SESSION_IP46_ZERO
Value:
{ \
.ip6 = { \
{ 0, 0, }, \
}, \
}

Definition at line 53 of file session_types.h.

◆ SESSION_MSG_NULL

#define SESSION_MSG_NULL   { }

Definition at line 424 of file session_types.h.

◆ TRANSPORT_ENDPOINT_NULL

#define TRANSPORT_ENDPOINT_NULL
Value:
{ \
.sw_if_index = ENDPOINT_INVALID_INDEX, \
.fib_index = ENDPOINT_INVALID_INDEX, \
.is_ip4 = 0, \
.port = 0, \
}
#define ENDPOINT_INVALID_INDEX
#define SESSION_IP46_ZERO
Definition: session_types.h:53

Definition at line 60 of file session_types.h.

Typedef Documentation

◆ session_dgram_hdr_t

◆ session_dgram_pre_hdr_t

◆ session_endpoint_cfg_t

typedef struct _session_endpoint_cfg session_endpoint_cfg_t

◆ session_endpoint_t

typedef struct _session_endpoint session_endpoint_t

◆ session_error_p_t

◆ session_error_t

◆ session_flag_bits_t

◆ session_flags_t

◆ session_ft_action_t

◆ session_handle_t

Definition at line 118 of file session_types.h.

◆ session_t

typedef struct session_ session_t

◆ session_type_t

typedef u8 session_type_t

Definition at line 117 of file session_types.h.

Enumeration Type Documentation

◆ session_cleanup_ntf_t

Enumerator
SESSION_CLEANUP_TRANSPORT 
SESSION_CLEANUP_SESSION 

Definition at line 120 of file session_types.h.

◆ session_error_

Enumerator
foreach_session_error 

Definition at line 489 of file session_types.h.

◆ session_error_p_

Enumerator
SESSION_N_ERRORS 

Definition at line 481 of file session_types.h.

◆ session_evt_type_t

Enumerator
SESSION_IO_EVT_RX 
SESSION_IO_EVT_TX 
SESSION_IO_EVT_TX_FLUSH 
SESSION_IO_EVT_BUILTIN_RX 
SESSION_IO_EVT_BUILTIN_TX 
SESSION_CTRL_EVT_RPC 
SESSION_CTRL_EVT_CLOSE 
SESSION_CTRL_EVT_RESET 
SESSION_CTRL_EVT_BOUND 
SESSION_CTRL_EVT_UNLISTEN_REPLY 
SESSION_CTRL_EVT_ACCEPTED 
SESSION_CTRL_EVT_ACCEPTED_REPLY 
SESSION_CTRL_EVT_CONNECTED 
SESSION_CTRL_EVT_DISCONNECTED 
SESSION_CTRL_EVT_DISCONNECTED_REPLY 
SESSION_CTRL_EVT_RESET_REPLY 
SESSION_CTRL_EVT_REQ_WORKER_UPDATE 
SESSION_CTRL_EVT_WORKER_UPDATE 
SESSION_CTRL_EVT_WORKER_UPDATE_REPLY 
SESSION_CTRL_EVT_DISCONNECT 
SESSION_CTRL_EVT_CONNECT 
SESSION_CTRL_EVT_CONNECT_URI 
SESSION_CTRL_EVT_LISTEN 
SESSION_CTRL_EVT_LISTEN_URI 
SESSION_CTRL_EVT_UNLISTEN 
SESSION_CTRL_EVT_APP_DETACH 
SESSION_CTRL_EVT_APP_ADD_SEGMENT 
SESSION_CTRL_EVT_APP_DEL_SEGMENT 
SESSION_CTRL_EVT_MIGRATED 
SESSION_CTRL_EVT_CLEANUP 

Definition at line 329 of file session_types.h.

◆ session_flags_

Enumerator
foreach_session_flag 

Definition at line 174 of file session_types.h.

◆ session_flags_bits_

Enumerator
SESSION_N_FLAGS 

Definition at line 166 of file session_types.h.

◆ session_ft_action_

Enumerator
SESSION_FT_ACTION_ENQUEUED 
SESSION_FT_ACTION_DEQUEUED 
SESSION_FT_ACTION_N_ACTIONS 

Definition at line 126 of file session_types.h.

◆ session_mq_rings_e

Enumerator
SESSION_MQ_IO_EVT_RING 
SESSION_MQ_CTRL_EVT_RING 
SESSION_MQ_N_RINGS 

Definition at line 394 of file session_types.h.

◆ session_state_t

Enumerator
SESSION_N_STATES 

Definition at line 150 of file session_types.h.

Function Documentation

◆ session_endpoint_fib_proto()

static u8 session_endpoint_fib_proto ( session_endpoint_t sep)
inlinestatic

Definition at line 99 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_endpoint_is_local()

static u8 session_endpoint_is_local ( session_endpoint_t sep)
inlinestatic

Definition at line 105 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_endpoint_is_zero()

static u8 session_endpoint_is_zero ( session_endpoint_t sep)
inlinestatic

Definition at line 112 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_get_fib_proto()

static fib_protocol_t session_get_fib_proto ( session_t s)
inlinestatic

Definition at line 251 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_get_transport_proto()

static transport_proto_t session_get_transport_proto ( session_t s)
inlinestatic

Definition at line 245 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_handle()

static session_handle_t session_handle ( session_t s)
inlinestatic

Definition at line 286 of file session_types.h.

◆ session_handle_data()

static u32 session_handle_data ( session_handle_t  ho_handle)
inlinestatic

Definition at line 324 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_handle_index()

static u32 session_handle_index ( session_handle_t  ho_handle)
inlinestatic

Definition at line 318 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_has_transport()

static u8 session_has_transport ( session_t s)
inlinestatic

Definition at line 258 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_index_from_handle()

static u32 session_index_from_handle ( session_handle_t  handle)
inlinestatic

Definition at line 292 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_make_handle()

static session_handle_t session_make_handle ( u32  session_index,
u32  data 
)
inlinestatic

Definition at line 312 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_parse_handle()

static void session_parse_handle ( session_handle_t  handle,
u32 index,
u32 thread_index 
)
inlinestatic

Definition at line 304 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_thread_from_handle()

static u32 session_thread_from_handle ( session_handle_t  handle)
inlinestatic

Definition at line 298 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_transport_service_type()

static transport_service_type_t session_transport_service_type ( session_t s)
inlinestatic

Definition at line 264 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_transport_tx_fn_type()

static transport_tx_fn_type_t session_transport_tx_fn_type ( session_t s)
inlinestatic

Definition at line 272 of file session_types.h.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ session_tx_is_dgram()

static u8 session_tx_is_dgram ( session_t s)
inlinestatic

Definition at line 280 of file session_types.h.

+ Here is the call graph for this function:

◆ session_type_from_proto_and_ip()

static session_type_t session_type_from_proto_and_ip ( transport_proto_t  proto,
u8  is_ip4 
)
inlinestatic

Definition at line 227 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_type_is_ip4()

static u8 session_type_is_ip4 ( session_type_t  st)
inlinestatic

Definition at line 239 of file session_types.h.

+ Here is the caller graph for this function:

◆ session_type_transport_proto()

static transport_proto_t session_type_transport_proto ( session_type_t  st)
inlinestatic

Definition at line 233 of file session_types.h.

+ Here is the caller graph for this function:

◆ STATIC_ASSERT()

STATIC_ASSERT ( sizeof(session_dgram_hdr_t = =(SESSION_CONN_ID_LEN+8),
"session conn id wrong length"   
)