app_send_ctrl_evt_to_vpp (mq, app_evt);
}
+void
+echo_send_connect_stream (echo_main_t *em, void *args)
+{
+ app_session_evt_t _app_evt, *app_evt = &_app_evt;
+ session_connect_msg_t *mp;
+ echo_connect_args_t *a = (echo_connect_args_t *) args;
+ svm_msg_q_t *mq = em->ctrl_mq;
+
+ clib_atomic_sub_fetch (&em->max_sim_connects, 1);
+ while (em->max_sim_connects <= 0)
+ ;
+
+ app_alloc_ctrl_evt_to_vpp (mq, app_evt, SESSION_CTRL_EVT_CONNECT_STREAM);
+ mp = (session_connect_msg_t *) app_evt->evt->data;
+ memset (mp, 0, sizeof (*mp));
+ mp->client_index = em->my_client_index;
+ mp->context = ntohl (a->context);
+ mp->wrk_index = 0;
+ mp->proto = em->uri_elts.transport_proto;
+ mp->parent_handle = a->parent_session_handle;
+ mp->flags = em->connect_flag;
+ app_send_ctrl_evt_to_vpp (mq, app_evt);
+}
+
void
echo_send_disconnect_session (echo_main_t * em, void *args)
{
void echo_send_listen (echo_main_t * em, ip46_address_t * ip);
void echo_send_unbind (echo_main_t * em, echo_session_t * s);
void echo_send_connect (echo_main_t * em, void *args);
+void echo_send_connect_stream (echo_main_t *em, void *args);
void echo_send_disconnect_session (echo_main_t * em, void *args);
void echo_api_hookup (echo_main_t * em);
void echo_send_add_cert_key (echo_main_t * em);
a->parent_session_handle = mp->handle;
a->context = session_index;
- clib_memcpy_fast (&a->lcl_ip, &em->lcl_ip, sizeof (ip46_address_t));
- clib_memcpy_fast (&a->ip, &em->uri_elts.ip, sizeof (ip46_address_t));
echo_notify_event (em, ECHO_EVT_FIRST_SCONNECT);
for (i = 0; i < eqm->n_stream_clients; i++)
- echo_send_rpc (em, echo_send_connect, (echo_rpc_args_t *) a);
+ echo_send_connect_stream (em, a);
ECHO_LOG (1, "Qsession 0x%llx S[%d] connected to %U:%d",
mp->handle, session_index, format_ip46_address, &mp->lcl.ip,
a->parent_session_handle = mp->handle;
a->context = session_index;
- clib_memcpy_fast (&a->lcl_ip, &em->lcl_ip, sizeof (ip46_address_t));
- clib_memcpy_fast (&a->ip, &em->uri_elts.ip, sizeof (ip46_address_t));
echo_notify_event (em, ECHO_EVT_FIRST_SCONNECT);
for (i = 0; i < eqm->n_stream_clients; i++)
- echo_send_rpc (em, echo_send_connect, (echo_rpc_args_t *) a);
+ echo_send_connect_stream (em, a);
}
static void