hsa: quic echo app use new connect stream api 39/43939/2
authorMatus Fabian <[email protected]>
Fri, 24 Oct 2025 13:50:43 +0000 (09:50 -0400)
committerFlorin Coras <[email protected]>
Fri, 24 Oct 2025 20:13:50 +0000 (20:13 +0000)
quic streams are opened using SESSION_CTRL_EVT_CONNECT_STREAM

Type: improvement

Change-Id: I0e307101b5da31477a0b8c8081142d944864bd3e
Signed-off-by: Matus Fabian <[email protected]>
src/plugins/hs_apps/sapi/vpp_echo_bapi.c
src/plugins/hs_apps/sapi/vpp_echo_common.h
src/plugins/hs_apps/sapi/vpp_echo_proto_quic.c

index 12be205..26dc096 100644 (file)
@@ -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)
 {
index d1e7deb..69400b2 100644 (file)
@@ -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);
index 1b0dbf3..e63219f 100644 (file)
@@ -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