diff options
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/session/application.c | 13 | ||||
-rw-r--r-- | src/vnet/session/application_interface.h | 18 | ||||
-rw-r--r-- | src/vnet/session/segment_manager.c | 21 | ||||
-rw-r--r-- | src/vnet/session/segment_manager.h | 1 | ||||
-rwxr-xr-x | src/vnet/session/session_api.c | 6 | ||||
-rw-r--r-- | src/vnet/session/session_test.c | 8 | ||||
-rw-r--r-- | src/vnet/tcp/builtin_client.c | 14 | ||||
-rw-r--r-- | src/vnet/tcp/builtin_http_server.c | 13 | ||||
-rw-r--r-- | src/vnet/tcp/builtin_proxy.c | 21 | ||||
-rw-r--r-- | src/vnet/tcp/builtin_server.c | 14 | ||||
-rw-r--r-- | src/vnet/udp/builtin_server.c | 4 |
11 files changed, 66 insertions, 67 deletions
diff --git a/src/vnet/session/application.c b/src/vnet/session/application.c index 3e6ac98b27f..f6151b6b487 100644 --- a/src/vnet/session/application.c +++ b/src/vnet/session/application.c @@ -237,8 +237,8 @@ application_init (application_t * app, u32 api_client_index, u64 * options, u32 default_rx_fifo_size = 16 << 10, default_tx_fifo_size = 16 << 10; int rv; - app_evt_queue_size = options[APP_EVT_QUEUE_SIZE] > 0 ? - options[APP_EVT_QUEUE_SIZE] : default_app_evt_queue_size; + app_evt_queue_size = options[APP_OPTIONS_EVT_QUEUE_SIZE] > 0 ? + options[APP_OPTIONS_EVT_QUEUE_SIZE] : default_app_evt_queue_size; /* * Setup segment manager @@ -247,11 +247,11 @@ application_init (application_t * app, u32 api_client_index, u64 * options, sm->app_index = app->index; props = segment_manager_properties_alloc (); app->sm_properties = segment_manager_properties_index (props); - props->add_segment_size = options[SESSION_OPTIONS_ADD_SEGMENT_SIZE]; - props->rx_fifo_size = options[SESSION_OPTIONS_RX_FIFO_SIZE]; + props->add_segment_size = options[APP_OPTIONS_ADD_SEGMENT_SIZE]; + props->rx_fifo_size = options[APP_OPTIONS_RX_FIFO_SIZE]; props->rx_fifo_size = props->rx_fifo_size ? props->rx_fifo_size : default_rx_fifo_size; - props->tx_fifo_size = options[SESSION_OPTIONS_TX_FIFO_SIZE]; + props->tx_fifo_size = options[APP_OPTIONS_TX_FIFO_SIZE]; props->tx_fifo_size = props->tx_fifo_size ? props->tx_fifo_size : default_tx_fifo_size; props->add_segment = props->add_segment_size != 0; @@ -259,9 +259,8 @@ application_init (application_t * app, u32 api_client_index, u64 * options, props->use_private_segment = options[APP_OPTIONS_FLAGS] & APP_OPTIONS_FLAGS_IS_BUILTIN; props->private_segment_count = options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT]; - props->private_segment_size = options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE]; - first_seg_size = options[SESSION_OPTIONS_SEGMENT_SIZE]; + first_seg_size = options[APP_OPTIONS_SEGMENT_SIZE]; if ((rv = segment_manager_init (sm, app->sm_properties, first_seg_size))) return rv; sm->first_is_protected = 1; diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h index 686b4181a7c..68973a9f938 100644 --- a/src/vnet/session/application_interface.h +++ b/src/vnet/session/application_interface.h @@ -101,21 +101,19 @@ typedef struct _vnet_disconnect_args_t /* Application attach options */ typedef enum { - APP_EVT_QUEUE_SIZE, APP_OPTIONS_FLAGS, - APP_OPTIONS_PREALLOC_FIFO_PAIRS, + APP_OPTIONS_EVT_QUEUE_SIZE, + APP_OPTIONS_SEGMENT_SIZE, + APP_OPTIONS_ADD_SEGMENT_SIZE, APP_OPTIONS_PRIVATE_SEGMENT_COUNT, - APP_OPTIONS_PRIVATE_SEGMENT_SIZE, + APP_OPTIONS_RX_FIFO_SIZE, + APP_OPTIONS_TX_FIFO_SIZE, + APP_OPTIONS_PREALLOC_FIFO_PAIRS, APP_OPTIONS_NAMESPACE, APP_OPTIONS_NAMESPACE_SECRET, APP_OPTIONS_PROXY_TRANSPORT, - SESSION_OPTIONS_SEGMENT_SIZE, - SESSION_OPTIONS_ADD_SEGMENT_SIZE, - SESSION_OPTIONS_RX_FIFO_SIZE, - SESSION_OPTIONS_TX_FIFO_SIZE, - SESSION_OPTIONS_PREALLOCATED_FIFO_PAIRS, - SESSION_OPTIONS_ACCEPT_COOKIE, - SESSION_OPTIONS_N_OPTIONS + APP_OPTIONS_ACCEPT_COOKIE, + APP_OPTIONS_N_OPTIONS } app_attach_options_index_t; #define foreach_app_options_flags \ diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c index e448023ddd0..9e6a1b55cbb 100644 --- a/src/vnet/session/segment_manager.c +++ b/src/vnet/session/segment_manager.c @@ -116,16 +116,11 @@ session_manager_add_segment_i (segment_manager_t * sm, u32 segment_size, u64 approx_total_size; ca->segment_name = "process-private-segment"; - ca->segment_size = ~0; + ca->segment_size = segment_size; ca->rx_fifo_size = props->rx_fifo_size; ca->tx_fifo_size = props->tx_fifo_size; ca->preallocated_fifo_pairs = props->preallocated_fifo_pairs; ca->private_segment_count = props->private_segment_count; - ca->private_segment_size = props->private_segment_size; - - /* Default to a small private segment */ - if (ca->private_segment_size == 0) - ca->private_segment_size = 128 << 20; /* Calculate space requirements */ rx_rounded_data_size = (1 << (max_log2 (ca->rx_fifo_size))); @@ -136,9 +131,8 @@ session_manager_add_segment_i (segment_manager_t * sm, u32 segment_size, approx_total_size = (u64) ca->preallocated_fifo_pairs * (rx_fifo_size + tx_fifo_size); - approx_segment_count = - (approx_total_size + - (ca->private_segment_size - 1)) / (u64) ca->private_segment_size; + approx_segment_count = (approx_total_size + (ca->segment_size - 1)) + / (u64) ca->segment_size; /* The user asked us to figure it out... */ if (ca->private_segment_count == 0) @@ -148,9 +142,8 @@ session_manager_add_segment_i (segment_manager_t * sm, u32 segment_size, /* Follow directions, but issue a warning */ else if (approx_segment_count != ca->private_segment_count) { - clib_warning - ("Honoring segment count %u, but calculated count was %u", - ca->private_segment_count, approx_segment_count); + clib_warning ("Honoring segment count %u, calculated count was %u", + ca->private_segment_count, approx_segment_count); } if (svm_fifo_segment_create_process_private (ca)) @@ -624,7 +617,7 @@ segment_manager_show_fn (vlib_main_t * vm, unformat_input_t * input, segments = svm_fifo_segment_segments_pool (); vlib_cli_output (vm, "%d svm fifo segments allocated", pool_elts (segments)); - vlib_cli_output (vm, "%-20s%=12s%=16s%=16s%=16s", "Name", + vlib_cli_output (vm, "%-25s%15s%16s%16s%16s", "Name", "HeapSize (M)", "ActiveFifos", "FreeFifos", "Address"); /* *INDENT-OFF* */ @@ -647,7 +640,7 @@ segment_manager_show_fn (vlib_main_t * vm, unformat_input_t * input, } active_fifos = svm_fifo_segment_num_fifos (seg); free_fifos = svm_fifo_segment_num_free_fifos (seg, ~0 /* size */); - vlib_cli_output (vm, "%-20v%=16llu%=16u%=16u%16llx", + vlib_cli_output (vm, "%-25v%15llu%16u%16u%16llx", name, size >> 20ULL, active_fifos, free_fifos, address); if (verbose) diff --git a/src/vnet/session/segment_manager.h b/src/vnet/session/segment_manager.h index f6494616a9f..9d2d141e7b4 100644 --- a/src/vnet/session/segment_manager.h +++ b/src/vnet/session/segment_manager.h @@ -42,7 +42,6 @@ typedef struct _segment_manager_properties /** Use one or more private mheaps, instead of the global heap */ u32 private_segment_count; - u32 private_segment_size; } segment_manager_properties_t; typedef struct _segment_manager diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 57f55eb0db8..1fd84ab7c43 100755 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -253,8 +253,8 @@ redirect_connect_callback (u32 server_api_client_index, void *mp_arg) } props = segment_manager_properties_get (app->sm_properties); - mp->options[SESSION_OPTIONS_RX_FIFO_SIZE] = props->rx_fifo_size; - mp->options[SESSION_OPTIONS_TX_FIFO_SIZE] = props->tx_fifo_size; + mp->options[APP_OPTIONS_RX_FIFO_SIZE] = props->rx_fifo_size; + mp->options[APP_OPTIONS_TX_FIFO_SIZE] = props->tx_fifo_size; /* * Bounce message handlers MUST NOT block the data-plane. @@ -321,7 +321,7 @@ vl_api_application_attach_t_handler (vl_api_application_attach_t * mp) goto done; } - STATIC_ASSERT (sizeof (u64) * SESSION_OPTIONS_N_OPTIONS <= + STATIC_ASSERT (sizeof (u64) * APP_OPTIONS_N_OPTIONS <= sizeof (mp->options), "Out of options, fix api message definition"); diff --git a/src/vnet/session/session_test.c b/src/vnet/session/session_test.c index 1303e8b9fdf..64657c11da0 100644 --- a/src/vnet/session/session_test.c +++ b/src/vnet/session/session_test.c @@ -102,7 +102,7 @@ static int session_test_basic (vlib_main_t * vm, unformat_input_t * input) { session_endpoint_t server_sep = SESSION_ENDPOINT_NULL; - u64 options[SESSION_OPTIONS_N_OPTIONS], bind4_handle, bind6_handle; + u64 options[APP_OPTIONS_N_OPTIONS], bind4_handle, bind6_handle; u8 segment_name[128]; clib_error_t *error = 0; u32 server_index; @@ -167,7 +167,7 @@ session_test_basic (vlib_main_t * vm, unformat_input_t * input) static int session_test_namespace (vlib_main_t * vm, unformat_input_t * input) { - u64 options[SESSION_OPTIONS_N_OPTIONS], dummy_secret = 1234; + u64 options[APP_OPTIONS_N_OPTIONS], dummy_secret = 1234; u32 server_index, server_st_index, server_local_st_index; u32 dummy_port = 1234, local_listener, client_index; u32 dummy_api_context = 4321, dummy_client_api_index = 1234; @@ -774,7 +774,7 @@ static int session_test_rules (vlib_main_t * vm, unformat_input_t * input) { session_endpoint_t server_sep = SESSION_ENDPOINT_NULL; - u64 options[SESSION_OPTIONS_N_OPTIONS]; + u64 options[APP_OPTIONS_N_OPTIONS]; u16 lcl_port = 1234, rmt_port = 4321; u32 server_index, server_index2, app_index; u32 dummy_server_api_index = ~0; @@ -1335,7 +1335,7 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input) static int session_test_proxy (vlib_main_t * vm, unformat_input_t * input) { - u64 options[SESSION_OPTIONS_N_OPTIONS]; + u64 options[APP_OPTIONS_N_OPTIONS]; char *show_listeners = "sh session listeners tcp verbose"; char *show_local_listeners = "sh app ns table default"; unformat_input_t tmp_input; diff --git a/src/vnet/tcp/builtin_client.c b/src/vnet/tcp/builtin_client.c index 2b4f07dc415..b90773b7586 100644 --- a/src/vnet/tcp/builtin_client.c +++ b/src/vnet/tcp/builtin_client.c @@ -429,10 +429,10 @@ static clib_error_t * attach_builtin_test_clients_app (u8 * appns_id, u64 appns_flags, u64 appns_secret) { + u32 segment_name_length, prealloc_fifos, segment_size = 2 << 20; tclient_main_t *tm = &tclient_main; vnet_app_attach_args_t _a, *a = &_a; u8 segment_name[128]; - u32 segment_name_length, prealloc_fifos; u64 options[16]; clib_error_t *error = 0; @@ -448,12 +448,14 @@ attach_builtin_test_clients_app (u8 * appns_id, u64 appns_flags, prealloc_fifos = tm->prealloc_fifos ? tm->expected_connections : 1; - options[SESSION_OPTIONS_ACCEPT_COOKIE] = 0x12345678; - options[SESSION_OPTIONS_SEGMENT_SIZE] = (2ULL << 32); - options[SESSION_OPTIONS_RX_FIFO_SIZE] = tm->fifo_size; - options[SESSION_OPTIONS_TX_FIFO_SIZE] = tm->fifo_size; + if (tm->private_segment_size) + segment_size = tm->private_segment_size; + + options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678; + options[APP_OPTIONS_SEGMENT_SIZE] = segment_size; + options[APP_OPTIONS_RX_FIFO_SIZE] = tm->fifo_size; + options[APP_OPTIONS_TX_FIFO_SIZE] = tm->fifo_size; options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = tm->private_segment_count; - options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE] = tm->private_segment_size; options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = prealloc_fifos; options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; diff --git a/src/vnet/tcp/builtin_http_server.c b/src/vnet/tcp/builtin_http_server.c index 6d58aab6f38..6e1cd8e770e 100644 --- a/src/vnet/tcp/builtin_http_server.c +++ b/src/vnet/tcp/builtin_http_server.c @@ -511,23 +511,26 @@ server_attach () { http_server_main_t *hsm = &http_server_main; u8 segment_name[128]; - u64 options[SESSION_OPTIONS_N_OPTIONS]; + u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; + u32 segment_size = 128 << 20; memset (a, 0, sizeof (*a)); memset (options, 0, sizeof (options)); + if (hsm->private_segment_size) + segment_size = hsm->private_segment_size; + a->api_client_index = hsm->my_client_index; a->session_cb_vft = &builtin_session_cb_vft; a->options = options; - a->options[SESSION_OPTIONS_SEGMENT_SIZE] = 128 << 20; - a->options[SESSION_OPTIONS_RX_FIFO_SIZE] = + a->options[APP_OPTIONS_SEGMENT_SIZE] = segment_size; + a->options[APP_OPTIONS_RX_FIFO_SIZE] = hsm->fifo_size ? hsm->fifo_size : 8 << 10; - a->options[SESSION_OPTIONS_TX_FIFO_SIZE] = + a->options[APP_OPTIONS_TX_FIFO_SIZE] = hsm->fifo_size ? hsm->fifo_size : 32 << 10; a->options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; a->options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = hsm->prealloc_fifos; - a->options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE] = hsm->private_segment_size; a->segment_name = segment_name; a->segment_name_length = ARRAY_LEN (segment_name); diff --git a/src/vnet/tcp/builtin_proxy.c b/src/vnet/tcp/builtin_proxy.c index 779e9b689e0..7f70df39069 100644 --- a/src/vnet/tcp/builtin_proxy.c +++ b/src/vnet/tcp/builtin_proxy.c @@ -383,20 +383,22 @@ server_attach () { builtin_proxy_main_t *bpm = &builtin_proxy_main; u8 segment_name[128]; - u64 options[SESSION_OPTIONS_N_OPTIONS]; + u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; + u32 segment_size = 512 << 20; memset (a, 0, sizeof (*a)); memset (options, 0, sizeof (options)); + if (bpm->private_segment_size) + segment_size = bpm->private_segment_size; a->api_client_index = bpm->server_client_index; a->session_cb_vft = &builtin_session_cb_vft; a->options = options; - a->options[SESSION_OPTIONS_SEGMENT_SIZE] = 512 << 20; - a->options[SESSION_OPTIONS_RX_FIFO_SIZE] = bpm->fifo_size; - a->options[SESSION_OPTIONS_TX_FIFO_SIZE] = bpm->fifo_size; + a->options[APP_OPTIONS_SEGMENT_SIZE] = segment_size; + a->options[APP_OPTIONS_RX_FIFO_SIZE] = bpm->fifo_size; + a->options[APP_OPTIONS_TX_FIFO_SIZE] = bpm->fifo_size; a->options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = bpm->private_segment_count; - a->options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE] = bpm->private_segment_size; a->options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = bpm->prealloc_fifos ? bpm->prealloc_fifos : 1; @@ -434,12 +436,11 @@ active_open_attach (void) a->segment_name_length = segment_name_length; a->session_cb_vft = &builtin_clients; - options[SESSION_OPTIONS_ACCEPT_COOKIE] = 0x12345678; - options[SESSION_OPTIONS_SEGMENT_SIZE] = 512 << 20; - options[SESSION_OPTIONS_RX_FIFO_SIZE] = bpm->fifo_size; - options[SESSION_OPTIONS_TX_FIFO_SIZE] = bpm->fifo_size; + options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678; + options[APP_OPTIONS_SEGMENT_SIZE] = 512 << 20; + options[APP_OPTIONS_RX_FIFO_SIZE] = bpm->fifo_size; + options[APP_OPTIONS_TX_FIFO_SIZE] = bpm->fifo_size; options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = bpm->private_segment_count; - options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE] = bpm->private_segment_size; options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = bpm->prealloc_fifos ? bpm->prealloc_fifos : 1; diff --git a/src/vnet/tcp/builtin_server.c b/src/vnet/tcp/builtin_server.c index b613b3ae5d5..26cbfe77727 100644 --- a/src/vnet/tcp/builtin_server.c +++ b/src/vnet/tcp/builtin_server.c @@ -273,8 +273,9 @@ server_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) { builtin_server_main_t *bsm = &builtin_server_main; u8 segment_name[128]; - u64 options[SESSION_OPTIONS_N_OPTIONS]; + u64 options[APP_OPTIONS_N_OPTIONS]; vnet_app_attach_args_t _a, *a = &_a; + u32 segment_size = 512 << 20; memset (a, 0, sizeof (*a)); memset (options, 0, sizeof (options)); @@ -285,14 +286,17 @@ server_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret) else builtin_session_cb_vft.builtin_server_rx_callback = builtin_server_rx_callback; + + if (bsm->private_segment_size) + segment_size = bsm->private_segment_size; + a->api_client_index = bsm->my_client_index; a->session_cb_vft = &builtin_session_cb_vft; a->options = options; - a->options[SESSION_OPTIONS_SEGMENT_SIZE] = 512 << 20; - a->options[SESSION_OPTIONS_RX_FIFO_SIZE] = bsm->fifo_size; - a->options[SESSION_OPTIONS_TX_FIFO_SIZE] = bsm->fifo_size; + a->options[APP_OPTIONS_SEGMENT_SIZE] = segment_size; + a->options[APP_OPTIONS_RX_FIFO_SIZE] = bsm->fifo_size; + a->options[APP_OPTIONS_TX_FIFO_SIZE] = bsm->fifo_size; a->options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = bsm->private_segment_count; - a->options[APP_OPTIONS_PRIVATE_SEGMENT_SIZE] = bsm->private_segment_size; a->options[APP_OPTIONS_PREALLOC_FIFO_PAIRS] = bsm->prealloc_fifos ? bsm->prealloc_fifos : 1; diff --git a/src/vnet/udp/builtin_server.c b/src/vnet/udp/builtin_server.c index 29c33beba2e..05a47031dc2 100644 --- a/src/vnet/udp/builtin_server.c +++ b/src/vnet/udp/builtin_server.c @@ -125,8 +125,8 @@ attach_builtin_uri_server () a->segment_name_length = segment_name_length; a->session_cb_vft = &builtin_server; - options[SESSION_OPTIONS_ACCEPT_COOKIE] = 0x12345678; - options[SESSION_OPTIONS_SEGMENT_SIZE] = (2 << 30); /*$$$$ config / arg */ + 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; |