From 4e323cbdbd57fcd77db68e295f639288441ef3e3 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Tue, 17 Sep 2019 17:30:35 +0200 Subject: interface: fix pcap drop trace in case of vlan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Type: fix Change-Id: If3c4e5c376b51a26143d8922dcacfbda534163bd Signed-off-by: Benoît Ganne --- src/vnet/interface_output.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/vnet/interface_output.c') diff --git a/src/vnet/interface_output.c b/src/vnet/interface_output.c index e1c66ec4989..f51e9a1f27d 100644 --- a/src/vnet/interface_output.c +++ b/src/vnet/interface_output.c @@ -1192,8 +1192,19 @@ pcap_drop_trace (vlib_main_t * vm, /* * Typically, we'll need to rewind the buffer + * if l2_hdr_offset is valid, make sure to rewind to the start of + * the L2 header. This may not be the buffer start in case we pop-ed + * vlan tags. + * Otherwise, rewind to buffer start and hope for the best. */ - if (b0->current_data > 0) + if (b0->flags & VNET_BUFFER_F_L2_HDR_OFFSET_VALID) + { + if (b0->current_data > vnet_buffer (b0)->l2_hdr_offset) + vlib_buffer_advance (b0, + vnet_buffer (b0)->l2_hdr_offset - + b0->current_data); + } + else if (b0->current_data > 0) vlib_buffer_advance (b0, (word) - b0->current_data); pcap_add_buffer (&im->pcap_main, vm, bi0, 512); -- cgit 1.2.3-korg