#include <vlib/vlib.h> /* for VLIB_N_RX_TX */
#include <vnet/pg/edit.h>
#include <vppinfra/fifo.h> /* for buffer_fifo */
-#include <vnet/unix/pcap.h>
+#include <vppinfra/pcap.h>
#include <vnet/interface.h>
extern vnet_device_class_t pg_dev_class;
u32 *buffer_fifo;
/* Buffer free list for this buffer index in stream. */
- u32 free_list_index;
+ vlib_buffer_free_list_index_t free_list_index;
} pg_buffer_index_t;
typedef struct pg_stream_t
pg_buffer_index_t *buffer_indices;
u8 **replay_packet_templates;
+ u64 *replay_packet_timestamps;
u32 current_replay_packet_index;
} pg_stream_t;
always_inline void
pg_stream_free (pg_stream_t * s)
{
+ int i;
pg_edit_group_t *g;
pg_edit_t *e;
vec_foreach (e, s->non_fixed_edits) pg_edit_free (e);
vec_free (s->fixed_packet_data);
vec_free (s->fixed_packet_data_mask);
vec_free (s->name);
+ for (i = 0; i < vec_len (s->replay_packet_templates); i++)
+ vec_free (s->replay_packet_templates[i]);
+ vec_free (s->replay_packet_templates);
+ vec_free (s->replay_packet_timestamps);
{
pg_buffer_index_t *bi;
pg_edit_group_t *g = pg_stream_get_group (s, i);
pg_edit_group_free (g);
- memset (g, 0, sizeof (g[0]));
+ clib_memset (g, 0, sizeof (g[0]));
_vec_len (s->edit_groups) = i;
}
clib_error_t *pg_capture (pg_capture_args_t * a);
+typedef struct
+{
+ vlib_buffer_t buffer;
+ u32 buffer_index;
+}
+pg_output_trace_t;
+
#endif /* included_vlib_pg_h */
/*