misc: add tracedump API plugin
[vpp.git] / src / plugins / tracedump / tracedump.api
1 /*
2  * tracedump.api - streaming packet trace dump API
3  *
4  * Copyright (c) 2020 Cisco and/or its affiliates
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 /**
19  * @file tracedump.api
20  * @brief VPP control-plane API messages.
21  *
22  * This file defines VPP control-plane binary API messages which are generally
23  * called through a shared memory interface.
24  */
25
26 /* Version and type recitations */
27
28 option version = "0.1.0";
29
30 service {
31     rpc trace_dump returns trace_dump_reply
32         stream trace_details;
33 };
34
35 define trace_dump {
36     /* Client identifier, set from api_main.my_client_index */
37     u32 client_index;
38
39     /* Arbitrary context, so client can match reply to request */
40     u32 context;
41
42     /* Dispose of any cached data before we begin */
43     u8 clear_cache;
44
45     /* iterator positions, both ~0 to just clear the cache */
46     u32 thread_id;
47     u32 position;
48
49     /* Max number of replies per burst */
50     u32 max_records;
51 };
52
53 define trace_dump_reply {
54     u32 context;
55     i32 retval;
56     u32 last_thread_id;
57     u32 last_position;
58     u8 more_this_thread;
59     u8 more_threads;
60     u8 flush_only;
61     u8 done;
62 };
63
64 define trace_details {
65     /* Client identifier, set from api_main.my_client_index */
66     u32 client_index;
67
68     /* Arbitrary context, so client can match reply to request */
69     u32 context;
70
71     /* Position in the cache of this record */
72     u32 thread_id;
73     u32 position;
74
75     /* More or not */
76     u8 more_this_thread;
77     u8 more_threads;
78     /* Needed when set ends in the middle of a batch */
79     u8 done;
80
81     string trace_data[];
82 };