54 tmp_t empty = { .next_node = ~0, .prev_node = ~0 };
59 "Name",
"Next",
"Previous");
71 tmps[j].next_slot =
i;
77 vec_validate_init_empty (tmps, j, empty);
78 tmps[j].prev_node = i;
82 for (i = 0; i <
vec_len (tmps); i++)
87 if (tmps[i].next_node != ~0)
93 t =
format (t,
"%v [%d]", x->
name, tmps[i].next_slot);
94 s =
format (s,
"%=26v", t);
98 s =
format (s,
"%26s",
"");
100 if (tmps[i].prev_node != ~0)
117 u32 next_index = va_arg (*va,
u32);
129 u32 node_index = va_arg (*va,
u32);
138 u32 node_index = va_arg (*va,
u32);
139 u32 next_index = va_arg (*va,
u32);
148 u32 * result = va_arg (*args,
u32 *);
157 f64 time = va_arg (*va,
f64);
158 return format (s,
"%12.4f", time);
164 u64 cpu_time = va_arg (*va,
u64);
sll srl srl sll sra u16x4 i
always_inline vlib_node_t * vlib_get_node(vlib_main_t *vm, u32 i)
#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)
unformat_function_t unformat_hash_vec_string
always_inline vlib_node_t * vlib_get_next_node(vlib_main_t *vm, u32 node_index, u32 next_index)
#define vec_free(V)
Free vector's memory (no header).
#define vec_elt(v, i)
Get vector value at index i.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
vlib_node_main_t node_main
#define VLIB_INVALID_NODE_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)