28 #if VLIB_BUFFER_TRACE_TRAJECTORY > 0 38 fformat (stderr,
"Context trace for bi %d b 0x%llx, visited %d\n",
41 for (i = 0; i <
vec_len (trace); i++)
45 node_index = trace[
i];
47 if (node_index >= vec_len (vnm->
nodes))
49 fformat (stderr,
"Skip bogus node index %d\n", node_index);
56 fformat (stderr,
"in vlib/buffers.h, " 57 "#define VLIB_BUFFER_TRACE_TRAJECTORY 1\n");
62 #if VLIB_BUFFER_TRACE_TRAJECTORY > 0 85 vlib_buffer_trace_trajectory_init_cb = init_trajectory_trace;
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
static vlib_cli_command_t trace
(constructor) VLIB_CLI_COMMAND (trace)
#define vec_add1(V, E)
Add 1 element to end of vector (unspecified alignment).
#define VLIB_INIT_FUNCTION(x)
void vnet_dump_trajectory_trace(vlib_main_t *vm, u32 bi)
Dump a trajectory trace, reasonably easy to call from gdb.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
vlib_node_main_t node_main
static void add_trajectory_trace(vlib_buffer_t *b, u32 node_index)
static uword clib_mem_is_vec(void *v)
Predicate function, says whether the supplied vector is a clib heap object.
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.