From a1eb39eee32e8a118ac9049420b81f3632a09ded Mon Sep 17 00:00:00 2001 From: Matus Fabian Date: Fri, 24 Oct 2025 09:50:43 -0400 Subject: [PATCH] hsa: quic echo app use new connect stream api quic streams are opened using SESSION_CTRL_EVT_CONNECT_STREAM Type: improvement Change-Id: I0e307101b5da31477a0b8c8081142d944864bd3e Signed-off-by: Matus Fabian --- src/plugins/hs_apps/sapi/vpp_echo_bapi.c | 24 ++++++++++++++++++++++++ src/plugins/hs_apps/sapi/vpp_echo_common.h | 1 + src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c | 8 ++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/plugins/hs_apps/sapi/vpp_echo_bapi.c b/src/plugins/hs_apps/sapi/vpp_echo_bapi.c index 12be20503a3..26dc096b692 100644 --- a/src/plugins/hs_apps/sapi/vpp_echo_bapi.c +++ b/src/plugins/hs_apps/sapi/vpp_echo_bapi.c @@ -210,6 +210,30 @@ echo_send_connect (echo_main_t * em, void *args) 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) { diff --git a/src/plugins/hs_apps/sapi/vpp_echo_common.h b/src/plugins/hs_apps/sapi/vpp_echo_common.h index d1e7debdb65..69400b21266 100644 --- a/src/plugins/hs_apps/sapi/vpp_echo_common.h +++ b/src/plugins/hs_apps/sapi/vpp_echo_common.h @@ -446,6 +446,7 @@ void echo_send_detach (echo_main_t * em); 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); diff --git a/src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c b/src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c index 1b0dbf33e29..e63219fca9b 100644 --- a/src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c +++ b/src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c @@ -59,12 +59,10 @@ quic_echo_on_connected_connect (session_connected_msg_t * mp, 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, @@ -118,12 +116,10 @@ quic_echo_on_accept_connect (session_accepted_msg_t * mp, u32 session_index) 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 -- 2.16.6