#include <vnet/session/application.h>
#include <vnet/session/session.h>
#include <vnet/session/session_rules_table.h>
+#include <vnet/tcp/tcp.h>
#define SESSION_TEST_I(_cond, _comment, _args...) \
({ \
vnet_app_detach_args_t detach_args = {
.app_index = server_index,
+ .api_client_index = ~0,
};
vnet_application_detach (&detach_args);
return 0;
session_test_endpoint_cfg (vlib_main_t * vm, unformat_input_t * input)
{
session_endpoint_cfg_t client_sep = SESSION_ENDPOINT_CFG_NULL;
+ u32 server_index, client_index, sw_if_index[2], tries = 0;
u64 options[APP_OPTIONS_N_OPTIONS], dummy_secret = 1234;
u16 dummy_server_port = 1234, dummy_client_port = 5678;
session_endpoint_t server_sep = SESSION_ENDPOINT_NULL;
- u32 server_index, client_index, sw_if_index[2];
ip4_address_t intf_addr[3];
transport_connection_t *tc;
stream_session_t *s;
.app_index = client_index,
};
+ connected_session_index = connected_session_thread = ~0;
+ accepted_session_index = accepted_session_thread = ~0;
error = vnet_connect (&connect_args);
SESSION_TEST ((error == 0), "connect should work");
/* wait for stuff to happen */
- vlib_process_suspend (vm, 10e-3);
-
+ while ((connected_session_index == ~0
+ || vec_len (tcp_main.wrk_ctx[0].pending_acks)) && ++tries < 100)
+ vlib_process_suspend (vm, 100e-3);
+ clib_warning ("waited %.1f seconds for connections", tries / 10.0);
SESSION_TEST ((connected_session_index != ~0), "session should exist");
+ SESSION_TEST ((connected_session_thread != ~0), "thread should exist");
+ SESSION_TEST ((accepted_session_index != ~0), "session should exist");
+ SESSION_TEST ((accepted_session_thread != ~0), "thread should exist");
s = session_get (connected_session_index, connected_session_thread);
tc = session_get_transport (s);
SESSION_TEST ((tc != 0), "transport should exist");
vnet_app_detach_args_t detach_args = {
.app_index = server_index,
+ .api_client_index = ~0,
};
vnet_application_detach (&detach_args);
detach_args.app_index = client_index;
u64 options[APP_OPTIONS_N_OPTIONS], dummy_secret = 1234;
u32 server_index, server_st_index, server_local_st_index;
u32 dummy_port = 1234, client_index, server_wrk_index;
- u32 dummy_api_context = 4321, dummy_client_api_index = 1234;
+ u32 dummy_api_context = 4321, dummy_client_api_index = ~0;
u32 dummy_server_api_index = ~0, sw_if_index = 0;
session_endpoint_t server_sep = SESSION_ENDPOINT_NULL;
session_endpoint_t client_sep = SESSION_ENDPOINT_NULL;
vnet_app_detach_args_t detach_args = {
.app_index = 0,
+ .api_client_index = ~0,
};
ip4_address_t intf_addr = {
app_ns = app_namespace_get_from_id (ns_id);
attach_args.namespace_id = ns_id;
- attach_args.api_client_index = dummy_server_api_index - 1;
+ attach_args.api_client_index = dummy_server_api_index;
error = vnet_application_attach (&attach_args);
SESSION_TEST ((error == 0), "server2 attached");
server_index2 = attach_args.app_index;
vec_free (args.table_args.tag);
vnet_app_detach_args_t detach_args = {
.app_index = server_index,
+ .api_client_index = ~0,
};
vnet_application_detach (&detach_args);
vnet_app_detach_args_t detach_args = {
.app_index = server_index,
+ .api_client_index = ~0,
};
vnet_application_detach (&detach_args);