FD.io VPP  v19.08.3-2-gbabecb413
Vector Packet Processing
application.h File Reference
+ Include dependency graph for application.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  app_worker_
 
struct  app_worker_map_
 
struct  app_listener_
 
struct  application_
 
struct  app_main_
 
struct  app_init_args_
 

Macros

#define APP_DEBUG   0
 
#define APP_DBG(_fmt, _args...)
 
#define APP_INVALID_INDEX   ((u32)~0)
 
#define APP_NS_INVALID_INDEX   ((u32)~0)
 
#define APP_INVALID_SEGMENT_MANAGER_INDEX   ((u32) ~0)
 

Typedefs

typedef struct app_worker_ app_worker_t
 
typedef struct app_worker_map_ app_worker_map_t
 
typedef struct app_listener_ app_listener_t
 
typedef struct application_ application_t
 
typedef struct app_main_ app_main_t
 
typedef struct app_init_args_ app_init_args_t
 
typedef struct _vnet_app_worker_add_del_args vnet_app_worker_add_del_args_t
 

Functions

app_listener_tapp_listener_get (application_t *app, u32 al_index)
 
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 *app_listener)
 
session_handle_t app_listener_handle (app_listener_t *app_listener)
 
app_listener_tapp_listener_lookup (application_t *app, session_endpoint_cfg_t *sep)
 
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_get_w_session (session_t *ls)
 
session_tapp_listener_get_session (app_listener_t *al)
 
session_tapp_listener_get_local_session (app_listener_t *al)
 
application_tapplication_get (u32 index)
 
application_tapplication_get_if_valid (u32 index)
 
application_tapplication_lookup (u32 api_client_index)
 
application_tapplication_lookup_name (const u8 *name)
 
app_worker_tapplication_get_worker (application_t *app, u32 wrk_index)
 
app_worker_tapplication_get_default_worker (application_t *app)
 
app_worker_tapplication_listener_select_worker (session_t *ls)
 
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)
 
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_or_wrk)
 Returns app name for app-index. More...
 
u8 application_has_local_scope (application_t *app)
 
u8 application_has_global_scope (application_t *app)
 
void application_setup_proxy (application_t *app)
 
void application_remove_proxy (application_t *app)
 
segment_manager_props_tapplication_get_segment_manager_properties (u32 app_index)
 
segment_manager_props_tapplication_segment_manager_properties (application_t *app)
 
app_worker_tapp_worker_alloc (application_t *app)
 
int application_alloc_worker_and_init (application_t *app, app_worker_t **wrk)
 
app_worker_tapp_worker_get (u32 wrk_index)
 
app_worker_tapp_worker_get_if_valid (u32 wrk_index)
 
application_tapp_worker_get_app (u32 wrk_index)
 
int app_worker_own_session (app_worker_t *app_wrk, session_t *s)
 
void app_worker_free (app_worker_t *app_wrk)
 
int app_worker_connect_session (app_worker_t *app, session_endpoint_t *tep, u32 api_context)
 
int app_worker_start_listen (app_worker_t *app_wrk, app_listener_t *lstnr)
 
int app_worker_stop_listen (app_worker_t *app_wrk, app_listener_t *al)
 
int app_worker_init_accepted (session_t *s)
 
int app_worker_accept_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_init_connected (app_worker_t *app_wrk, session_t *s)
 
int app_worker_connect_notify (app_worker_t *app_wrk, session_t *s, u32 opaque)
 
int app_worker_close_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_transport_closed_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_reset_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_cleanup_notify (app_worker_t *app_wrk, session_t *s, session_cleanup_ntf_t ntf)
 
int app_worker_migrate_notify (app_worker_t *app_wrk, session_t *s, session_handle_t new_sh)
 
int app_worker_builtin_rx (app_worker_t *app_wrk, session_t *s)
 
int app_worker_builtin_tx (app_worker_t *app_wrk, session_t *s)
 
segment_manager_tapp_worker_get_listen_segment_manager (app_worker_t *, session_t *)
 
segment_manager_tapp_worker_get_connect_segment_manager (app_worker_t *)
 
segment_manager_tapp_worker_get_or_alloc_connect_segment_manager (app_worker_t *)
 
int app_worker_alloc_connects_segment_manager (app_worker_t *app)
 
int app_worker_add_segment_notify (app_worker_t *app_wrk, u64 segment_handle)
 Send an API message to the external app, to map new segment. More...
 
int app_worker_del_segment_notify (app_worker_t *app_wrk, u64 segment_handle)
 
u32 app_worker_n_listeners (app_worker_t *app)
 
session_tapp_worker_first_listener (app_worker_t *app, u8 fib_proto, u8 transport_proto)
 
int app_worker_send_event (app_worker_t *app, session_t *s, u8 evt)
 
int app_worker_lock_and_send_event (app_worker_t *app, session_t *s, u8 evt_type)
 Send event to application. More...
 
session_tapp_worker_proxy_listener (app_worker_t *app, u8 fib_proto, u8 transport_proto)
 
u8format_app_worker (u8 *s, va_list *args)
 
u8format_app_worker_listener (u8 *s, va_list *args)
 
void app_worker_format_connects (app_worker_t *app_wrk, int verbose)
 
int vnet_app_worker_add_del (vnet_app_worker_add_del_args_t *a)
 
uword unformat_application_proto (unformat_input_t *input, va_list *args)
 
int mq_send_session_bound_cb (u32 app_wrk_index, u32 api_context, session_handle_t handle, int rv)
 
int mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context, session_t *s, u8 is_fail)
 
void mq_send_unlisten_reply (app_worker_t *app_wrk, session_handle_t sh, u32 context, int rv)
 

Macro Definition Documentation

◆ APP_DBG

#define APP_DBG (   _fmt,
  _args... 
)

Definition at line 29 of file application.h.

◆ APP_DEBUG

#define APP_DEBUG   0

Definition at line 24 of file application.h.

◆ APP_INVALID_INDEX

#define APP_INVALID_INDEX   ((u32)~0)

Definition at line 167 of file application.h.

◆ APP_INVALID_SEGMENT_MANAGER_INDEX

#define APP_INVALID_SEGMENT_MANAGER_INDEX   ((u32) ~0)

Definition at line 169 of file application.h.

◆ APP_NS_INVALID_INDEX

#define APP_NS_INVALID_INDEX   ((u32)~0)

Definition at line 168 of file application.h.

Typedef Documentation

◆ app_init_args_t

◆ app_listener_t

typedef struct app_listener_ app_listener_t

◆ app_main_t

typedef struct app_main_ app_main_t

◆ app_worker_map_t

◆ app_worker_t

typedef struct app_worker_ app_worker_t

◆ application_t

typedef struct application_ application_t

◆ vnet_app_worker_add_del_args_t

typedef struct _vnet_app_worker_add_del_args vnet_app_worker_add_del_args_t

Function Documentation

◆ 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_and_init()

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

Definition at line 130 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 app_listener)

Definition at line 230 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  al_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 281 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 272 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 app_listener)

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 
)

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_worker_accept_notify()

int app_worker_accept_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 290 of file application_worker.c.

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

◆ app_worker_add_segment_notify()

int app_worker_add_segment_notify ( app_worker_t app_wrk,
u64  segment_handle 
)

Send an API message to the external app, to map new segment.

Definition at line 525 of file application_worker.c.

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

◆ app_worker_alloc()

app_worker_t* app_worker_alloc ( application_t app)

Definition at line 26 of file application_worker.c.

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

◆ app_worker_alloc_connects_segment_manager()

int app_worker_alloc_connects_segment_manager ( app_worker_t app)

Definition at line 435 of file application_worker.c.

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

◆ app_worker_builtin_rx()

int app_worker_builtin_rx ( app_worker_t app_wrk,
session_t s 
)

Definition at line 356 of file application_worker.c.

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

◆ app_worker_builtin_tx()

int app_worker_builtin_tx ( app_worker_t app_wrk,
session_t s 
)

Definition at line 364 of file application_worker.c.

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

◆ app_worker_cleanup_notify()

int app_worker_cleanup_notify ( app_worker_t app_wrk,
session_t s,
session_cleanup_ntf_t  ntf 
)

Definition at line 346 of file application_worker.c.

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

◆ app_worker_close_notify()

int app_worker_close_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 321 of file application_worker.c.

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

◆ app_worker_connect_notify()

int app_worker_connect_notify ( app_worker_t app_wrk,
session_t s,
u32  opaque 
)

Definition at line 313 of file application_worker.c.

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

◆ app_worker_connect_session()

int app_worker_connect_session ( app_worker_t app,
session_endpoint_t tep,
u32  api_context 
)

Definition at line 420 of file application_worker.c.

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

◆ app_worker_del_segment_notify()

int app_worker_del_segment_notify ( app_worker_t app_wrk,
u64  segment_handle 
)

Definition at line 533 of file application_worker.c.

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

◆ app_worker_first_listener()

session_t* app_worker_first_listener ( app_worker_t app,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 475 of file application_worker.c.

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

◆ app_worker_format_connects()

void app_worker_format_connects ( app_worker_t app_wrk,
int  verbose 
)

Definition at line 705 of file application_worker.c.

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

◆ app_worker_free()

void app_worker_free ( app_worker_t app_wrk)

Definition at line 55 of file application_worker.c.

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

◆ app_worker_get()

app_worker_t* app_worker_get ( u32  wrk_index)

Definition at line 41 of file application_worker.c.

+ Here is the caller graph for this function:

◆ app_worker_get_app()

application_t* app_worker_get_app ( u32  wrk_index)

Definition at line 118 of file application_worker.c.

+ Here is the call graph for this function:

◆ app_worker_get_connect_segment_manager()

segment_manager_t* app_worker_get_connect_segment_manager ( app_worker_t )

Definition at line 450 of file application_worker.c.

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

◆ app_worker_get_if_valid()

app_worker_t* app_worker_get_if_valid ( u32  wrk_index)

Definition at line 47 of file application_worker.c.

+ Here is the caller graph for this function:

◆ app_worker_get_listen_segment_manager()

segment_manager_t* app_worker_get_listen_segment_manager ( app_worker_t ,
session_t  
)

Definition at line 465 of file application_worker.c.

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

◆ app_worker_get_or_alloc_connect_segment_manager()

segment_manager_t* app_worker_get_or_alloc_connect_segment_manager ( app_worker_t )

Definition at line 457 of file application_worker.c.

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

◆ app_worker_init_accepted()

int app_worker_init_accepted ( session_t s)

Definition at line 272 of file application_worker.c.

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

◆ app_worker_init_connected()

int app_worker_init_connected ( app_worker_t app_wrk,
session_t s 
)

Definition at line 297 of file application_worker.c.

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

◆ app_worker_lock_and_send_event()

int app_worker_lock_and_send_event ( app_worker_t app,
session_t s,
u8  evt_type 
)

Send event to application.

Logic from queue perspective is blocking. However, if queue is full, we return.

Definition at line 645 of file application_worker.c.

+ Here is the caller graph for this function:

◆ app_worker_migrate_notify()

int app_worker_migrate_notify ( app_worker_t app_wrk,
session_t s,
session_handle_t  new_sh 
)

Definition at line 376 of file application_worker.c.

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

◆ app_worker_n_listeners()

u32 app_worker_n_listeners ( app_worker_t app)

◆ app_worker_own_session()

int app_worker_own_session ( app_worker_t app_wrk,
session_t s 
)

Definition at line 385 of file application_worker.c.

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

◆ app_worker_proxy_listener()

session_t* app_worker_proxy_listener ( app_worker_t app,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 499 of file application_worker.c.

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

◆ app_worker_reset_notify()

int app_worker_reset_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 338 of file application_worker.c.

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

◆ app_worker_send_event()

int app_worker_send_event ( app_worker_t app,
session_t s,
u8  evt 
)

◆ app_worker_start_listen()

int app_worker_start_listen ( app_worker_t app_wrk,
app_listener_t lstnr 
)

Definition at line 190 of file application_worker.c.

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

◆ app_worker_stop_listen()

int app_worker_stop_listen ( app_worker_t app_wrk,
app_listener_t al 
)

Definition at line 245 of file application_worker.c.

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

◆ app_worker_transport_closed_notify()

int app_worker_transport_closed_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 329 of file application_worker.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 677 of file application.c.

+ Here is the call graph for this function:
+ 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 1090 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  index)

Definition at line 418 of file application.c.

+ Here is the caller graph for this function:

◆ application_get_default_worker()

app_worker_t* application_get_default_worker ( application_t app)

Definition at line 654 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  index)

Definition at line 426 of file application.c.

+ 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 1299 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_index 
)

Definition at line 644 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 1147 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 1141 of file application.c.

+ Here is the caller graph for this function:

◆ application_is_builtin()

int application_is_builtin ( application_t app)

Definition at line 1129 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 1135 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 1123 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 666 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 339 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 386 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 397 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_or_wrk)

Returns app name for app-index.

Definition at line 352 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 1277 of file application.c.

+ Here is the call graph for this function:
+ 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 1293 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 324 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 1261 of file application.c.

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

◆ format_app_worker()

u8* format_app_worker ( u8 s,
va_list *  args 
)

Definition at line 692 of file application_worker.c.

+ Here is the call graph for this function:

◆ format_app_worker_listener()

u8* format_app_worker_listener ( u8 s,
va_list *  args 
)

Definition at line 652 of file application_worker.c.

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

◆ mq_send_session_bound_cb()

int mq_send_session_bound_cb ( u32  app_wrk_index,
u32  api_context,
session_handle_t  handle,
int  rv 
)

Definition at line 383 of file session_api.c.

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

◆ mq_send_session_connected_cb()

int mq_send_session_connected_cb ( u32  app_wrk_index,
u32  api_context,
session_t s,
u8  is_fail 
)

Definition at line 303 of file session_api.c.

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

◆ mq_send_unlisten_reply()

void mq_send_unlisten_reply ( app_worker_t app_wrk,
session_handle_t  sh,
u32  context,
int  rv 
)

Definition at line 443 of file session_api.c.

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

◆ unformat_application_proto()

uword unformat_application_proto ( unformat_input_t input,
va_list *  args 
)

◆ vnet_app_worker_add_del()

int vnet_app_worker_add_del ( vnet_app_worker_add_del_args_t a)

Definition at line 717 of file application.c.

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