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 */
}
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;
+ }
}
{
"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 *
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)