X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fudp%2Fudp_encap_node.c;h=e8e379440829d561943f970e8ef6d8709f0a137d;hb=c5df8c71c;hp=09a76b530f69248cfca45f569c4cf3c23237824e;hpb=810086d8fd08445919ae03bf36161037e53a712a;p=vpp.git diff --git a/src/vnet/udp/udp_encap_node.c b/src/vnet/udp/udp_encap_node.c index 09a76b530f6..e8e37944082 100644 --- a/src/vnet/udp/udp_encap_node.c +++ b/src/vnet/udp/udp_encap_node.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Cisco and/or its affiliates. + * Copyright (c) 2017-2019 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -27,6 +27,8 @@ typedef struct udp6_encap_trace_t_ ip6_header_t ip; } udp6_encap_trace_t; +extern vlib_combined_counter_main_t udp_encap_counters; + static u8 * format_udp4_encap_trace (u8 * s, va_list * args) { @@ -62,8 +64,10 @@ udp_encap_inline (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame, int is_encap_v6) { + vlib_combined_counter_main_t *cm = &udp_encap_counters; u32 *from = vlib_frame_vector_args (frame); u32 n_left_from, n_left_to_next, *to_next, next_index; + u32 thread_index = vm->thread_index; n_left_from = frame->n_vectors; next_index = node->cached_next_index; @@ -104,6 +108,13 @@ udp_encap_inline (vlib_main_t * vm, uei0 = vnet_buffer (b0)->ip.adj_index[VLIB_TX]; uei1 = vnet_buffer (b1)->ip.adj_index[VLIB_TX]; + vlib_increment_combined_counter (cm, thread_index, uei0, 1, + vlib_buffer_length_in_chain (vm, + b0)); + vlib_increment_combined_counter (cm, thread_index, uei1, 1, + vlib_buffer_length_in_chain (vm, + b1)); + /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); ue1 = udp_encap_get (uei1); @@ -185,6 +196,10 @@ udp_encap_inline (vlib_main_t * vm, /* Rewrite packet header and updates lengths. */ ue0 = udp_encap_get (uei0); + vlib_increment_combined_counter (cm, thread_index, uei0, 1, + vlib_buffer_length_in_chain (vm, + b0)); + /* Paint */ if (is_encap_v6) { @@ -232,23 +247,22 @@ udp_encap_inline (vlib_main_t * vm, return frame->n_vectors; } -static uword -udp4_encap (vlib_main_t * vm, - vlib_node_runtime_t * node, vlib_frame_t * frame) +VLIB_NODE_FN (udp4_encap_node) (vlib_main_t * vm, + vlib_node_runtime_t * node, + vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 0); } -static uword -udp6_encap (vlib_main_t * vm, - vlib_node_runtime_t * node, vlib_frame_t * frame) +VLIB_NODE_FN (udp6_encap_node) (vlib_main_t * vm, + vlib_node_runtime_t * node, + vlib_frame_t * frame) { return udp_encap_inline (vm, node, frame, 1); } /* *INDENT-OFF* */ VLIB_REGISTER_NODE (udp4_encap_node) = { - .function = udp4_encap, .name = "udp4-encap", .vector_size = sizeof (u32), @@ -256,10 +270,8 @@ VLIB_REGISTER_NODE (udp4_encap_node) = { .n_next_nodes = 0, }; -VLIB_NODE_FUNCTION_MULTIARCH (udp4_encap_node, udp4_encap); VLIB_REGISTER_NODE (udp6_encap_node) = { - .function = udp6_encap, .name = "udp6-encap", .vector_size = sizeof (u32), @@ -267,7 +279,6 @@ VLIB_REGISTER_NODE (udp6_encap_node) = { .n_next_nodes = 0, }; -VLIB_NODE_FUNCTION_MULTIARCH (udp6_encap_node, udp6_encap); /* *INDENT-ON* */