aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/session/application.c13
-rw-r--r--src/vnet/session/application_interface.h18
-rw-r--r--src/vnet/session/segment_manager.c21
-rw-r--r--src/vnet/session/segment_manager.h1
-rwxr-xr-xsrc/vnet/session/session_api.c6
-rw-r--r--src/vnet/session/session_test.c8
-rw-r--r--src/vnet/tcp/builtin_client.c14
-rw-r--r--src/vnet/tcp/builtin_http_server.c13
-rw-r--r--src/vnet/tcp/builtin_proxy.c21
-rw-r--r--src/vnet/tcp/builtin_server.c14
-rw-r--r--src/vnet/udp/builtin_server.c4
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;