packet-generator: fix pcap stream support 27/1927/2
authorDamjan Marion <damarion@cisco.com>
Fri, 8 Jul 2016 20:08:16 +0000 (22:08 +0200)
committerChris Luke <chris_luke@comcast.com>
Sat, 9 Jul 2016 00:54:52 +0000 (00:54 +0000)
Change-Id: I494280964deda1d9448540cb5c6e7a8b750fff93
Signed-off-by: Damjan Marion <damarion@cisco.com>
vnet/vnet/pg/cli.c
vnet/vnet/pg/stream.c

index 428a3b6..201e4fb 100644 (file)
@@ -182,6 +182,10 @@ pg_pcap_read (pg_stream_t * s, char * file_name)
   s->buffer_bytes = pm.max_packet_bytes;
   /* For PCAP buffers we never re-use buffers. */
   s->flags |= PG_STREAM_FLAGS_DISABLE_BUFFER_RECYCLE;
+
+  if (s->n_packets_limit == 0)
+    s->n_packets_limit = vec_len (pm.packets_read);
+
   return error;
 #endif /* CLIB_UNIX */
 }
@@ -314,8 +318,16 @@ new_stream (vlib_main_t * vm,
 
   if (s.node_index == ~0)
     {
-      error = clib_error_create ("output interface or node not given");
-      goto done;
+      if (pcap_file_name != 0)
+       {
+         vlib_node_t * n = vlib_get_node_by_name(vm, (u8 *) "ethernet-input");
+         s.node_index = n->index;
+       }
+      else
+       {
+         error = clib_error_create ("output interface or node not given");
+         goto done;
+       }
     }
 
   {
@@ -368,7 +380,8 @@ VLIB_CLI_COMMAND (new_stream_cli, static) = {
   "name STRING          sets stream name\n"
   "interface STRING     interface for stream output \n"
   "node NODE-NAME       node for stream output\n"
-  "data STRING          specifies packet data\n",
+  "data STRING          specifies packet data\n"
+  "pcap FILENAME        read packet data from pcap file\n",
 };
 
 static clib_error_t *
index 5883817..769fce1 100644 (file)
@@ -369,7 +369,8 @@ void pg_stream_add (pg_main_t * pg, pg_stream_t * s_init)
   hash_set_mem (pg->stream_index_by_name, s->name, s - pg->streams);
 
   /* Get fixed part of buffer data. */
-  perform_fixed_edits (s);
+  if (s->edit_groups)
+    perform_fixed_edits (s);
 
   /* Determine packet size. */
   switch (s->packet_size_edit_type)