56 tmp_t empty = {.next_node = ~0,.prev_node = ~0 };
59 return format (s,
"%=26s%=26s%=26s",
"Name",
"Next",
"Previous");
71 tmps[j].next_slot =
i;
78 vec_validate_init_empty (tmps, j, empty);
79 tmps[j].prev_node = i;
84 for (i = 0; i <
vec_len (tmps); i++)
89 if (tmps[i].next_node != ~0)
95 t =
format (t,
"%v [%d]", x->
name, tmps[i].next_slot);
96 s =
format (s,
"%=26v", t);
100 s =
format (s,
"%26s",
"");
102 if (tmps[i].prev_node != ~0)
120 u32 next_index = va_arg (*va,
u32);
133 u32 node_index = va_arg (*va,
u32);
143 u32 node_index = va_arg (*va,
u32);
144 u32 next_index = va_arg (*va,
u32);
154 u32 *result = va_arg (*args,
u32 *);
164 f64 time = va_arg (*va,
f64);
165 return format (s,
"%12.4f", time);
172 u64 cpu_time = va_arg (*va,
u64);
#define VLIB_INVALID_NODE_INDEX
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
#define clib_bitmap_foreach(i, ai, body)
Macro to iterate across set bits in a bitmap.
unformat_function_t unformat_hash_vec_string
sll srl srl sll sra u16x4 i
#define vec_free(V)
Free vector's memory (no header).
#define vec_elt(v, i)
Get vector value at index i.
static vlib_node_t * vlib_get_next_node(vlib_main_t *vm, u32 node_index, u32 next_index)
Get vlib node by graph arc (next) index.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
vlib_node_main_t node_main
static vlib_node_t * vlib_get_node(vlib_main_t *vm, u32 i)
Get vlib node by index.
#define vec_validate_init_empty(V, I, INIT)
Make sure vector is long enough for given index and initialize empty space (no header, unspecified alignment)