X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvnet%2Fsession-apps%2Fecho_server.c;h=ab90004de975da1d8d9c7ceb2315df90a303f8c7;hp=77710752a1642cd7272aa9b8f03eebb6bd297ab7;hb=8feeaff56;hpb=5a7ca7bde104b12f8dc4a751fd911819d4bd6c8e diff --git a/src/vnet/session-apps/echo_server.c b/src/vnet/session-apps/echo_server.c index 77710752a16..ab90004de97 100644 --- a/src/vnet/session-apps/echo_server.c +++ b/src/vnet/session-apps/echo_server.c @@ -17,6 +17,7 @@ #include #include #include +#include typedef struct { @@ -28,7 +29,7 @@ typedef struct u32 app_index; /**< Server app index */ u32 my_client_index; /**< API client handle */ - u32 node_index; /**< process node index for evnt scheduling */ + u32 node_index; /**< process node index for event scheduling */ /* * Config params @@ -55,12 +56,12 @@ typedef struct echo_server_main_t echo_server_main; int -echo_server_session_accept_callback (stream_session_t * s) +echo_server_session_accept_callback (session_t * s) { echo_server_main_t *esm = &echo_server_main; esm->vpp_queue[s->thread_index] = - session_manager_get_vpp_event_queue (s->thread_index); + session_main_get_vpp_event_queue (s->thread_index); s->session_state = SESSION_STATE_READY; esm->byte_index = 0; ASSERT (vec_len (esm->rx_retries) > s->thread_index); @@ -70,10 +71,10 @@ echo_server_session_accept_callback (stream_session_t * s) } void -echo_server_session_disconnect_callback (stream_session_t * s) +echo_server_session_disconnect_callback (session_t * s) { echo_server_main_t *esm = &echo_server_main; - vnet_disconnect_args_t _a, *a = &_a; + vnet_disconnect_args_t _a = { 0 }, *a = &_a; a->handle = session_handle (s); a->app_index = esm->app_index; @@ -81,22 +82,26 @@ echo_server_session_disconnect_callback (stream_session_t * s) } void -echo_server_session_reset_callback (stream_session_t * s) +echo_server_session_reset_callback (session_t * s) { - clib_warning ("Reset session %U", format_stream_session, s, 2); - stream_session_cleanup (s); + echo_server_main_t *esm = &echo_server_main; + vnet_disconnect_args_t _a = { 0 }, *a = &_a; + clib_warning ("Reset session %U", format_session, s, 2); + a->handle = session_handle (s); + a->app_index = esm->app_index; + vnet_disconnect_session (a); } int echo_server_session_connected_callback (u32 app_index, u32 api_context, - stream_session_t * s, u8 is_fail) + session_t * s, u8 is_fail) { clib_warning ("called..."); return -1; } int -echo_server_add_segment_callback (u32 client_index, const ssvm_private_t * sp) +echo_server_add_segment_callback (u32 client_index, u64 segment_handle) { /* New heaps may be added */ return 0; @@ -131,15 +136,15 @@ test_bytes (echo_server_main_t * esm, int actual_transfer) * If no-echo, just drop the data and be done with it. */ int -echo_server_builtin_server_rx_callback_no_echo (stream_session_t * s) +echo_server_builtin_server_rx_callback_no_echo (session_t * s) { - svm_fifo_t *rx_fifo = s->server_rx_fifo; + svm_fifo_t *rx_fifo = s->rx_fifo; svm_fifo_dequeue_drop (rx_fifo, svm_fifo_max_dequeue (rx_fifo)); return 0; } int -echo_server_rx_callback (stream_session_t * s) +echo_server_rx_callback (session_t * s) { u32 n_written, max_dequeue, max_enqueue, max_transfer; int actual_transfer; @@ -150,8 +155,8 @@ echo_server_rx_callback (stream_session_t * s) ASSERT (s->thread_index == thread_index); - rx_fifo = s->server_rx_fifo; - tx_fifo = s->server_tx_fifo; + rx_fifo = s->rx_fifo; + tx_fifo = s->tx_fifo; ASSERT (rx_fifo->master_thread_index == thread_index); ASSERT (tx_fifo->master_thread_index == thread_index); @@ -169,7 +174,7 @@ echo_server_rx_callback (stream_session_t * s) if (!esm->vpp_queue[s->thread_index]) { svm_msg_q_t *mq; - mq = session_manager_get_vpp_event_queue (s->thread_index); + mq = session_main_get_vpp_event_queue (s->thread_index); esm->vpp_queue[s->thread_index] = mq; } max_enqueue -= sizeof (session_dgram_hdr_t); @@ -190,13 +195,14 @@ echo_server_rx_callback (stream_session_t * s) /* Program self-tap to retry */ if (svm_fifo_set_event (rx_fifo)) { - if (session_send_io_evt_to_thread (rx_fifo, FIFO_EVENT_BUILTIN_RX)) + if (session_send_io_evt_to_thread (rx_fifo, + SESSION_IO_EVT_BUILTIN_RX)) clib_warning ("failed to enqueue self-tap"); vec_validate (esm->rx_retries[s->thread_index], s->session_index); if (esm->rx_retries[thread_index][s->session_index] == 500000) { - clib_warning ("session stuck: %U", format_stream_session, s, 2); + clib_warning ("session stuck: %U", format_session, s, 2); } if (esm->rx_retries[thread_index][s->session_index] < 500001) esm->rx_retries[thread_index][s->session_index]++; @@ -234,14 +240,16 @@ echo_server_rx_callback (stream_session_t * s) n_written = app_send_stream_raw (tx_fifo, esm->vpp_queue[thread_index], esm->rx_buf[thread_index], - actual_transfer, FIFO_EVENT_APP_TX, 0); + actual_transfer, SESSION_IO_EVT_TX, + 1 /* do_evt */ , 0); } else { n_written = app_send_dgram_raw (tx_fifo, &at, esm->vpp_queue[s->thread_index], esm->rx_buf[thread_index], - actual_transfer, FIFO_EVENT_APP_TX, 0); + actual_transfer, SESSION_IO_EVT_TX, + 1 /* do_evt */ , 0); } if (n_written != max_transfer) @@ -330,13 +338,13 @@ echo_server_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) clib_memset (a_cert, 0, sizeof (*a_cert)); a_cert->app_index = a->app_index; vec_validate (a_cert->cert, test_srv_crt_rsa_len); - clib_memcpy (a_cert->cert, test_srv_crt_rsa, test_srv_crt_rsa_len); + clib_memcpy_fast (a_cert->cert, test_srv_crt_rsa, test_srv_crt_rsa_len); vnet_app_add_tls_cert (a_cert); clib_memset (a_key, 0, sizeof (*a_key)); a_key->app_index = a->app_index; vec_validate (a_key->key, test_srv_key_rsa_len); - clib_memcpy (a_key->key, test_srv_key_rsa, test_srv_key_rsa_len); + clib_memcpy_fast (a_key->key, test_srv_key_rsa, test_srv_key_rsa_len); vnet_app_add_tls_key (a_key); return 0; } @@ -358,7 +366,7 @@ static int echo_server_listen () { echo_server_main_t *esm = &echo_server_main; - vnet_bind_args_t _a, *a = &_a; + vnet_listen_args_t _a, *a = &_a; clib_memset (a, 0, sizeof (*a)); a->app_index = esm->app_index; a->uri = esm->server_uri; @@ -389,7 +397,7 @@ echo_server_create (vlib_main_t * vm, u8 * appns_id, u64 appns_flags, vec_validate (esm->rx_retries, num_threads - 1); for (i = 0; i < vec_len (esm->rx_retries); i++) vec_validate (esm->rx_retries[i], - pool_elts (session_manager_main.wrk[i].sessions)); + pool_elts (session_main.wrk[i].sessions)); esm->rcv_buffer_size = clib_max (esm->rcv_buffer_size, esm->fifo_size); for (i = 0; i < num_threads; i++) vec_validate (esm->rx_buf[i], esm->rcv_buffer_size);