From 134a996a0279577080b626d5172c1739efa00b92 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 28 Aug 2018 11:32:04 -0700 Subject: vcl: add support for multi-worker apps Add basic support for app registration of multiple workers. LDP does not work with multi-worker apps. Change-Id: I3fc421a2a591a077b275827463f874b261415a63 Signed-off-by: Florin Coras --- src/vnet/session/session.api | 2 ++ src/vnet/session/session_api.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/vnet/session') diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api index 5a38340a450..24ebfba5dba 100644 --- a/src/vnet/session/session.api +++ b/src/vnet/session/session.api @@ -408,6 +408,7 @@ define connect_session_reply { @param context - sender context, to match reply w/ request @param evt_q_address - address of the mq in ssvm segment @param peer_evt_q_address - address of peer's mq in ssvm segment + @param wrk_index - index of worker to receive the registration @param n_fds - number of fds exchanged @param fd_flags - flag indicating the fds that will be exchanged over api socket @@ -418,6 +419,7 @@ autoreply define app_cut_through_registration_add u32 context; u64 evt_q_address; u64 peer_evt_q_address; + u32 wrk_index; u8 n_fds; u8 fd_flags; }; diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 13a337699d2..78c05c34431 100755 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -147,7 +147,8 @@ send_del_segment_callback (u32 api_client_index, const ssvm_private_t * fs) } static int -send_app_cut_through_registration_add (u32 api_client_index, u64 mq_addr, +send_app_cut_through_registration_add (u32 api_client_index, + u32 wrk_map_index, u64 mq_addr, u64 peer_mq_addr) { vl_api_app_cut_through_registration_add_t *mp; @@ -169,6 +170,7 @@ send_app_cut_through_registration_add (u32 api_client_index, u64 mq_addr, mp->evt_q_address = mq_addr; mp->peer_evt_q_address = peer_mq_addr; + mp->wrk_index = wrk_map_index; mq = uword_to_pointer (mq_addr, svm_msg_q_t *); peer_mq = uword_to_pointer (peer_mq_addr, svm_msg_q_t *); @@ -475,6 +477,7 @@ mq_send_session_accepted_cb (stream_session_t * s) u8 main_thread = vlib_num_workers ()? 1 : 0; send_app_cut_through_registration_add (app->api_client_index, + app_wrk->wrk_map_index, ls->server_evt_q, ls->client_evt_q); @@ -615,6 +618,7 @@ mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context, u8 main_thread = vlib_num_workers ()? 1 : 0; send_app_cut_through_registration_add (app->api_client_index, + app_wrk->wrk_map_index, ls->client_evt_q, ls->server_evt_q); -- cgit 1.2.3-korg