X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fpunt_node.c;h=0306d597293651ae7c25cbd9c2bce8f5a79f8871;hb=1adc7e78ad3eb7e800d0ce3ace56f53ab7aebffe;hp=65237aaaa0ed1aa3e7ad5c6118b2369213379414;hpb=39040a619af4e8750349edba2e93eecb8ce4538b;p=vpp.git diff --git a/src/vnet/ip/punt_node.c b/src/vnet/ip/punt_node.c index 65237aaaa0e..0306d597293 100644 --- a/src/vnet/ip/punt_node.c +++ b/src/vnet/ip/punt_node.c @@ -223,6 +223,7 @@ typedef struct { punt_client_t client; u8 is_midchain; + u8 packet_data[64]; } udp_punt_trace_t; static u8 * @@ -238,6 +239,9 @@ format_udp_punt_trace (u8 * s, va_list * args) s = format (s, "\n%U(buffer is part of chain)", format_white_space, indent); } + s = format (s, "\n%U%U", format_white_space, indent, + format_hex_bytes, t->packet_data, sizeof (t->packet_data)); + return s; } @@ -327,13 +331,6 @@ punt_socket_inline (vlib_main_t * vm, struct sockaddr_un *caddr = &c->caddr; - if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED)) - { - udp_punt_trace_t *t; - t = vlib_add_trace (vm, node, b, sizeof (t[0])); - clib_memcpy_fast (&t->client, c, sizeof (t->client)); - } - /* Re-set iovecs */ vec_reset_length (ptd->iovecs); @@ -350,6 +347,16 @@ punt_socket_inline (vlib_main_t * vm, iov->iov_base = b->data + b->current_data; iov->iov_len = l = b->current_length; + if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED)) + { + udp_punt_trace_t *t; + t = vlib_add_trace (vm, node, b, sizeof (t[0])); + clib_memcpy_fast (&t->client, c, sizeof (t->client)); + clib_memcpy_fast (t->packet_data, + vlib_buffer_get_current (b), + sizeof (t->packet_data)); + } + if (PREDICT_FALSE (b->flags & VLIB_BUFFER_NEXT_PRESENT)) { do @@ -589,6 +596,7 @@ punt_socket_rx_fd (vlib_main_t * vm, vlib_node_runtime_t * node, u32 fd) return 1; error: + vlib_put_next_frame (vm, node, next, n_left_to_next); vlib_node_increment_counter (vm, punt_socket_rx_node.index, error, 1); return 0; } @@ -614,6 +622,7 @@ VLIB_REGISTER_NODE (punt_socket_rx_node) = { .function = punt_socket_rx, .name = "punt-socket-rx", + .flags = VLIB_NODE_FLAG_TRACE_SUPPORTED, .type = VLIB_NODE_TYPE_INPUT, .state = VLIB_NODE_STATE_INTERRUPT, .vector_size = 1,