From b716308ca558e8fcc1297903bf78c1673af44154 Mon Sep 17 00:00:00 2001 From: Klement Sekera Date: Wed, 8 Nov 2017 04:13:49 +0100 Subject: punt: fix tracing for partially traced chains This fixes a crash if the first buffer in buffer chain is not traced, but some other buffer (mid-chain) is. Change-Id: I2c9f529ae0bc3263d20981e0cb83ce24ed292bd8 Signed-off-by: Klement Sekera --- src/vnet/ip/punt.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/vnet/ip/punt.c') diff --git a/src/vnet/ip/punt.c b/src/vnet/ip/punt.c index 6a8f4513a3c..db3ea332fbd 100644 --- a/src/vnet/ip/punt.c +++ b/src/vnet/ip/punt.c @@ -360,10 +360,7 @@ udp46_punt_socket_inline (vlib_main_t * vm, punt_client_t *c = NULL; if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED)) { - if (!c) - { - c = punt_client_get (is_ip4, port); - } + c = punt_client_get (is_ip4, port); udp_punt_trace_t *t; t = vlib_add_trace (vm, node, b, sizeof (t[0])); clib_memcpy (&t->client, c, sizeof (t->client)); @@ -393,6 +390,10 @@ udp46_punt_socket_inline (vlib_main_t * vm, b = vlib_get_buffer (vm, b->next_buffer); if (PREDICT_FALSE (b->flags & VLIB_BUFFER_IS_TRACED)) { + if (PREDICT_FALSE (!c)) + { + c = punt_client_get (is_ip4, port); + } udp_punt_trace_t *t; t = vlib_add_trace (vm, node, b, sizeof (t[0])); clib_memcpy (&t->client, c, sizeof (t->client)); -- cgit 1.2.3-korg