api: API trace improvements
[vpp.git] / src / vlibmemory / memclnt.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2015 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 option version = "2.1.0";
18
19 /*
20  * Define services not following the normal conventions here
21  */
22 service {
23   rpc memclnt_rx_thread_suspend returns null;
24   rpc memclnt_read_timeout returns null;
25   rpc rx_thread_exit returns null;
26   rpc trace_plugin_msg_ids returns null;
27 };
28
29 /*
30  * Create a client registration 
31  */
32 define memclnt_create {
33     u32 context;                /* opaque value to be returned in the reply */
34     i32 ctx_quota;              /* requested punt context quota */
35     u64 input_queue;            /* client's queue */
36     string name[64];            /* for show, find by name, whatever */
37     u32 api_versions[8];        /* client-server pairs use as desired */
38 };
39
40 define memclnt_create_reply {
41     u32 context;                /* opaque value from the create request */
42     i32 response;               /* Non-negative = success */
43     u64 handle;                 /* handle by which vlib knows this client */
44     u32 index;                  /* index, used e.g. by API trace replay */
45     u64 message_table;          /* serialized message table in shmem */
46 };
47
48 /*
49  * Delete a client registration 
50  */
51 define memclnt_delete {
52     u32 index;                  /* index, used e.g. by API trace replay */
53     u64 handle;               /* handle by which vlib knows this client */
54     bool do_cleanup;            /* vlib to cleanup the registration */
55 };
56
57 define memclnt_delete_reply {
58     i32 response;               /* Non-negative = success */
59     u64 handle;               /* in case the client wonders */
60 };
61
62 /*
63  * Client RX thread exit
64  */
65 define rx_thread_exit {
66     u8 dummy;
67 };
68
69 /*
70  * Client RX thread suspend
71  */
72 define memclnt_rx_thread_suspend {
73     u8 dummy;
74 };
75
76 /*
77  * Client read timeout
78  */
79 define memclnt_read_timeout {
80     u8 dummy;
81 };
82
83 /*
84  * RPC
85  */
86 autoreply define rpc_call {
87     u32 client_index;
88     u32 context;
89     u64 function;
90     u8 multicast;
91     u8 need_barrier_sync;
92     u8 send_reply;
93     u32 data_len;
94     u8 data[data_len];
95 };
96
97 /*
98  * Lookup message-ID base by name
99  */
100 define get_first_msg_id {
101     u32 client_index;
102     u32 context;
103     string name[64];
104 };
105
106 define get_first_msg_id_reply {
107     u32 context;
108     i32 retval;
109     u16 first_msg_id;
110 };
111
112 /*
113  * Get API version table (includes built-in and plugins)
114  */
115 typedef module_version {
116   u32 major;
117   u32 minor;
118   u32 patch;
119   string name[64];
120 };
121 define api_versions {
122   u32 client_index;
123   u32 context;
124 };
125 define api_versions_reply {
126   u32 context;
127   i32 retval;
128   u32 count;
129   vl_api_module_version_t api_versions[count];
130 };
131
132 /*
133  * Trace the plugin message-id allocator
134  * so we stand a chance of dealing with different sets of plugins
135  * at api trace replay time
136  */
137
138 define trace_plugin_msg_ids
139 {
140     u32 client_index;
141     u32 context;
142     string plugin_name[128];
143     u16 first_msg_id;
144     u16 last_msg_id;
145 };
146
147 typedef message_table_entry
148 {
149   u16 index;
150   string name[64];
151 };
152
153 /*
154  * Create a socket client registration. 
155  */
156 define sockclnt_create {
157     u32 context;                /* opaque value to be returned in the reply */
158     string name[64];                /* for show, find by name, whatever */
159 };
160
161 define sockclnt_create_reply {
162     u32 client_index;
163     u32 context;                /* opaque value from the create request */
164     i32 response;               /* Non-negative = success */
165     u32 index;                  /* index, used e.g. by API trace replay */
166     u16 count;
167     vl_api_message_table_entry_t message_table[count];
168 };
169
170 /*
171  * Delete a client registration 
172  */
173 define sockclnt_delete {
174     u32 client_index;
175     u32 context;
176     u32 index;                  /* index, used e.g. by API trace replay */
177 };
178
179 define sockclnt_delete_reply {
180     u32 context;
181     i32 response;               /* Non-negative = success */
182 };
183
184 /*
185  * Initialize shm api over socket api
186  */
187 autoreply define sock_init_shm {
188     u32 client_index;
189     u32 context;
190     u32 requested_size;
191     u8 nitems;
192     u64 configs[nitems];
193 };
194
195 /* define sock_init_shm_reply {
196     u32 client_index;
197     u32 context;
198     i32 retval;
199 }; */
200
201 /*
202  * Memory client ping / response
203  * Only sent on inactive connections
204  */
205 autoreply define memclnt_keepalive
206 {
207   u32 client_index;
208   u32 context;
209 };