FD.io VPP  v21.10.1-2-g0a485f517
Vector Packet Processing
application.c File Reference
+ Include dependency graph for application.c:

Go to the source code of this file.

Macros

#define app_interface_check_thread_and_barrier(_fn, _arg)
 

Functions

static app_listener_tapp_listener_alloc (application_t *app)
 
app_listener_tapp_listener_get (application_t *app, u32 app_listener_index)
 
static void app_listener_free (application_t *app, app_listener_t *app_listener)
 
session_handle_t app_listener_handle (app_listener_t *al)
 
app_listener_tapp_listener_get_w_session (session_t *ls)
 
session_handle_t app_listen_session_handle (session_t *ls)
 Get app listener handle for listening session. More...
 
app_listener_tapp_listener_get_w_handle (session_handle_t handle)
 Get app listener for listener session handle. More...
 
app_listener_tapp_listener_lookup (application_t *app, session_endpoint_cfg_t *sep_ext)
 
int app_listener_alloc_and_init (application_t *app, session_endpoint_cfg_t *sep, app_listener_t **listener)
 
void app_listener_cleanup (app_listener_t *al)
 
static app_worker_tapp_listener_select_worker (application_t *app, app_listener_t *al)
 
session_tapp_listener_get_session (app_listener_t *al)
 
session_tapp_listener_get_local_session (app_listener_t *al)
 
static app_worker_map_tapp_worker_map_alloc (application_t *app)
 
static u32 app_worker_map_index (application_t *app, app_worker_map_t *map)
 
static void app_worker_map_free (application_t *app, app_worker_map_t *map)
 
static app_worker_map_tapp_worker_map_get (application_t *app, u32 map_index)
 
static const u8app_get_name (application_t *app)
 
u32 application_session_table (application_t *app, u8 fib_proto)
 
u32 application_local_session_table (application_t *app)
 
const u8application_name_from_index (u32 app_index)
 Returns app name for app-index. More...
 
static void application_api_table_add (u32 app_index, u32 api_client_index)
 
static void application_api_table_del (u32 api_client_index)
 
static void application_name_table_add (application_t *app)
 
static void application_name_table_del (application_t *app)
 
application_tapplication_lookup (u32 api_client_index)
 
application_tapplication_lookup_name (const u8 *name)
 
void appsl_pending_rx_mqs_add_tail (appsl_wrk_t *aw, app_rx_mq_elt_t *elt)
 
void appsl_pending_rx_mqs_del (appsl_wrk_t *aw, app_rx_mq_elt_t *elt)
 
 if (!elt) return 0
 
 appsl_pending_rx_mqs_del (aw, elt)
 
 if (!svm_msg_q_is_empty(elt->mq))
 
 while (aw->pending_rx_mqs &&elt !=aw->pending_rx_mqs)
 
 if (aw->pending_rx_mqs) vlib_node_set_interrupt_pending(vm
 
 if (n_msgs &&wrk->state==SESSION_WRK_INTERRUPT) vlib_node_set_interrupt_pending(vm
 
static clib_error_tapp_rx_mq_fd_read_ready (clib_file_t *cf)
 
static clib_error_tapp_rx_mq_fd_write_ready (clib_file_t *cf)
 
static void app_rx_mqs_epoll_add (application_t *app, app_rx_mq_elt_t *mqe)
 
static void app_rx_mqs_epoll_del (application_t *app, app_rx_mq_elt_t *mqe)
 
svm_msg_q_tapplication_rx_mq_get (application_t *app, u32 mq_index)
 
static int app_rx_mqs_alloc (application_t *app)
 
u8 application_use_private_rx_mqs (void)
 
fifo_segment_tapplication_get_rx_mqs_segment (application_t *app)
 
void application_enable_rx_mqs_nodes (u8 is_en)
 
static application_tapplication_alloc (void)
 
application_tapplication_get (u32 app_index)
 
application_tapplication_get_if_valid (u32 app_index)
 
static void application_verify_cb_fns (session_cb_vft_t *cb_fns)
 
static u8 application_verify_cfg (ssvm_segment_type_t st)
 Check app config for given segment type. More...
 
static int application_alloc_and_init (app_init_args_t *a)
 
static void application_free (application_t *app)
 
static void application_detach_process (application_t *app, u32 api_client_index)
 
void application_namespace_cleanup (app_namespace_t *app_ns)
 
app_worker_tapplication_get_worker (application_t *app, u32 wrk_map_index)
 
app_worker_tapplication_get_default_worker (application_t *app)
 
u32 application_n_workers (application_t *app)
 
app_worker_tapplication_listener_select_worker (session_t *ls)
 
int application_alloc_worker_and_init (application_t *app, app_worker_t **wrk)
 
int vnet_app_worker_add_del (vnet_app_worker_add_del_args_t *a)
 
static int app_validate_namespace (u8 *namespace_id, u64 secret, u32 *app_ns_index)
 
static u8app_name_from_api_index (u32 api_client_index)
 
int vnet_application_attach (vnet_app_attach_args_t *a)
 Attach application to vpp. More...
 
int vnet_application_detach (vnet_app_detach_args_t *a)
 Detach application from vpp. More...
 
static u8 session_endpoint_in_ns (session_endpoint_t *sep)
 
static void session_endpoint_update_for_app (session_endpoint_cfg_t *sep, application_t *app, u8 is_connect)
 
int vnet_listen (vnet_listen_args_t *a)
 
int vnet_connect (vnet_connect_args_t *a)
 
int vnet_unlisten (vnet_unlisten_args_t *a)
 
int vnet_shutdown_session (vnet_shutdown_args_t *a)
 
int vnet_disconnect_session (vnet_disconnect_args_t *a)
 
int application_change_listener_owner (session_t *s, app_worker_t *app_wrk)
 
int application_is_proxy (application_t *app)
 
int application_is_builtin (application_t *app)
 
int application_is_builtin_proxy (application_t *app)
 
u8 application_has_local_scope (application_t *app)
 
u8 application_has_global_scope (application_t *app)
 
static clib_error_tapplication_start_stop_proxy_fib_proto (application_t *app, u8 fib_proto, u8 transport_proto, u8 is_start)
 
static void application_start_stop_proxy_local_scope (application_t *app, u8 transport_proto, u8 is_start)
 
void application_start_stop_proxy (application_t *app, transport_proto_t transport_proto, u8 is_start)
 
void application_setup_proxy (application_t *app)
 
void application_remove_proxy (application_t *app)
 
segment_manager_props_tapplication_segment_manager_properties (application_t *app)
 
segment_manager_props_tapplication_get_segment_manager_properties (u32 app_index)
 
static void application_format_listeners (application_t *app, int verbose)
 
static void application_format_connects (application_t *app, int verbose)
 
u8format_cert_key_pair (u8 *s, va_list *args)
 
u8format_crypto_engine (u8 *s, va_list *args)
 
uword unformat_crypto_engine (unformat_input_t *input, va_list *args)
 
u8format_crypto_context (u8 *s, va_list *args)
 
u8format_application (u8 *s, va_list *args)
 
void application_format_all_listeners (vlib_main_t *vm, int verbose)
 
void application_format_all_clients (vlib_main_t *vm, int verbose)
 
static clib_error_tshow_certificate_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static void appliction_format_app_mq (vlib_main_t *vm, application_t *app)
 
static clib_error_tappliction_format_all_app_mq (vlib_main_t *vm)
 
static clib_error_tshow_app_command_fn (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static app_cert_key_pair_tapp_cert_key_pair_alloc ()
 
app_cert_key_pair_tapp_cert_key_pair_get_if_valid (u32 index)
 
app_cert_key_pair_tapp_cert_key_pair_get (u32 index)
 
app_cert_key_pair_tapp_cert_key_pair_get_default ()
 
int vnet_app_add_cert_key_pair (vnet_app_add_cert_key_pair_args_t *a)
 
int vnet_app_add_cert_key_interest (u32 index, u32 app_index)
 Ask for app cb on pair deletion. More...
 
int vnet_app_del_cert_key_pair (u32 index)
 
clib_error_tapplication_init (vlib_main_t *vm)
 
crypto_engine_type_t app_crypto_engine_type_add (void)
 
u8 app_crypto_engine_n_types (void)
 

Variables

static app_main_t app_main
 
vlib_node_registration_t appsl_rx_mqs_input_node
 (constructor) VLIB_REGISTER_NODE (appsl_rx_mqs_input_node) More...
 
vlib_main_tvm
 
vlib_main_t vlib_node_runtime_tnode
 
vlib_main_t vlib_node_runtime_t vlib_frame_tframe
 
app_rx_mq_elt_telt = aw->pending_rx_mqs
 
app_rx_mq_elt_tnext = elt->next
 
app_main_tam = &app_main
 
session_worker_twrk = session_main_get_worker (thread_index)
 
int __clib_unused rv
 
appsl_wrk_taw = &am->wrk[thread_index]
 
u64 buf
 
 do
 
 n_msgs = session_wrk_handle_mq (wrk, elt->mq)
 
 else
 
appsl_rx_mqs_input_node index
 
static vlib_cli_command_t show_app_command
 (constructor) VLIB_CLI_COMMAND (show_app_command) More...
 
static vlib_cli_command_t show_certificate_command
 (constructor) VLIB_CLI_COMMAND (show_certificate_command) More...
 

Macro Definition Documentation

◆ app_interface_check_thread_and_barrier

#define app_interface_check_thread_and_barrier (   _fn,
  _arg 
)
Value:
{ \
vlib_rpc_call_main_thread (_fn, (u8 *) _arg, sizeof(*_arg)); \
return 0; \
}

Definition at line 24 of file application.c.

Function Documentation

◆ app_cert_key_pair_alloc()

static app_cert_key_pair_t* app_cert_key_pair_alloc ( )
static

Definition at line 2006 of file application.c.

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

◆ app_cert_key_pair_get()

app_cert_key_pair_t* app_cert_key_pair_get ( u32  index)

Definition at line 2024 of file application.c.

+ Here is the caller graph for this function:

◆ app_cert_key_pair_get_default()

app_cert_key_pair_t* app_cert_key_pair_get_default ( )

Definition at line 2030 of file application.c.

+ Here is the call graph for this function:

◆ app_cert_key_pair_get_if_valid()

app_cert_key_pair_t* app_cert_key_pair_get_if_valid ( u32  index)

Definition at line 2016 of file application.c.

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

◆ app_crypto_engine_n_types()

u8 app_crypto_engine_n_types ( void  )

Definition at line 2125 of file application.c.

+ Here is the caller graph for this function:

◆ app_crypto_engine_type_add()

crypto_engine_type_t app_crypto_engine_type_add ( void  )

Definition at line 2119 of file application.c.

◆ app_get_name()

static const u8* app_get_name ( application_t app)
static

Definition at line 352 of file application.c.

+ Here is the caller graph for this function:

◆ app_listen_session_handle()

session_handle_t app_listen_session_handle ( session_t ls)

Get app listener handle for listening session.

For a given listening session, this can return either the session handle of the app listener associated to the listening session or, if no such app listener exists, the session's handle

Parameters
lslistening session
Returns
app listener or listening session handle

Definition at line 78 of file application.c.

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

◆ app_listener_alloc()

static app_listener_t* app_listener_alloc ( application_t app)
static

Definition at line 32 of file application.c.

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

◆ app_listener_alloc_and_init()

int app_listener_alloc_and_init ( application_t app,
session_endpoint_cfg_t sep,
app_listener_t **  listener 
)

Definition at line 156 of file application.c.

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

◆ app_listener_cleanup()

void app_listener_cleanup ( app_listener_t al)

Definition at line 264 of file application.c.

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

◆ app_listener_free()

static void app_listener_free ( application_t app,
app_listener_t app_listener 
)
static

Definition at line 52 of file application.c.

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

◆ app_listener_get()

app_listener_t* app_listener_get ( application_t app,
u32  app_listener_index 
)

Definition at line 46 of file application.c.

+ Here is the caller graph for this function:

◆ app_listener_get_local_session()

session_t* app_listener_get_local_session ( app_listener_t al)

Definition at line 315 of file application.c.

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

◆ app_listener_get_session()

session_t* app_listener_get_session ( app_listener_t al)

Definition at line 306 of file application.c.

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

◆ app_listener_get_w_handle()

app_listener_t* app_listener_get_w_handle ( session_handle_t  handle)

Get app listener for listener session handle.

Should only be called on handles that have an app listener, i.e., were obtained at the end of a vnet_listen call.

Parameters
handlehandle of the app listener. This is the handle of either the global or local listener
Returns
pointer to app listener or 0

Definition at line 88 of file application.c.

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

◆ app_listener_get_w_session()

app_listener_t* app_listener_get_w_session ( session_t ls)

Definition at line 67 of file application.c.

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

◆ app_listener_handle()

session_handle_t app_listener_handle ( app_listener_t al)

Definition at line 61 of file application.c.

+ Here is the caller graph for this function:

◆ app_listener_lookup()

app_listener_t* app_listener_lookup ( application_t app,
session_endpoint_cfg_t sep_ext 
)

Definition at line 98 of file application.c.

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

◆ app_listener_select_worker()

static app_worker_t* app_listener_select_worker ( application_t app,
app_listener_t al 
)
static

Definition at line 291 of file application.c.

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

◆ app_name_from_api_index()

static u8* app_name_from_api_index ( u32  api_client_index)
static

Definition at line 1122 of file application.c.

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

◆ app_rx_mq_fd_read_ready()

static clib_error_t* app_rx_mq_fd_read_ready ( clib_file_t cf)
static

Definition at line 539 of file application.c.

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

◆ app_rx_mq_fd_write_ready()

static clib_error_t* app_rx_mq_fd_write_ready ( clib_file_t cf)
static

Definition at line 567 of file application.c.

+ Here is the caller graph for this function:

◆ app_rx_mqs_alloc()

static int app_rx_mqs_alloc ( application_t app)
static

Definition at line 624 of file application.c.

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

◆ app_rx_mqs_epoll_add()

static void app_rx_mqs_epoll_add ( application_t app,
app_rx_mq_elt_t mqe 
)
static

Definition at line 574 of file application.c.

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

◆ app_rx_mqs_epoll_del()

static void app_rx_mqs_epoll_del ( application_t app,
app_rx_mq_elt_t mqe 
)
static

Definition at line 598 of file application.c.

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

◆ app_validate_namespace()

static int app_validate_namespace ( u8 namespace_id,
u64  secret,
u32 app_ns_index 
)
static

Definition at line 1100 of file application.c.

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

◆ app_worker_map_alloc()

static app_worker_map_t* app_worker_map_alloc ( application_t app)
static

Definition at line 323 of file application.c.

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

◆ app_worker_map_free()

static void app_worker_map_free ( application_t app,
app_worker_map_t map 
)
static

Definition at line 338 of file application.c.

+ Here is the caller graph for this function:

◆ app_worker_map_get()

static app_worker_map_t* app_worker_map_get ( application_t app,
u32  map_index 
)
static

Definition at line 344 of file application.c.

+ Here is the caller graph for this function:

◆ app_worker_map_index()

static u32 app_worker_map_index ( application_t app,
app_worker_map_t map 
)
static

Definition at line 332 of file application.c.

+ Here is the caller graph for this function:

◆ application_alloc()

static application_t* application_alloc ( void  )
static

Definition at line 700 of file application.c.

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

◆ application_alloc_and_init()

static int application_alloc_and_init ( app_init_args_t a)
static

Definition at line 767 of file application.c.

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

◆ application_alloc_worker_and_init()

int application_alloc_worker_and_init ( application_t app,
app_worker_t **  wrk 
)

Definition at line 1009 of file application.c.

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

◆ application_api_table_add()

static void application_api_table_add ( u32  app_index,
u32  api_client_index 
)
static

Definition at line 395 of file application.c.

+ Here is the caller graph for this function:

◆ application_api_table_del()

static void application_api_table_del ( u32  api_client_index)
static

Definition at line 402 of file application.c.

+ Here is the caller graph for this function:

◆ application_change_listener_owner()

int application_change_listener_owner ( session_t s,
app_worker_t app_wrk 
)

Definition at line 1460 of file application.c.

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

◆ application_detach_process()

static void application_detach_process ( application_t app,
u32  api_client_index 
)
static

Definition at line 907 of file application.c.

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

◆ application_enable_rx_mqs_nodes()

void application_enable_rx_mqs_nodes ( u8  is_en)

Definition at line 691 of file application.c.

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

◆ application_format_all_clients()

void application_format_all_clients ( vlib_main_t vm,
int  verbose 
)

Definition at line 1846 of file application.c.

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

◆ application_format_all_listeners()

void application_format_all_listeners ( vlib_main_t vm,
int  verbose 
)

Definition at line 1826 of file application.c.

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

◆ application_format_connects()

static void application_format_connects ( application_t app,
int  verbose 
)
static

Definition at line 1698 of file application.c.

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

◆ application_format_listeners()

static void application_format_listeners ( application_t app,
int  verbose 
)
static

Definition at line 1669 of file application.c.

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

◆ application_free()

static void application_free ( application_t app)
static

Definition at line 857 of file application.c.

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

◆ application_get()

application_t* application_get ( u32  app_index)

Definition at line 710 of file application.c.

◆ application_get_default_worker()

app_worker_t* application_get_default_worker ( application_t app)

Definition at line 986 of file application.c.

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

◆ application_get_if_valid()

application_t* application_get_if_valid ( u32  app_index)

Definition at line 718 of file application.c.

+ Here is the caller graph for this function:

◆ application_get_rx_mqs_segment()

fifo_segment_t* application_get_rx_mqs_segment ( application_t app)

Definition at line 683 of file application.c.

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

◆ application_get_segment_manager_properties()

segment_manager_props_t* application_get_segment_manager_properties ( u32  app_index)

Definition at line 1662 of file application.c.

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

◆ application_get_worker()

app_worker_t* application_get_worker ( application_t app,
u32  wrk_map_index 
)

Definition at line 976 of file application.c.

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

◆ application_has_global_scope()

u8 application_has_global_scope ( application_t app)

Definition at line 1518 of file application.c.

+ Here is the caller graph for this function:

◆ application_has_local_scope()

u8 application_has_local_scope ( application_t app)

Definition at line 1512 of file application.c.

+ Here is the caller graph for this function:

◆ application_init()

clib_error_t* application_init ( vlib_main_t vm)

Definition at line 2083 of file application.c.

+ Here is the call graph for this function:

◆ application_is_builtin()

int application_is_builtin ( application_t app)

Definition at line 1500 of file application.c.

+ Here is the caller graph for this function:

◆ application_is_builtin_proxy()

int application_is_builtin_proxy ( application_t app)

Definition at line 1506 of file application.c.

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

◆ application_is_proxy()

int application_is_proxy ( application_t app)

Definition at line 1494 of file application.c.

+ Here is the caller graph for this function:

◆ application_listener_select_worker()

app_worker_t* application_listener_select_worker ( session_t ls)

Definition at line 998 of file application.c.

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

◆ application_local_session_table()

u32 application_local_session_table ( application_t app)

Definition at line 373 of file application.c.

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

◆ application_lookup()

application_t* application_lookup ( u32  api_client_index)

Definition at line 420 of file application.c.

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

◆ application_lookup_name()

application_t* application_lookup_name ( const u8 name)

Definition at line 431 of file application.c.

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

◆ application_n_workers()

u32 application_n_workers ( application_t app)

Definition at line 992 of file application.c.

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

◆ application_name_from_index()

const u8* application_name_from_index ( u32  app_index)

Returns app name for app-index.

Definition at line 386 of file application.c.

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

◆ application_name_table_add()

static void application_name_table_add ( application_t app)
static

Definition at line 408 of file application.c.

+ Here is the caller graph for this function:

◆ application_name_table_del()

static void application_name_table_del ( application_t app)
static

Definition at line 414 of file application.c.

+ Here is the caller graph for this function:

◆ application_namespace_cleanup()

void application_namespace_cleanup ( app_namespace_t app_ns)

Definition at line 951 of file application.c.

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

◆ application_remove_proxy()

void application_remove_proxy ( application_t app)

Definition at line 1644 of file application.c.

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

◆ application_rx_mq_get()

svm_msg_q_t* application_rx_mq_get ( application_t app,
u32  mq_index 
)

Definition at line 615 of file application.c.

+ Here is the caller graph for this function:

◆ application_segment_manager_properties()

segment_manager_props_t* application_segment_manager_properties ( application_t app)

Definition at line 1656 of file application.c.

+ Here is the caller graph for this function:

◆ application_session_table()

u32 application_session_table ( application_t app,
u8  fib_proto 
)

Definition at line 358 of file application.c.

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

◆ application_setup_proxy()

void application_setup_proxy ( application_t app)

Definition at line 1632 of file application.c.

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

◆ application_start_stop_proxy()

void application_start_stop_proxy ( application_t app,
transport_proto_t  transport_proto,
u8  is_start 
)

Definition at line 1616 of file application.c.

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

◆ application_start_stop_proxy_fib_proto()

static clib_error_t* application_start_stop_proxy_fib_proto ( application_t app,
u8  fib_proto,
u8  transport_proto,
u8  is_start 
)
static

Definition at line 1524 of file application.c.

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

◆ application_start_stop_proxy_local_scope()

static void application_start_stop_proxy_local_scope ( application_t app,
u8  transport_proto,
u8  is_start 
)
static

Definition at line 1589 of file application.c.

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

◆ application_use_private_rx_mqs()

u8 application_use_private_rx_mqs ( void  )

Definition at line 677 of file application.c.

+ Here is the caller graph for this function:

◆ application_verify_cb_fns()

static void application_verify_cb_fns ( session_cb_vft_t cb_fns)
static

Definition at line 727 of file application.c.

+ Here is the caller graph for this function:

◆ application_verify_cfg()

static u8 application_verify_cfg ( ssvm_segment_type_t  st)
static

Check app config for given segment type.

Returns 1 on success and 0 otherwise

Definition at line 745 of file application.c.

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

◆ appliction_format_all_app_mq()

static clib_error_t* appliction_format_all_app_mq ( vlib_main_t vm)
static

Definition at line 1902 of file application.c.

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

◆ appliction_format_app_mq()

static void appliction_format_app_mq ( vlib_main_t vm,
application_t app 
)
inlinestatic

Definition at line 1881 of file application.c.

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

◆ appsl_pending_rx_mqs_add_tail()

void appsl_pending_rx_mqs_add_tail ( appsl_wrk_t aw,
app_rx_mq_elt_t elt 
)

Definition at line 442 of file application.c.

+ Here is the caller graph for this function:

◆ appsl_pending_rx_mqs_del() [1/2]

void appsl_pending_rx_mqs_del ( appsl_wrk_t aw,
app_rx_mq_elt_t elt 
)

Definition at line 465 of file application.c.

+ Here is the caller graph for this function:

◆ appsl_pending_rx_mqs_del() [2/2]

appsl_pending_rx_mqs_del ( aw  ,
elt   
)

◆ format_application()

u8* format_application ( u8 s,
va_list *  args 
)

Definition at line 1782 of file application.c.

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

◆ format_cert_key_pair()

u8* format_cert_key_pair ( u8 s,
va_list *  args 
)

Definition at line 1718 of file application.c.

+ Here is the caller graph for this function:

◆ format_crypto_context()

u8* format_crypto_context ( u8 s,
va_list *  args 
)

Definition at line 1772 of file application.c.

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

◆ format_crypto_engine()

u8* format_crypto_engine ( u8 s,
va_list *  args 
)

Definition at line 1733 of file application.c.

+ Here is the caller graph for this function:

◆ if() [1/4]

if ( elt)

◆ if() [2/4]

if ( svm_msg_q_is_emptyelt->mq)

Definition at line 510 of file application.c.

+ Here is the call graph for this function:

◆ if() [3/4]

if ( aw->  pending_rx_mqs)

◆ if() [4/4]

if ( n_msgs &&wrk->  state = SESSION_WRK_INTERRUPT)

◆ session_endpoint_in_ns()

static u8 session_endpoint_in_ns ( session_endpoint_t sep)
static

Definition at line 1234 of file application.c.

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

◆ session_endpoint_update_for_app()

static void session_endpoint_update_for_app ( session_endpoint_cfg_t sep,
application_t app,
u8  is_connect 
)
static

Definition at line 1249 of file application.c.

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

◆ show_app_command_fn()

static clib_error_t* show_app_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 1924 of file application.c.

+ Here is the call graph for this function:

◆ show_certificate_command_fn()

static clib_error_t* show_certificate_command_fn ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 1866 of file application.c.

+ Here is the call graph for this function:

◆ unformat_crypto_engine()

uword unformat_crypto_engine ( unformat_input_t input,
va_list *  args 
)

Definition at line 1755 of file application.c.

+ Here is the call graph for this function:

◆ vnet_app_add_cert_key_interest()

int vnet_app_add_cert_key_interest ( u32  index,
u32  app_index 
)

Ask for app cb on pair deletion.

Definition at line 2049 of file application.c.

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

◆ vnet_app_add_cert_key_pair()

int vnet_app_add_cert_key_pair ( vnet_app_add_cert_key_pair_args_t a)

Definition at line 2037 of file application.c.

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

◆ vnet_app_del_cert_key_pair()

int vnet_app_del_cert_key_pair ( u32  index)

Definition at line 2060 of file application.c.

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

◆ vnet_app_worker_add_del()

int vnet_app_worker_add_del ( vnet_app_worker_add_del_args_t a)

Definition at line 1048 of file application.c.

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

◆ vnet_application_attach()

int vnet_application_attach ( vnet_app_attach_args_t a)

Attach application to vpp.

Allocates a vpp app, i.e., a structure that keeps back pointers to external app and a segment manager for shared memory fifo based communication with the external app.

Definition at line 1142 of file application.c.

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

◆ vnet_application_detach()

int vnet_application_detach ( vnet_app_detach_args_t a)

Detach application from vpp.

Definition at line 1216 of file application.c.

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

◆ vnet_connect()

int vnet_connect ( vnet_connect_args_t a)

Definition at line 1348 of file application.c.

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

◆ vnet_disconnect_session()

int vnet_disconnect_session ( vnet_disconnect_args_t a)

Definition at line 1439 of file application.c.

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

◆ vnet_listen()

int vnet_listen ( vnet_listen_args_t a)

Definition at line 1294 of file application.c.

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

◆ vnet_shutdown_session()

int vnet_shutdown_session ( vnet_shutdown_args_t a)

Definition at line 1418 of file application.c.

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

◆ vnet_unlisten()

int vnet_unlisten ( vnet_unlisten_args_t a)

Definition at line 1387 of file application.c.

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

◆ while()

while ( aw->pending_rx_mqs &&elt = aw->pending_rx_mqs)

Variable Documentation

◆ am

Definition at line 489 of file application.c.

◆ app_main

app_main_t app_main
static

Definition at line 22 of file application.c.

◆ appsl_rx_mqs_input_node

vlib_node_registration_t appsl_rx_mqs_input_node
Initial value:
= {
.name = "appsl-rx-mqs-input",
.state = VLIB_NODE_STATE_DISABLED,
}

(constructor) VLIB_REGISTER_NODE (appsl_rx_mqs_input_node)

Definition at line 482 of file application.c.

◆ aw

aw = &am->wrk[thread_index]

Definition at line 492 of file application.c.

◆ buf

u64 buf

Definition at line 493 of file application.c.

◆ do

do
Initial value:
{
rv = read (svm_msg_q_get_eventfd (elt->mq), &buf, sizeof (buf))

Definition at line 503 of file application.c.

◆ else

else
Initial value:
{
elt->flags = 0

Definition at line 516 of file application.c.

◆ elt

elt = aw->pending_rx_mqs

Definition at line 488 of file application.c.

◆ frame

Initial value:

Definition at line 486 of file application.c.

◆ index

Definition at line 524 of file application.c.

◆ n_msgs

return n_msgs = session_wrk_handle_mq (wrk, elt->mq)

Definition at line 506 of file application.c.

◆ next

next = elt->next

Definition at line 488 of file application.c.

◆ node

Definition at line 485 of file application.c.

◆ rv

int __clib_unused rv

Definition at line 491 of file application.c.

◆ show_app_command

vlib_cli_command_t show_app_command
static
Initial value:
=
{
.path = "show app",
.short_help = "show app [app_id] [server|client] [mq] [verbose]",
.function = show_app_command_fn,
}

(constructor) VLIB_CLI_COMMAND (show_app_command)

Definition at line 2103 of file application.c.

◆ show_certificate_command

vlib_cli_command_t show_certificate_command
static
Initial value:
=
{
.path = "show app certificate",
.short_help = "list app certs and keys present in store",
}

(constructor) VLIB_CLI_COMMAND (show_certificate_command)

Definition at line 2110 of file application.c.

◆ vm

Definition at line 485 of file application.c.

◆ wrk

Definition at line 490 of file application.c.

thread_index
u32 thread_index
Definition: nat44_ei_hairpinning.c:495
VLIB_NODE_TYPE_INPUT
@ VLIB_NODE_TYPE_INPUT
Definition: node.h:76
app_rx_mq_elt_::flags
u8 flags
Definition: application.h:105
vm
vlib_main_t * vm
Definition: application.c:485
PREDICT_FALSE
#define PREDICT_FALSE(x)
Definition: clib.h:124
vlib_thread_is_main_w_barrier
static u8 vlib_thread_is_main_w_barrier(void)
Definition: threads.h:485
vlib_main_t::thread_index
u32 thread_index
Definition: main.h:215
n_msgs
n_msgs
Definition: application.c:506
show_app_command_fn
static clib_error_t * show_app_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: application.c:1924
buf
u64 buf
Definition: application.c:493
u32
unsigned int u32
Definition: types.h:88
elt
app_rx_mq_elt_t * elt
Definition: application.c:488
show_certificate_command_fn
static clib_error_t * show_certificate_command_fn(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: application.c:1866
u8
unsigned char u8
Definition: types.h:56
app_rx_mq_elt_::mq
svm_msg_q_t * mq
Definition: application.h:102
rv
int __clib_unused rv
Definition: application.c:491
APP_RX_MQ_F_POSTPONED
@ APP_RX_MQ_F_POSTPONED
Definition: application.h:95
svm_msg_q_get_eventfd
static int svm_msg_q_get_eventfd(svm_msg_q_t *mq)
Definition: message_queue.h:431