summaryrefslogtreecommitdiffstats
path: root/src/vnet/udp/builtin_server.c
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-01-25 06:34:42 -0800
committerDave Barach <openvpp@barachs.net>2018-01-26 16:15:13 +0000
commit4399c2eb848b79762ff52a95fa5d9fab222c73bd (patch)
tree88ad4c903eb516bccb97b8c2fe101cb9e15398f7 /src/vnet/udp/builtin_server.c
parent87233b51bc4d088ff566cef09a7c96f1f0dac078 (diff)
session: move builtin apps to their own folder
This consolidates builtin apps under session-apps folder. It also removes duplicate builtin echo server/client implementations. Change-Id: I75ed879399c5aa9b75b1eb38b33aedf69dd8df3f Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/udp/builtin_server.c')
-rw-r--r--src/vnet/udp/builtin_server.c277
1 files changed, 0 insertions, 277 deletions
diff --git a/src/vnet/udp/builtin_server.c b/src/vnet/udp/builtin_server.c
deleted file mode 100644
index 4c9573e7f82..00000000000
--- a/src/vnet/udp/builtin_server.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/** @file
- udp builtin server
-*/
-
-#include <vnet/udp/udp.h>
-#include <vnet/session/session.h>
-#include <vnet/session/application_interface.h>
-
-/** per-worker built-in server copy buffers */
-u8 **copy_buffers;
-static int app_index = ~0;
-
-static int
-builtin_session_create_callback (stream_session_t * s)
-{
- /* Simple version: declare session ready-to-go... */
- s->session_state = SESSION_STATE_READY;
- return 0;
-}
-
-static void
-builtin_session_disconnect_callback (stream_session_t * s)
-{
- stream_session_disconnect (s);
-}
-
-static void
-builtin_session_reset_callback (stream_session_t * s)
-{
- clib_warning ("Reset session %U", format_stream_session, s, 2);
- stream_session_cleanup (s);
-}
-
-static int
-builtin_session_connected_callback (u32 app_index, u32 api_context,
- stream_session_t * s, u8 is_fail)
-{
- clib_warning ("called...");
- return -1;
-}
-
-static int
-builtin_server_rx_callback (stream_session_t * s)
-{
- svm_fifo_t *rx_fifo, *tx_fifo;
- u32 this_transfer, max_deq, max_enq;
- int actual_transfer;
- u8 *my_copy_buffer;
- session_fifo_event_t evt;
- svm_queue_t *q;
-
- my_copy_buffer = copy_buffers[s->thread_index];
- rx_fifo = s->server_rx_fifo;
- tx_fifo = s->server_tx_fifo;
-
- max_deq = svm_fifo_max_dequeue (rx_fifo);
- max_enq = svm_fifo_max_enqueue (tx_fifo);
- this_transfer = max_enq < max_deq ? max_enq : max_deq;
-
- vec_validate (my_copy_buffer, this_transfer - 1);
- _vec_len (my_copy_buffer) = this_transfer;
-
- actual_transfer = svm_fifo_dequeue_nowait (rx_fifo, this_transfer,
- my_copy_buffer);
- ASSERT (actual_transfer == this_transfer);
- actual_transfer = svm_fifo_enqueue_nowait (tx_fifo, this_transfer,
- my_copy_buffer);
- ASSERT (actual_transfer == this_transfer);
-
- copy_buffers[s->thread_index] = my_copy_buffer;
-
- if (svm_fifo_set_event (tx_fifo))
- {
- /* Fabricate TX event, send to ourselves */
- evt.fifo = tx_fifo;
- evt.event_type = FIFO_EVENT_APP_TX;
- q = session_manager_get_vpp_event_queue (s->thread_index);
- svm_queue_add (q, (u8 *) & evt, 0 /* do wait for mutex */ );
- }
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-static session_cb_vft_t builtin_server = {
- .session_accept_callback = builtin_session_create_callback,
- .session_connected_callback = builtin_session_connected_callback,
- .session_disconnect_callback = builtin_session_disconnect_callback,
- .builtin_server_rx_callback = builtin_server_rx_callback,
- .session_reset_callback = builtin_session_reset_callback
-};
-/* *INDENT-ON* */
-
-static int
-attach_builtin_uri_server ()
-{
- vnet_app_attach_args_t _a, *a = &_a;
- u64 options[16];
-
- memset (a, 0, sizeof (*a));
- memset (options, 0, sizeof (options));
-
- a->api_client_index = ~0;
- a->session_cb_vft = &builtin_server;
-
- options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678;
- options[APP_OPTIONS_SEGMENT_SIZE] = (2 << 30); /*$$$$ config / arg */
- options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN;
- options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = 1024;
-
- a->options = options;
-
- if (vnet_application_attach (a))
- return -1;
-
- app_index = a->app_index;
- return 0;
-}
-
-static int
-bind_builtin_uri_server (u8 * uri)
-{
- vnet_bind_args_t _a, *a = &_a;
- int rv;
-
- rv = attach_builtin_uri_server ();
- if (rv)
- return rv;
-
- memset (a, 0, sizeof (*a));
- a->uri = (char *) uri;
- a->app_index = app_index;
-
- rv = vnet_bind_uri (a);
-
- return rv;
-}
-
-static int
-unbind_builtin_uri_server (u8 * uri)
-{
- vnet_unbind_args_t _a, *a = &_a;
-
- a->app_index = app_index;
- a->uri = (char *) uri;
-
- return vnet_unbind_uri (a);
-}
-
-static clib_error_t *
-builtin_server_init (vlib_main_t * vm)
-{
- vlib_thread_main_t *vtm = vlib_get_thread_main ();
- u32 num_threads;
-
- num_threads = 1 /* main thread */ + vtm->n_threads;
-
- vec_validate (copy_buffers, num_threads - 1);
- return 0;
-}
-
-VLIB_INIT_FUNCTION (builtin_server_init);
-
-static clib_error_t *
-builtin_uri_bind_command_fn (vlib_main_t * vm,
- unformat_input_t * input,
- vlib_cli_command_t * cmd)
-{
- u8 *uri = 0;
- int rv;
-
- while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (input, "uri %s", &uri))
- ;
- else
- break;
- }
-
- if (uri == 0)
- return clib_error_return (0, "uri to bind not specified...");
-
- vnet_session_enable_disable (vm, 1 /* turn on UDP, etc. */ );
-
- rv = bind_builtin_uri_server (uri);
-
- vec_free (uri);
-
- switch (rv)
- {
- case 0:
- break;
-
- default:
- return clib_error_return (0, "bind_uri_server returned %d", rv);
- break;
- }
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-VLIB_CLI_COMMAND (builtin_uri_bind_command, static) =
-{
- .path = "builtin uri bind",
- .short_help = "builtin uri bind",
- .function = builtin_uri_bind_command_fn,
-};
-/* *INDENT-ON* */
-
-static clib_error_t *
-builtin_uri_unbind_command_fn (vlib_main_t * vm,
- unformat_input_t * input,
- vlib_cli_command_t * cmd)
-{
- u8 *uri = 0;
- int rv;
-
- while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (input, "uri %s", &uri))
- ;
- else
- break;
- }
-
- if (uri == 0)
- return clib_error_return (0, "uri to unbind not specified...");
-
- rv = unbind_builtin_uri_server (uri);
-
- vec_free (uri);
-
- switch (rv)
- {
- case 0:
- break;
-
- default:
- return clib_error_return (0, "unbind_uri_server returned %d", rv);
- break;
- }
-
- return 0;
-}
-
-/* *INDENT-OFF* */
-VLIB_CLI_COMMAND (builtin_uri_unbind_command, static) =
-{
- .path = "builtin uri unbind",
- .short_help = "builtin uri unbind",
- .function = builtin_uri_unbind_command_fn,
-};
-/* *INDENT-ON* */
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */