diff options
author | Dave Barach <dave@barachs.net> | 2020-11-03 09:59:06 -0500 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2020-11-04 17:39:10 +0000 |
commit | 27d978c9136e903244113a7ab57acea4b496898e (patch) | |
tree | 1520252a663db663b0634633149e5f83a9c23f53 /src/vlib/main.h | |
parent | a210433d534fe0039ddc2a9aa9840895aef0405d (diff) |
vlib: add postmortem pcap dispatch trace
Inspired by a real-life conundrum: scenario X involves a vpp crash in
ip4-load-balance because vnet_buffer(b)->ip.adj_index[VLIB_TX] is
(still) set to ~0.
The problem takes most of a day to occur, and we need to see the
broken packet's graph trajectory, metadata, etc. to understand the
problem.
Fix a signed/unsigned ASSERT bug in vlib_get_trace_count().
Rename elog_post_mortem_dump() -> vlib_post_mortem_dump(), add
dispatch trace post-mortem dump.
Add FILTER_FLAG_POST_MORTEM so we can (putatively) capture a ludicrous
number of buffer traces, without actually using more than one dispatch
cycle's worth of memory.
Type: improvement
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: If093202ef071df46e290370bd9b33bf6560d30e6
Diffstat (limited to 'src/vlib/main.h')
-rw-r--r-- | src/vlib/main.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vlib/main.h b/src/vlib/main.h index c582bc12f4e..c420d5f9d28 100644 --- a/src/vlib/main.h +++ b/src/vlib/main.h @@ -197,6 +197,7 @@ typedef struct vlib_main_t /* Pcap dispatch trace main */ pcap_main_t dispatch_pcap_main; uword dispatch_pcap_enable; + uword dispatch_pcap_postmortem; u32 *dispatch_buffer_trace_nodes; u8 *pcap_buffer; @@ -483,6 +484,7 @@ typedef struct u8 *filename; int enable; int status; + int post_mortem; u32 packets_to_capture; u32 buffer_trace_node_index; u32 buffer_traces_to_capture; |