X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession_test.c;h=8fe1b0d36e0052a48242d9ede0ed3974410b8fb5;hb=b7b929931a07fbb27b43d5cd105f366c3e29807e;hp=85e8732ddabe4cb74233db2cf604991664a611c3;hpb=f8f516a8b0ccab2f5d9796f90419bf2661c750af;p=vpp.git diff --git a/src/vnet/session/session_test.c b/src/vnet/session/session_test.c index 85e8732ddab..8fe1b0d36e0 100644 --- a/src/vnet/session/session_test.c +++ b/src/vnet/session/session_test.c @@ -69,12 +69,6 @@ dummy_del_segment_callback (u32 client_index, const ssvm_private_t * fs) return 0; } -int -dummy_redirect_connect_callback (u32 client_index, void *mp) -{ - return VNET_API_ERROR_SESSION_REDIRECT; -} - void dummy_session_disconnect_callback (stream_session_t * s) { @@ -104,7 +98,7 @@ static session_cb_vft_t dummy_session_cbs = { .session_connected_callback = dummy_session_connected_callback, .session_accept_callback = dummy_session_accept_callback, .session_disconnect_callback = dummy_session_disconnect_callback, - .builtin_server_rx_callback = dummy_server_rx_callback, + .builtin_app_rx_callback = dummy_server_rx_callback, .add_segment_callback = dummy_add_segment_callback, .del_segment_callback = dummy_del_segment_callback, }; @@ -116,7 +110,7 @@ session_create_lookpback (u32 table_id, u32 * sw_if_index, { u8 intf_mac[6]; - memset (intf_mac, 0, sizeof (intf_mac)); + clib_memset (intf_mac, 0, sizeof (intf_mac)); if (vnet_create_loopback_interface (sw_if_index, intf_mac, 0, 0)) { @@ -156,7 +150,7 @@ session_test_basic (vlib_main_t * vm, unformat_input_t * input) clib_error_t *error = 0; u32 server_index; - memset (options, 0, sizeof (options)); + clib_memset (options, 0, sizeof (options)); options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; options[APP_OPTIONS_FLAGS] |= APP_OPTIONS_FLAGS_USE_GLOBAL_SCOPE; options[APP_OPTIONS_FLAGS] |= APP_OPTIONS_FLAGS_USE_LOCAL_SCOPE; @@ -165,11 +159,13 @@ session_test_basic (vlib_main_t * vm, unformat_input_t * input) .options = options, .namespace_id = 0, .session_cb_vft = &dummy_session_cbs, + .name = format (0, "session_test"), }; error = vnet_application_attach (&attach_args); SESSION_TEST ((error == 0), "app attached"); server_index = attach_args.app_index; + vec_free (attach_args.name); server_sep.is_ip4 = 1; vnet_bind_args_t bind_args = { @@ -216,7 +212,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) { 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; + u32 dummy_port = 1234, client_index, server_wrk_index; u32 dummy_api_context = 4321, dummy_client_api_index = 1234; u32 dummy_server_api_index = ~0, sw_if_index = 0; session_endpoint_t server_sep = SESSION_ENDPOINT_NULL; @@ -234,7 +230,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) server_sep.port = dummy_port; client_sep.is_ip4 = 1; client_sep.port = dummy_port; - memset (options, 0, sizeof (options)); + clib_memset (options, 0, sizeof (options)); options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; vnet_app_attach_args_t attach_args = { @@ -242,6 +238,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) .options = options, .namespace_id = 0, .session_cb_vft = &dummy_session_cbs, + .name = format (0, "session_test"), }; vnet_bind_args_t bind_args = { @@ -250,10 +247,10 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) }; vnet_connect_args_t connect_args = { - .sep = client_sep, .app_index = 0, .api_context = 0, }; + clib_memcpy (&connect_args.sep, &client_sep, sizeof (client_sep)); vnet_unbind_args_t unbind_args = { .handle = bind_args.handle, @@ -265,7 +262,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) }; ip4_address_t intf_addr = { - .as_u32 = clib_host_to_net_u32 (0x06000105), + .as_u32 = clib_host_to_net_u32 (0x07000105), }; intf_sep.ip.ip4 = intf_addr; @@ -321,6 +318,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) SESSION_TEST ((error == 0), "server attachment should work"); server_index = attach_args.app_index; server = application_get (server_index); + server_wrk_index = application_get_default_worker (server)->wrk_index; SESSION_TEST ((server->ns_index == 0), "server should be in the default ns"); @@ -331,8 +329,8 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) server_st_index = application_session_table (server, FIB_PROTOCOL_IP4); s = session_lookup_listener (server_st_index, &server_sep); SESSION_TEST ((s != 0), "listener should exist in global table"); - SESSION_TEST ((s->app_index == server_index), "app_index should be that of " - "the server"); + SESSION_TEST ((s->app_wrk_index == server_wrk_index), "app_index should be" + " that of the server"); server_local_st_index = application_local_session_table (server); SESSION_TEST ((server_local_st_index == APP_INVALID_INDEX), "server shouldn't have access to local table"); @@ -360,6 +358,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) SESSION_TEST ((error == 0), "server attachment should work"); server_index = attach_args.app_index; server = application_get (server_index); + server_wrk_index = application_get_default_worker (server)->wrk_index; SESSION_TEST ((server->ns_index == app_namespace_index (app_ns)), "server should be in the right ns"); @@ -369,8 +368,8 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) server_st_index = application_session_table (server, FIB_PROTOCOL_IP4); s = session_lookup_listener (server_st_index, &server_sep); SESSION_TEST ((s != 0), "listener should exist in global table"); - SESSION_TEST ((s->app_index == server_index), "app_index should be that of " - "the server"); + SESSION_TEST ((s->app_wrk_index == server_wrk_index), "app_index should be" + " that of the server"); server_local_st_index = application_local_session_table (server); handle = session_lookup_local_endpoint (server_local_st_index, &server_sep); SESSION_TEST ((handle != SESSION_INVALID_HANDLE), @@ -509,6 +508,8 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) error = vnet_application_attach (&attach_args); SESSION_TEST ((error == 0), "server attachment should work"); server_index = attach_args.app_index; + server = application_get (server_index); + server_wrk_index = application_get_default_worker (server)->wrk_index; bind_args.app_index = server_index; error = vnet_bind (&bind_args); @@ -518,8 +519,8 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) s = session_lookup_listener (server_st_index, &intf_sep); SESSION_TEST ((s != 0), "intf listener should exist in global table"); - SESSION_TEST ((s->app_index == server_index), "app_index should be that of " - "the server"); + SESSION_TEST ((s->app_wrk_index == server_wrk_index), "app_index should be " + "that of the server"); server_local_st_index = application_local_session_table (server); handle = session_lookup_local_endpoint (server_local_st_index, &server_sep); SESSION_TEST ((handle != SESSION_INVALID_HANDLE), @@ -530,6 +531,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input) /* * Cleanup */ + vec_free (attach_args.name); vec_free (ns_id); session_delete_loopback (sw_if_index); return 0; @@ -557,7 +559,7 @@ session_test_rule_table (vlib_main_t * vm, unformat_input_t * input) } } - memset (srt, 0, sizeof (*srt)); + clib_memset (srt, 0, sizeof (*srt)); session_rules_table_init (srt); ip4_address_t lcl_ip = { @@ -837,13 +839,14 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input) server_sep.is_ip4 = 1; server_sep.port = dummy_port; - memset (options, 0, sizeof (options)); + clib_memset (options, 0, sizeof (options)); vnet_app_attach_args_t attach_args = { .api_client_index = ~0, .options = options, .namespace_id = 0, .session_cb_vft = &dummy_session_cbs, + .name = format (0, "session_test"), }; vnet_bind_args_t bind_args = { @@ -1038,10 +1041,10 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input) " 5.6.7.9/32 4321 in local table should return deny"); vnet_connect_args_t connect_args = { - .sep = sep, .app_index = attach_args.app_index, .api_context = 0, }; + clib_memcpy (&connect_args.sep, &sep, sizeof (sep)); /* Try connecting */ error = vnet_connect (&connect_args); @@ -1316,8 +1319,10 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input) SESSION_TEST ((handle == SESSION_DROP_HANDLE), "lookup for 1.2.3.4/32 1234 " "5.6.7.8/16 432*2* in local table should return deny"); + connect_args.app_index = server_index; - connect_args.sep = sep; + clib_memcpy (&connect_args.sep, &sep, sizeof (sep)); + error = vnet_connect (&connect_args); SESSION_TEST ((error != 0), "connect should fail"); rv = clib_error_get_code (error); @@ -1360,6 +1365,7 @@ session_test_rules (vlib_main_t * vm, unformat_input_t * input) vnet_application_detach (&detach_args); vec_free (ns_id); + vec_free (attach_args.name); return 0; } @@ -1373,7 +1379,7 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input) u32 server_index, app_index; u32 dummy_server_api_index = ~0, sw_if_index = 0; clib_error_t *error = 0; - u8 sst, is_filtered = 0; + u8 is_filtered = 0; stream_session_t *s; transport_connection_t *tc; u16 lcl_port = 1234, rmt_port = 4321; @@ -1418,7 +1424,7 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input) app_ns = app_namespace_get_default (); app_ns->sw_if_index = sw_if_index; - memset (options, 0, sizeof (options)); + clib_memset (options, 0, sizeof (options)); options[APP_OPTIONS_FLAGS] = APP_OPTIONS_FLAGS_IS_BUILTIN; options[APP_OPTIONS_FLAGS] |= APP_OPTIONS_FLAGS_ACCEPT_REDIRECT; options[APP_OPTIONS_FLAGS] |= APP_OPTIONS_FLAGS_IS_PROXY; @@ -1430,6 +1436,7 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input) .options = options, .namespace_id = 0, .session_cb_vft = &dummy_session_cbs, + .name = format (0, "session_test"), }; attach_args.api_client_index = dummy_server_api_index; @@ -1451,10 +1458,9 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input) TRANSPORT_PROTO_TCP, 0, &is_filtered); SESSION_TEST ((tc != 0), "lookup 1.2.3.4 1234 5.6.7.8 4321 should be " "successful"); - sst = session_type_from_proto_and_ip (TRANSPORT_PROTO_TCP, 1); - s = listen_session_get (sst, tc->s_index); - SESSION_TEST ((s->app_index == server_index), "lookup should return the" - " server"); + s = listen_session_get (tc->s_index); + SESSION_TEST ((s->app_index == server_index), "lookup should return" + " the server"); tc = session_lookup_connection_wt4 (0, &rmt_ip, &rmt_ip, lcl_port, rmt_port, TRANSPORT_PROTO_TCP, 0, &is_filtered); @@ -1485,6 +1491,7 @@ session_test_proxy (vlib_main_t * vm, unformat_input_t * input) "local session endpoint lookup should not work after detach"); if (verbose) unformat_free (&tmp_input); + vec_free (attach_args.name); return 0; }