tls: enforce certificate verification
[vpp.git] / src / vnet / session-apps / echo_client.c
index b8a4fb3..5b70d49 100644 (file)
@@ -257,7 +257,10 @@ echo_client_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node,
              __sync_fetch_and_add (&ecm->ready_connections, -1);
            }
          else
-           clib_warning ("session AWOL?");
+           {
+             clib_warning ("session AWOL?");
+             vec_delete (connections_this_batch, 1, i);
+           }
 
          /* Kick the debug CLI process */
          if (ecm->ready_connections == 0)
@@ -407,7 +410,13 @@ echo_clients_session_disconnect_callback (stream_session_t * s)
 static int
 echo_clients_rx_callback (stream_session_t * s)
 {
-  clib_warning ("BUG");
+  return 0;
+}
+
+int
+echo_client_add_segment_callback (u32 client_index, const ssvm_private_t * sp)
+{
+  /* New heaps may be added */
   return 0;
 }
 
@@ -417,14 +426,15 @@ static session_cb_vft_t echo_clients = {
   .session_connected_callback = echo_clients_session_connected_callback,
   .session_accept_callback = echo_clients_session_create_callback,
   .session_disconnect_callback = echo_clients_session_disconnect_callback,
-  .builtin_server_rx_callback = echo_clients_rx_callback
+  .builtin_app_rx_callback = echo_clients_rx_callback,
+  .add_segment_callback = echo_client_add_segment_callback
 };
 /* *INDENT-ON* */
 
 static clib_error_t *
 echo_clients_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret)
 {
-  u32 prealloc_fifos, segment_size = 2 << 20;
+  u32 prealloc_fifos, segment_size = 256 << 20;
   echo_client_main_t *ecm = &echo_client_main;
   vnet_app_attach_args_t _a, *a = &_a;
   u64 options[16];
@@ -443,6 +453,7 @@ echo_clients_attach (u8 * appns_id, u64 appns_flags, u64 appns_secret)
 
   options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678;
   options[APP_OPTIONS_SEGMENT_SIZE] = segment_size;
+  options[APP_OPTIONS_ADD_SEGMENT_SIZE] = segment_size;
   options[APP_OPTIONS_RX_FIFO_SIZE] = ecm->fifo_size;
   options[APP_OPTIONS_TX_FIFO_SIZE] = ecm->fifo_size;
   options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = ecm->private_segment_count;
@@ -509,14 +520,13 @@ echo_clients_connect (vlib_main_t * vm, u32 n_clients)
   vnet_connect_args_t _a, *a = &_a;
   clib_error_t *error = 0;
   int i;
+
+  memset (a, 0, sizeof (*a));
   for (i = 0; i < n_clients; i++)
     {
-      memset (a, 0, sizeof (*a));
-
       a->uri = (char *) ecm->connect_uri;
       a->api_context = i;
       a->app_index = ecm->app_index;
-      a->mp = 0;
 
       if ((error = vnet_connect_uri (a)))
        return error;
@@ -543,15 +553,16 @@ echo_clients_command_fn (vlib_main_t * vm,
 {
   echo_client_main_t *ecm = &echo_client_main;
   vlib_thread_main_t *thread_main = vlib_get_thread_main ();
-  uword *event_data = 0, event_type;
-  u8 *default_uri = (u8 *) "tcp://6.0.1.1/1234", *appns_id = 0;
   u64 tmp, total_bytes, appns_flags = 0, appns_secret = 0;
   f64 test_timeout = 20.0, syn_timeout = 20.0, delta;
+  char *default_uri = "tcp://6.0.1.1/1234";
+  uword *event_data = 0, event_type;
   f64 time_before_connects;
   u32 n_clients = 1;
   int preallocate_sessions = 0;
   char *transfer_type;
   clib_error_t *error = 0;
+  u8 *appns_id = 0;
   int i;
 
   ecm->bytes_to_send = 8192;
@@ -622,7 +633,7 @@ echo_clients_command_fn (vlib_main_t * vm,
       else if (unformat (input, "test-bytes"))
        ecm->test_bytes = 1;
       else
-       return clib_error_return (0, "unknown input `%U'",
+       return clib_error_return (0, "failed: unknown input `%U'",
                                  format_unformat_error, input);
     }
 
@@ -644,8 +655,8 @@ echo_clients_command_fn (vlib_main_t * vm,
 
   if (!ecm->connect_uri)
     {
-      clib_warning ("No uri provided. Using default: %v", default_uri);
-      ecm->connect_uri = default_uri;
+      clib_warning ("No uri provided. Using default: %s", default_uri);
+      ecm->connect_uri = format (0, "%s%c", default_uri, 0);
     }
 
 #if ECHO_CLIENT_PTHREAD
@@ -785,6 +796,7 @@ cleanup:
     }
   if (error)
     ec_cli_output ("test failed");
+  vec_free (ecm->connect_uri);
   return error;
 }