X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbier%2Fbier_output.c;h=5c19103d6a3331ea865539fcd0b83bdfbb57d94d;hb=f2922422d972644e67d1ca989e40cd0100ecb06d;hp=01eeffe475c71d2d40d7593f9afbbab9376f37d7;hpb=31ed74407643595fdce206e9d7487108fb8b33ab;p=vpp.git diff --git a/src/vnet/bier/bier_output.c b/src/vnet/bier/bier_output.c index 01eeffe475c..5c19103d6a3 100644 --- a/src/vnet/bier/bier_output.c +++ b/src/vnet/bier/bier_output.c @@ -26,7 +26,7 @@ static char * bier_output_error_strings[] = { }; /* - * Keep these values sematically the same as BIER output + * Keep these values semantically the same as BIER output */ #define foreach_bier_output_next \ _(DROP, "bier-drop") @@ -49,14 +49,16 @@ typedef enum { * Forward declaration */ vlib_node_registration_t bier_output_node; +extern vlib_combined_counter_main_t bier_fmask_counters; /** - * @brief Packet trace recoed for a BIER output + * @brief Packet trace record for a BIER output */ typedef struct bier_output_trace_t_ { u32 next_index; index_t bfm_index; + mpls_label_t bfm_label; } bier_output_trace_t; static uword @@ -64,13 +66,14 @@ bier_output (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * from_frame) { + vlib_combined_counter_main_t *cm = &bier_fmask_counters; u32 n_left_from, next_index, * from, * to_next; + u32 thread_index; + thread_index = vm->thread_index; from = vlib_frame_vector_args (from_frame); n_left_from = from_frame->n_vectors; - // vnet_buffer(b0)->sw_if_index[VLIB_TX] = d0->tx_fib_index; - /* * objection your honour! speculation! */ @@ -106,12 +109,16 @@ bier_output (vlib_main_t * vm, bier_bit_string_init_from_hdr(bh0, &bbs); /* - * In the BIER Lookup node we squirelled away the + * In the BIER Lookup node we squirrelled away the * BIER fmask index as the adj index */ bfmi0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX]; bfm0 = bier_fmask_get(bfmi0); + vlib_increment_combined_counter( + cm, thread_index, bfmi0, 1, + vlib_buffer_length_in_chain (vm, b0)); + /* * perform the logical AND of the packet's mask with * that of the fmask objects, to reset the bits that @@ -157,6 +164,7 @@ bier_output (vlib_main_t * vm, tr = vlib_add_trace (vm, node, b0, sizeof (*tr)); tr->next_index = next0; tr->bfm_index = bfmi0; + tr->bfm_label = bfm0->bfm_label; } vlib_validate_buffer_enqueue_x1 (vm, node, next_index, @@ -180,8 +188,8 @@ format_bier_output_trace (u8 * s, va_list * args) CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *); bier_output_trace_t * t = va_arg (*args, bier_output_trace_t *); - s = format (s, " next [%d], BFM index %d", - t->next_index, t->bfm_index); + s = format (s, " next [%d], BFM index %d label:%x", + t->next_index, t->bfm_index, t->bfm_label); return s; }