blob: 0532f1734bf30cafc22186d2ead91707ffa86045 [file] [log] [blame]
Ed Warnickecb9cada2015-12-08 15:45:58 -07001/* 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
Florin Coraseaec2a62018-12-04 16:34:05 -080017option version = "2.1.0";
Dave Barach0d056e52017-09-28 15:11:16 -040018
Ed Warnickecb9cada2015-12-08 15:45:58 -070019/*
Ole Troan94495f22018-08-02 11:58:12 +020020 * Define services not following the normal conventions here
Marek Gradzki51e59682018-03-06 10:05:44 +010021 */
22service {
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/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070030 * Create a client registration
31 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070032define memclnt_create {
Ed Warnickecb9cada2015-12-08 15:45:58 -070033 u32 context; /* opaque value to be returned in the reply */
Klement Sekeradab732a2018-07-04 13:43:46 +020034 i32 ctx_quota; /* requested punt context quota */
Ed Warnickecb9cada2015-12-08 15:45:58 -070035 u64 input_queue; /* client's queue */
Ole Troandaa4bff2019-08-28 14:12:02 +020036 string name[64]; /* for show, find by name, whatever */
Ed Warnickecb9cada2015-12-08 15:45:58 -070037 u32 api_versions[8]; /* client-server pairs use as desired */
38};
39
40define memclnt_create_reply {
Klement Sekeradab732a2018-07-04 13:43:46 +020041 u32 context; /* opaque value from the create request */
Ed Warnickecb9cada2015-12-08 15:45:58 -070042 i32 response; /* Non-negative = success */
Dave Barach557d1282016-11-10 14:22:49 -050043 u64 handle; /* handle by which vlib knows this client */
Ed Warnickecb9cada2015-12-08 15:45:58 -070044 u32 index; /* index, used e.g. by API trace replay */
Dave Barach557d1282016-11-10 14:22:49 -050045 u64 message_table; /* serialized message table in shmem */
Ed Warnickecb9cada2015-12-08 15:45:58 -070046};
47
48/*
49 * Delete a client registration
50 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070051define memclnt_delete {
52 u32 index; /* index, used e.g. by API trace replay */
53 u64 handle; /* handle by which vlib knows this client */
Ole Troan8e388392019-12-06 15:06:49 +010054 bool do_cleanup; /* vlib to cleanup the registration */
Ed Warnickecb9cada2015-12-08 15:45:58 -070055};
56
57define memclnt_delete_reply {
58 i32 response; /* Non-negative = success */
59 u64 handle; /* in case the client wonders */
60};
61
Ole Troandfc9b7c2017-03-06 23:51:57 +010062/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070063 * Client RX thread exit
64 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070065define rx_thread_exit {
66 u8 dummy;
67};
68
69/*
Ole Troandfc9b7c2017-03-06 23:51:57 +010070 * Client RX thread suspend
71 */
72define memclnt_rx_thread_suspend {
73 u8 dummy;
74};
75
76/*
77 * Client read timeout
78 */
79define memclnt_read_timeout {
80 u8 dummy;
81};
82
83/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070084 * RPC
85 */
Dave Barach11b8dbf2017-04-24 10:46:54 -040086autoreply define rpc_call {
Ed Warnickecb9cada2015-12-08 15:45:58 -070087 u32 client_index;
88 u32 context;
89 u64 function;
90 u8 multicast;
91 u8 need_barrier_sync;
92 u8 send_reply;
Juraj Sloboda75282452018-06-12 14:20:49 +020093 u32 data_len;
94 u8 data[data_len];
Ed Warnickecb9cada2015-12-08 15:45:58 -070095};
96
Ed Warnickecb9cada2015-12-08 15:45:58 -070097/*
98 * Lookup message-ID base by name
99 */
100define get_first_msg_id {
101 u32 client_index;
102 u32 context;
Ole Troandaa4bff2019-08-28 14:12:02 +0200103 string name[64];
Ed Warnickecb9cada2015-12-08 15:45:58 -0700104};
105
106define get_first_msg_id_reply {
Ed Warnickecb9cada2015-12-08 15:45:58 -0700107 u32 context;
108 i32 retval;
109 u16 first_msg_id;
110};
Dave Barach987e11d2017-02-27 13:10:27 -0500111
112/*
Dave Barach0d056e52017-09-28 15:11:16 -0400113 * Get API version table (includes built-in and plugins)
114 */
Paul Vinciguerrae7174822019-08-07 00:05:59 -0400115typedef module_version {
Dave Barach0d056e52017-09-28 15:11:16 -0400116 u32 major;
117 u32 minor;
118 u32 patch;
Ole Troandaa4bff2019-08-28 14:12:02 +0200119 string name[64];
Dave Barach0d056e52017-09-28 15:11:16 -0400120};
121define api_versions {
122 u32 client_index;
123 u32 context;
124};
125define api_versions_reply {
Dave Barach0d056e52017-09-28 15:11:16 -0400126 u32 context;
127 i32 retval;
128 u32 count;
129 vl_api_module_version_t api_versions[count];
130};
131
132/*
Dave Barach987e11d2017-02-27 13:10:27 -0500133 * 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
Filip Tehlar36217e32021-07-23 08:51:10 +0000138define trace_plugin_msg_ids
Dave Barach987e11d2017-02-27 13:10:27 -0500139{
140 u32 client_index;
141 u32 context;
Ole Troandaa4bff2019-08-28 14:12:02 +0200142 string plugin_name[128];
Dave Barach987e11d2017-02-27 13:10:27 -0500143 u16 first_msg_id;
144 u16 last_msg_id;
145};
Dave Barach59b25652017-09-10 15:04:27 -0400146
Ole Troan94495f22018-08-02 11:58:12 +0200147typedef message_table_entry
148{
149 u16 index;
Ole Troandaa4bff2019-08-28 14:12:02 +0200150 string name[64];
Ole Troan94495f22018-08-02 11:58:12 +0200151};
152
Dave Barach59b25652017-09-10 15:04:27 -0400153/*
154 * Create a socket client registration.
155 */
156define sockclnt_create {
Dave Barach59b25652017-09-10 15:04:27 -0400157 u32 context; /* opaque value to be returned in the reply */
Ole Troandaa4bff2019-08-28 14:12:02 +0200158 string name[64]; /* for show, find by name, whatever */
Dave Barach59b25652017-09-10 15:04:27 -0400159};
160
161define sockclnt_create_reply {
Ole Troan94495f22018-08-02 11:58:12 +0200162 u32 client_index;
Klement Sekeradab732a2018-07-04 13:43:46 +0200163 u32 context; /* opaque value from the create request */
Dave Barach59b25652017-09-10 15:04:27 -0400164 i32 response; /* Non-negative = success */
Dave Barach59b25652017-09-10 15:04:27 -0400165 u32 index; /* index, used e.g. by API trace replay */
Ole Troan94495f22018-08-02 11:58:12 +0200166 u16 count;
167 vl_api_message_table_entry_t message_table[count];
Dave Barach59b25652017-09-10 15:04:27 -0400168};
169
170/*
171 * Delete a client registration
172 */
173define sockclnt_delete {
Ole Troan94495f22018-08-02 11:58:12 +0200174 u32 client_index;
175 u32 context;
Dave Barach59b25652017-09-10 15:04:27 -0400176 u32 index; /* index, used e.g. by API trace replay */
Dave Barach59b25652017-09-10 15:04:27 -0400177};
178
179define sockclnt_delete_reply {
Ole Troan94495f22018-08-02 11:58:12 +0200180 u32 context;
Dave Barach59b25652017-09-10 15:04:27 -0400181 i32 response; /* Non-negative = success */
Dave Barach59b25652017-09-10 15:04:27 -0400182};
183
184/*
Florin Coras90a63982017-12-19 04:50:01 -0800185 * Initialize shm api over socket api
186 */
Dave Barach78958722018-05-10 16:44:27 -0400187autoreply define sock_init_shm {
Florin Coras90a63982017-12-19 04:50:01 -0800188 u32 client_index;
189 u32 context;
190 u32 requested_size;
191 u8 nitems;
192 u64 configs[nitems];
193};
194
Dave Barach78958722018-05-10 16:44:27 -0400195/* define sock_init_shm_reply {
Florin Coras90a63982017-12-19 04:50:01 -0800196 u32 client_index;
197 u32 context;
198 i32 retval;
Dave Barach78958722018-05-10 16:44:27 -0400199}; */
Florin Coras90a63982017-12-19 04:50:01 -0800200
201/*
Dave Barach59b25652017-09-10 15:04:27 -0400202 * Memory client ping / response
203 * Only sent on inactive connections
204 */
205autoreply define memclnt_keepalive
206{
207 u32 client_index;
208 u32 context;
209};
Filip Tehlarf0e67d72021-07-23 22:03:05 +0000210
211/** \brief Control ping from client to api server request
212 @param client_index - opaque cookie to identify the sender
213 @param context - sender context, to match reply w/ request
214*/
215define control_ping
216{
217 u32 client_index;
218 u32 context;
219};
220
221/** \brief Control ping from the client to the server response
222 @param client_index - opaque cookie to identify the sender
223 @param context - sender context, to match reply w/ request
224 @param retval - return code for the request
225 @param vpe_pid - the pid of the vpe, returned by the server
226*/
227define control_ping_reply
228{
229 u32 context;
230 i32 retval;
231 u32 client_index;
232 u32 vpe_pid;
233};
234
Ole Troan2ca88ff2022-01-27 16:25:43 +0100235define memclnt_create_v2 {
236 u32 context; /* opaque value to be returned in the reply */
237 i32 ctx_quota; /* requested punt context quota */
238 u64 input_queue; /* client's queue */
239 string name[64]; /* for show, find by name, whatever */
240 u32 api_versions[8]; /* client-server pairs use as desired */
241 bool keepalive[default=true]; /* dead client scan keepalives */
242};
243
244define memclnt_create_v2_reply {
245 u32 context; /* opaque value from the create request */
246 i32 response; /* Non-negative = success */
247 u64 handle; /* handle by which vlib knows this client */
248 u32 index; /* index, used e.g. by API trace replay */
249 u64 message_table; /* serialized message table in shmem */
250};