blob: d03c1058ae181127d5328ab9e2d386b5a7560cfa [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
Ole Troan9d420872017-10-12 13:06:35 +020017option version = "1.0.0";
Dave Barach0d056e52017-09-28 15:11:16 -040018
Ed Warnickecb9cada2015-12-08 15:45:58 -070019/*
Marek Gradzki51e59682018-03-06 10:05:44 +010020 * Define services not following the normal convetions here
21 */
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 */
32manual_print
33define memclnt_create {
34 i32 ctx_quota; /* requested punt context quota */
35 u32 context; /* opaque value to be returned in the reply */
36 u64 input_queue; /* client's queue */
37 u8 name[64]; /* for show, find by name, whatever */
38 u32 api_versions[8]; /* client-server pairs use as desired */
39};
40
41define memclnt_create_reply {
42 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 */
45 u32 context; /* opaque value from the create request */
Dave Barach557d1282016-11-10 14:22:49 -050046 u64 message_table; /* serialized message table in shmem */
Ed Warnickecb9cada2015-12-08 15:45:58 -070047};
48
49/*
50 * Delete a client registration
51 */
52manual_print
53define memclnt_delete {
54 u32 index; /* index, used e.g. by API trace replay */
55 u64 handle; /* handle by which vlib knows this client */
56};
57
58define memclnt_delete_reply {
59 i32 response; /* Non-negative = success */
60 u64 handle; /* in case the client wonders */
61};
62
Ole Troandfc9b7c2017-03-06 23:51:57 +010063/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070064 * Client RX thread exit
65 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070066define rx_thread_exit {
67 u8 dummy;
68};
69
70/*
Ole Troandfc9b7c2017-03-06 23:51:57 +010071 * Client RX thread suspend
72 */
73define memclnt_rx_thread_suspend {
74 u8 dummy;
75};
76
77/*
78 * Client read timeout
79 */
80define memclnt_read_timeout {
81 u8 dummy;
82};
83
84/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070085 * RPC
86 */
Dave Barach11b8dbf2017-04-24 10:46:54 -040087autoreply define rpc_call {
Ed Warnickecb9cada2015-12-08 15:45:58 -070088 u32 client_index;
89 u32 context;
90 u64 function;
91 u8 multicast;
92 u8 need_barrier_sync;
93 u8 send_reply;
94 u8 data[0];
95};
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;
103 u8 name[64];
104};
105
106define get_first_msg_id_reply {
107 u32 client_index;
108 u32 context;
109 i32 retval;
110 u16 first_msg_id;
111};
Dave Barach987e11d2017-02-27 13:10:27 -0500112
113/*
Dave Barach0d056e52017-09-28 15:11:16 -0400114 * Get API version table (includes built-in and plugins)
115 */
116typeonly define module_version {
117 u32 major;
118 u32 minor;
119 u32 patch;
120 u8 name[64];
121};
122define api_versions {
123 u32 client_index;
124 u32 context;
125};
126define api_versions_reply {
127 u32 client_index;
128 u32 context;
129 i32 retval;
130 u32 count;
131 vl_api_module_version_t api_versions[count];
132};
133
134/*
Dave Barach987e11d2017-02-27 13:10:27 -0500135 * Trace the plugin message-id allocator
136 * so we stand a chance of dealing with different sets of plugins
137 * at api trace replay time
138 */
139
140manual_print define trace_plugin_msg_ids
141{
142 u32 client_index;
143 u32 context;
144 u8 plugin_name[128];
145 u16 first_msg_id;
146 u16 last_msg_id;
147};
Dave Barach59b25652017-09-10 15:04:27 -0400148
149/*
150 * Create a socket client registration.
151 */
152define sockclnt_create {
153 u8 name[64]; /* for show, find by name, whatever */
154 u32 context; /* opaque value to be returned in the reply */
155};
156
157define sockclnt_create_reply {
158 i32 response; /* Non-negative = success */
159 u64 handle; /* handle by which vlib knows this client */
160 u32 index; /* index, used e.g. by API trace replay */
161 u32 context; /* opaque value from the create request */
162};
163
164/*
165 * Delete a client registration
166 */
167define sockclnt_delete {
168 u32 index; /* index, used e.g. by API trace replay */
169 u64 handle; /* handle by which vlib knows this client */
170};
171
172define sockclnt_delete_reply {
173 i32 response; /* Non-negative = success */
174 u64 handle; /* in case the client wonders */
175};
176
177/*
178 * Ask vpp for a memfd shared segment
179 */
180define memfd_segment_create {
181 u32 client_index;
182 u32 context;
183 u64 requested_size;
184};
185
186/*
187 * Reply
188 */
189define memfd_segment_create_reply
190{
191 u32 context;
192 i32 retval;
193 u32 master_fd;
194};
195
196/*
Florin Coras90a63982017-12-19 04:50:01 -0800197 * Initialize shm api over socket api
198 */
199define sock_init_shm {
200 u32 client_index;
201 u32 context;
202 u32 requested_size;
203 u8 nitems;
204 u64 configs[nitems];
205};
206
207define sock_init_shm_reply {
208 u32 client_index;
209 u32 context;
210 i32 retval;
211};
212
213/*
Dave Barach59b25652017-09-10 15:04:27 -0400214 * Memory client ping / response
215 * Only sent on inactive connections
216 */
217autoreply define memclnt_keepalive
218{
219 u32 client_index;
220 u32 context;
221};