FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
application_worker.c File Reference
+ Include dependency graph for application_worker.c:

Go to the source code of this file.

Typedefs

typedef int() app_send_evt_handler_fn(app_worker_t *app, session_t *s)
 

Functions

app_worker_tapp_worker_alloc (application_t *app)
 
app_worker_tapp_worker_get (u32 wrk_index)
 
app_worker_tapp_worker_get_if_valid (u32 wrk_index)
 
void app_worker_free (app_worker_t *app_wrk)
 
application_tapp_worker_get_app (u32 wrk_index)
 
static segment_manager_tapp_worker_alloc_segment_manager (app_worker_t *app_wrk)
 
static int app_worker_alloc_session_fifos (segment_manager_t *sm, session_t *s)
 
int app_worker_init_listener (app_worker_t *app_wrk, session_t *ls)
 
int app_worker_start_listen (app_worker_t *app_wrk, app_listener_t *app_listener)
 
static void app_worker_stop_listen_session (app_worker_t *app_wrk, session_t *ls)
 
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, session_error_t err, u32 opaque)
 
int app_worker_add_half_open (app_worker_t *app_wrk, transport_proto_t tp, session_handle_t ho_handle, session_handle_t wrk_handle)
 
int app_worker_del_half_open (app_worker_t *app_wrk, transport_proto_t tp, session_handle_t ho_handle)
 
u64 app_worker_lookup_half_open (app_worker_t *app_wrk, transport_proto_t tp, session_handle_t ho_handle)
 
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_builtin_rx (app_worker_t *app_wrk, session_t *s)
 
int app_worker_builtin_tx (app_worker_t *app_wrk, session_t *s)
 
int app_worker_migrate_notify (app_worker_t *app_wrk, session_t *s, session_handle_t new_sh)
 
int app_worker_own_session (app_worker_t *app_wrk, session_t *s)
 
int app_worker_connect_session (app_worker_t *app_wrk, session_endpoint_t *sep, u32 api_context)
 
int app_worker_session_fifo_tuning (app_worker_t *app_wrk, session_t *s, svm_fifo_t *f, session_ft_action_t act, u32 len)
 
int app_worker_alloc_connects_segment_manager (app_worker_t *app_wrk)
 
segment_manager_tapp_worker_get_connect_segment_manager (app_worker_t *app)
 
segment_manager_tapp_worker_get_or_alloc_connect_segment_manager (app_worker_t *app_wrk)
 
segment_manager_tapp_worker_get_listen_segment_manager (app_worker_t *app, session_t *listener)
 
session_tapp_worker_first_listener (app_worker_t *app_wrk, u8 fib_proto, u8 transport_proto)
 
session_tapp_worker_proxy_listener (app_worker_t *app_wrk, u8 fib_proto, u8 transport_proto)
 
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)
 
static u8 app_worker_application_is_builtin (app_worker_t *app_wrk)
 
static int app_send_io_evt_rx (app_worker_t *app_wrk, session_t *s)
 
static int app_send_io_evt_tx (app_worker_t *app_wrk, session_t *s)
 
int app_worker_lock_and_send_event (app_worker_t *app, session_t *s, u8 evt_type)
 Send event to application. More...
 
u8format_app_worker_listener (u8 *s, va_list *args)
 
u8format_app_worker (u8 *s, va_list *args)
 
void app_worker_format_connects (app_worker_t *app_wrk, int verbose)
 

Variables

static app_worker_tapp_workers
 Pool of workers associated to apps. More...
 
static app_send_evt_handler_fn *const app_send_evt_handler_fns [2]
 

Typedef Documentation

◆ app_send_evt_handler_fn

typedef int() app_send_evt_handler_fn(app_worker_t *app, session_t *s)

Definition at line 721 of file application_worker.c.

Function Documentation

◆ app_send_io_evt_rx()

static int app_send_io_evt_rx ( app_worker_t app_wrk,
session_t s 
)
inlinestatic

Definition at line 644 of file application_worker.c.

+ Here is the call graph for this function:

◆ app_send_io_evt_tx()

static int app_send_io_evt_tx ( app_worker_t app_wrk,
session_t s 
)
inlinestatic

Definition at line 685 of file application_worker.c.

+ Here is the call graph for this function:

◆ app_worker_accept_notify()

int app_worker_accept_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_add_half_open()

int app_worker_add_half_open ( app_worker_t app_wrk,
transport_proto_t  tp,
session_handle_t  ho_handle,
session_handle_t  wrk_handle 
)

Definition at line 373 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 621 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_wrk)

Definition at line 531 of file application_worker.c.

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

◆ app_worker_alloc_segment_manager()

static segment_manager_t* app_worker_alloc_segment_manager ( app_worker_t app_wrk)
static

Definition at line 163 of file application_worker.c.

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

◆ app_worker_alloc_session_fifos()

static int app_worker_alloc_session_fifos ( segment_manager_t sm,
session_t s 
)
static

Definition at line 183 of file application_worker.c.

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

◆ app_worker_application_is_builtin()

static u8 app_worker_application_is_builtin ( app_worker_t app_wrk)
inlinestatic

Definition at line 638 of file application_worker.c.

+ 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 442 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 450 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 432 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 407 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,
session_error_t  err,
u32  opaque 
)

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

int app_worker_connect_session ( app_worker_t app_wrk,
session_endpoint_t sep,
u32  api_context 
)

Definition at line 506 of file application_worker.c.

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

◆ app_worker_del_half_open()

int app_worker_del_half_open ( app_worker_t app_wrk,
transport_proto_t  tp,
session_handle_t  ho_handle 
)

Definition at line 384 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 630 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_wrk,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 571 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 796 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 153 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 app)

Definition at line 546 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 app,
session_t listener 
)

Definition at line 561 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 app_wrk)

Definition at line 553 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 315 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 345 of file application_worker.c.

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

◆ app_worker_init_listener()

int app_worker_init_listener ( app_worker_t app_wrk,
session_t ls 
)

Definition at line 204 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 736 of file application_worker.c.

+ Here is the caller graph for this function:

◆ app_worker_lookup_half_open()

u64 app_worker_lookup_half_open ( app_worker_t app_wrk,
transport_proto_t  tp,
session_handle_t  ho_handle 
)

Definition at line 393 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 462 of file application_worker.c.

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

◆ app_worker_own_session()

int app_worker_own_session ( app_worker_t app_wrk,
session_t s 
)

Definition at line 471 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_wrk,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 595 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 424 of file application_worker.c.

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

◆ app_worker_session_fifo_tuning()

int app_worker_session_fifo_tuning ( app_worker_t app_wrk,
session_t s,
svm_fifo_t f,
session_ft_action_t  act,
u32  len 
)

Definition at line 522 of file application_worker.c.

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

◆ app_worker_start_listen()

int app_worker_start_listen ( app_worker_t app_wrk,
app_listener_t app_listener 
)

Definition at line 227 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 288 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_session()

static void app_worker_stop_listen_session ( app_worker_t app_wrk,
session_t ls 
)
static

Definition at line 257 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 415 of file application_worker.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 783 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 743 of file application_worker.c.

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

Variable Documentation

◆ app_send_evt_handler_fns

app_send_evt_handler_fn* const app_send_evt_handler_fns[2]
static
Initial value:
= {
}
static int app_send_io_evt_tx(app_worker_t *app_wrk, session_t *s)
static int app_send_io_evt_rx(app_worker_t *app_wrk, session_t *s)

Definition at line 723 of file application_worker.c.

◆ app_workers

app_worker_t* app_workers
static

Pool of workers associated to apps.

Definition at line 23 of file application_worker.c.