X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.c;h=b1bd7a7f041c5859fe4f23898fcc97356f1a3686;hb=93e658058033e251b98d18a1f0717a07a85adfc2;hp=34707e007e9a576469f53b3b00cdecee33cd276d;hpb=ade70e459deeaf143e5321603176c3fd3ee1503b;p=vpp.git diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 34707e007e9..b1bd7a7f041 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -147,7 +147,6 @@ session_alloc_for_connection (transport_connection_t * tc) s = session_alloc (thread_index); s->session_type = session_type_from_proto_and_ip (tc->proto, tc->is_ip4); s->session_state = SESSION_STATE_CONNECTING; - s->thread_index = thread_index; /* Attach transport to session and vice versa */ s->connection_index = tc->c_index; @@ -166,6 +165,7 @@ session_alloc_and_init (segment_manager_t * sm, transport_connection_t * tc, if (alloc_fifos && (rv = session_alloc_fifos (sm, s))) { session_free (s); + *ret_s = 0; return rv; } @@ -581,7 +581,7 @@ session_stream_connect_notify (transport_connection_t * tc, u8 is_fail) if (!is_fail) { sm = application_get_connect_segment_manager (app); - alloc_fifos = application_is_proxy (app); + alloc_fifos = !application_is_builtin_proxy (app); if (session_alloc_and_init (sm, tc, alloc_fifos, &new_s)) { is_fail = 1; @@ -1084,6 +1084,11 @@ session_manager_main_enable (vlib_main_t * vm) _vec_len (smm->pending_event_vector[i]) = 0; vec_validate (smm->pending_disconnects[i], 0); _vec_len (smm->pending_disconnects[i]) = 0; + if (num_threads > 1) + { + clib_spinlock_init (&smm->peekers_readers_locks[i]); + clib_spinlock_init (&smm->peekers_write_locks[i]); + } } #if SESSION_DBG @@ -1234,6 +1239,17 @@ session_config_fn (vlib_main_t * vm, unformat_input_t * input) tmp, tmp); smm->configured_v6_halfopen_table_memory = tmp; } + else if (unformat (input, "local-endpoints-table-memory %U", + unformat_memory_size, &tmp)) + { + if (tmp >= 0x100000000) + return clib_error_return (0, "memory size %llx (%lld) too large", + tmp, tmp); + smm->local_endpoints_table_memory = tmp; + } + else if (unformat (input, "local-endpoints-table-buckets %d", + &smm->local_endpoints_table_buckets)) + ; else return clib_error_return (0, "unknown input `%U'", format_unformat_error, input);