FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
trace.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
/*
16
* trace.h: VLIB trace buffer.
17
*
18
* Copyright (c) 2008 Eliot Dresselhaus
19
*
20
* Permission is hereby granted, free of charge, to any person obtaining
21
* a copy of this software and associated documentation files (the
22
* "Software"), to deal in the Software without restriction, including
23
* without limitation the rights to use, copy, modify, merge, publish,
24
* distribute, sublicense, and/or sell copies of the Software, and to
25
* permit persons to whom the Software is furnished to do so, subject to
26
* the following conditions:
27
*
28
* The above copyright notice and this permission notice shall be
29
* included in all copies or substantial portions of the Software.
30
*
31
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
35
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
36
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
37
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38
*/
39
40
#ifndef included_vlib_trace_h
41
#define included_vlib_trace_h
42
43
#include <
vppinfra/pool.h
>
44
45
typedef
struct
46
{
47
/* CPU time stamp trace was made. */
48
u64
time
;
49
50
/* Node which generated this trace. */
51
u32
node_index
;
52
53
/* Number of data words in this trace. */
54
u32
n_data
;
55
56
/* Trace data follows. */
57
u8
data
[0];
58
}
vlib_trace_header_t
;
59
60
typedef
struct
61
{
62
/* Current number of traces in buffer. */
63
u32
count
;
64
65
/* Max. number of traces to be added to buffer. */
66
u32
limit
;
67
}
vlib_trace_node_t
;
68
69
/* Callback type for post-processing the vlib trace buffer */
70
struct
vlib_main_t
;
71
struct
vlib_trace_main_t
;
72
typedef
void (
vlib_trace_buffer_callback_t
) (
struct
vlib_main_t
*,
73
struct
vlib_trace_main_t
*);
74
75
/* Callback type for alternate handling of vlib_add_trace internals */
76
struct
vlib_node_runtime_t
;
77
struct
vlib_buffer_t
;
78
typedef
void
*(
vlib_add_trace_callback_t
) (
struct
vlib_main_t
*,
79
struct
vlib_node_runtime_t
*
r
,
80
struct
vlib_buffer_t
*
b
,
81
u32
n_data_bytes);
82
83
typedef
struct
84
{
85
/* Pool of trace buffers. */
86
vlib_trace_header_t
**
trace_buffer_pool
;
87
88
u32
last_main_loop_count
;
89
u32
filter_node_index
;
90
u32
filter_flag
;
91
#define FILTER_FLAG_NONE 0
92
#define FILTER_FLAG_INCLUDE 1
93
#define FILTER_FLAG_EXCLUDE 2
94
#define FILTER_FLAG_POST_MORTEM 3
95
u32
filter_count
;
96
97
/* set on trace add, cleared on clear trace */
98
u32
trace_enable
;
99
100
/* Per node trace counts. */
101
vlib_trace_node_t
*
nodes
;
102
103
/* verbosity */
104
int
verbose
;
105
106
/* a callback to enable customized consumption of the trace buffer content */
107
vlib_trace_buffer_callback_t
*
trace_buffer_callback
;
108
109
/* a callback to enable customized addition of a new trace */
110
vlib_add_trace_callback_t
*
add_trace_callback
;
111
112
}
vlib_trace_main_t
;
113
114
format_function_t
format_vlib_trace
;
115
116
void
trace_apply_filter
(
struct
vlib_main_t
*
vm
);
117
int
trace_time_cmp
(
void
*a1,
void
*a2);
118
void
vlib_trace_stop_and_clear
(
void
);
119
int
vlib_enable_disable_pkt_trace_filter
(
int
enable) __attribute__ ((weak));
120
void
trace_update_capture_options
(
u32
add,
u32
node_index
,
121
u32
filter,
u8
verbose);
122
void
trace_filter_set
(
u32
node_index
,
u32
flag,
u32
count
);
123
void
clear_trace_buffer
(
void
);
124
125
#endif
/* included_vlib_trace_h */
126
127
/*
128
* fd.io coding-style-patch-verification: ON
129
*
130
* Local Variables:
131
* eval: (c-set-style "gnu")
132
* End:
133
*/
format_vlib_trace
format_function_t format_vlib_trace
Definition:
trace.h:114
trace_filter_set
void trace_filter_set(u32 node_index, u32 flag, u32 count)
Definition:
trace.c:528
vlib_trace_node_t::count
u32 count
Definition:
trace.h:63
vm
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
Definition:
nat44_ei.c:3047
node_index
node node_index
Definition:
interface_output.c:420
vlib_trace_node_t
Definition:
trace.h:60
vlib_trace_main_t::filter_count
u32 filter_count
Definition:
trace.h:95
vlib_enable_disable_pkt_trace_filter
int vlib_enable_disable_pkt_trace_filter(int enable)
Enable / disable packet trace filter.
Definition:
vnet_classify.c:2022
r
vnet_hw_if_output_node_runtime_t * r
Definition:
interface_output.c:1071
vlib_trace_header_t::n_data
u32 n_data
Definition:
trace.h:54
vlib_trace_main_t::filter_flag
u32 filter_flag
Definition:
trace.h:90
count
u8 count
Definition:
dhcp.api:208
pool.h
Fixed length block allocator. Pools are built from clib vectors and bitmaps. Use pools when repeatedl...
vlib_trace_main_t::trace_buffer_callback
vlib_trace_buffer_callback_t * trace_buffer_callback
Definition:
trace.h:107
data
u8 data[128]
Definition:
ipsec_types.api:92
vlib_trace_main_t::add_trace_callback
vlib_add_trace_callback_t * add_trace_callback
Definition:
trace.h:110
format_function_t
u8 *() format_function_t(u8 *s, va_list *args)
Definition:
format.h:48
vlib_trace_main_t::filter_node_index
u32 filter_node_index
Definition:
trace.h:89
clear_trace_buffer
void clear_trace_buffer(void)
Definition:
trace.c:115
u64
unsigned long u64
Definition:
types.h:89
vlib_trace_main_t::trace_buffer_pool
vlib_trace_header_t ** trace_buffer_pool
Definition:
trace.h:86
trace_apply_filter
void trace_apply_filter(struct vlib_main_t *vm)
Definition:
trace.c:240
u32
unsigned int u32
Definition:
types.h:88
trace_time_cmp
int trace_time_cmp(void *a1, void *a2)
Definition:
trace.c:184
vlib_trace_node_t::limit
u32 limit
Definition:
trace.h:66
vlib_trace_main_t::last_main_loop_count
u32 last_main_loop_count
Definition:
trace.h:88
vlib_trace_header_t::node_index
u32 node_index
Definition:
trace.h:51
vlib_trace_main_t::nodes
vlib_trace_node_t * nodes
Definition:
trace.h:101
vlib_add_trace_callback_t
void *() vlib_add_trace_callback_t(struct vlib_main_t *, struct vlib_node_runtime_t *r, struct vlib_buffer_t *b, u32 n_data_bytes)
Definition:
trace.h:78
vlib_trace_stop_and_clear
void vlib_trace_stop_and_clear(void)
Definition:
trace.c:377
vlib_main_t
Definition:
main.h:102
b
vlib_buffer_t ** b
Definition:
nat44_ei_out2in.c:717
u8
unsigned char u8
Definition:
types.h:56
vlib_trace_header_t
Definition:
trace.h:45
vlib_trace_main_t::verbose
int verbose
Definition:
trace.h:104
vlib_trace_header_t::time
u64 time
Definition:
trace.h:48
vlib_trace_buffer_callback_t
void() vlib_trace_buffer_callback_t(struct vlib_main_t *, struct vlib_trace_main_t *)
Definition:
trace.h:72
vlib_node_runtime_t
Definition:
node.h:454
trace_update_capture_options
void trace_update_capture_options(u32 add, u32 node_index, u32 filter, u8 verbose)
Definition:
trace.c:385
vlib_trace_main_t
Definition:
trace.h:83
vlib_trace_main_t::trace_enable
u32 trace_enable
Definition:
trace.h:98
vlib_buffer_t
VLIB buffer representation.
Definition:
buffer.h:111
src
vlib
trace.h
Generated on Sat Jan 8 2022 10:04:35 for FD.io VPP by
1.8.17