blob: fb08f5120ee0666b242751a98e10d18fa0076f97 [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/*
20 * Create a client registration
21 */
22manual_print
23define memclnt_create {
24 i32 ctx_quota; /* requested punt context quota */
25 u32 context; /* opaque value to be returned in the reply */
26 u64 input_queue; /* client's queue */
27 u8 name[64]; /* for show, find by name, whatever */
28 u32 api_versions[8]; /* client-server pairs use as desired */
29};
30
31define memclnt_create_reply {
32 i32 response; /* Non-negative = success */
Dave Barach557d1282016-11-10 14:22:49 -050033 u64 handle; /* handle by which vlib knows this client */
Ed Warnickecb9cada2015-12-08 15:45:58 -070034 u32 index; /* index, used e.g. by API trace replay */
35 u32 context; /* opaque value from the create request */
Dave Barach557d1282016-11-10 14:22:49 -050036 u64 message_table; /* serialized message table in shmem */
Ed Warnickecb9cada2015-12-08 15:45:58 -070037};
38
39/*
40 * Delete a client registration
41 */
42manual_print
43define memclnt_delete {
44 u32 index; /* index, used e.g. by API trace replay */
45 u64 handle; /* handle by which vlib knows this client */
46};
47
48define memclnt_delete_reply {
49 i32 response; /* Non-negative = success */
50 u64 handle; /* in case the client wonders */
51};
52
Ole Troandfc9b7c2017-03-06 23:51:57 +010053/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070054 * Client RX thread exit
55 */
Ed Warnickecb9cada2015-12-08 15:45:58 -070056define rx_thread_exit {
57 u8 dummy;
58};
59
60/*
Ole Troandfc9b7c2017-03-06 23:51:57 +010061 * Client RX thread suspend
62 */
63define memclnt_rx_thread_suspend {
64 u8 dummy;
65};
66
67/*
68 * Client read timeout
69 */
70define memclnt_read_timeout {
71 u8 dummy;
72};
73
74/*
Ed Warnickecb9cada2015-12-08 15:45:58 -070075 * RPC
76 */
Dave Barach11b8dbf2017-04-24 10:46:54 -040077autoreply define rpc_call {
Ed Warnickecb9cada2015-12-08 15:45:58 -070078 u32 client_index;
79 u32 context;
80 u64 function;
81 u8 multicast;
82 u8 need_barrier_sync;
83 u8 send_reply;
84 u8 data[0];
85};
86
Ed Warnickecb9cada2015-12-08 15:45:58 -070087/*
88 * Lookup message-ID base by name
89 */
90define get_first_msg_id {
91 u32 client_index;
92 u32 context;
93 u8 name[64];
94};
95
96define get_first_msg_id_reply {
97 u32 client_index;
98 u32 context;
99 i32 retval;
100 u16 first_msg_id;
101};
Dave Barach987e11d2017-02-27 13:10:27 -0500102
103/*
Dave Barach0d056e52017-09-28 15:11:16 -0400104 * Get API version table (includes built-in and plugins)
105 */
106typeonly define module_version {
107 u32 major;
108 u32 minor;
109 u32 patch;
110 u8 name[64];
111};
112define api_versions {
113 u32 client_index;
114 u32 context;
115};
116define api_versions_reply {
117 u32 client_index;
118 u32 context;
119 i32 retval;
120 u32 count;
121 vl_api_module_version_t api_versions[count];
122};
123
124/*
Dave Barach987e11d2017-02-27 13:10:27 -0500125 * Trace the plugin message-id allocator
126 * so we stand a chance of dealing with different sets of plugins
127 * at api trace replay time
128 */
129
130manual_print define trace_plugin_msg_ids
131{
132 u32 client_index;
133 u32 context;
134 u8 plugin_name[128];
135 u16 first_msg_id;
136 u16 last_msg_id;
137};
Dave Barach59b25652017-09-10 15:04:27 -0400138
139/*
140 * Create a socket client registration.
141 */
142define sockclnt_create {
143 u8 name[64]; /* for show, find by name, whatever */
144 u32 context; /* opaque value to be returned in the reply */
145};
146
147define sockclnt_create_reply {
148 i32 response; /* Non-negative = success */
149 u64 handle; /* handle by which vlib knows this client */
150 u32 index; /* index, used e.g. by API trace replay */
151 u32 context; /* opaque value from the create request */
152};
153
154/*
155 * Delete a client registration
156 */
157define sockclnt_delete {
158 u32 index; /* index, used e.g. by API trace replay */
159 u64 handle; /* handle by which vlib knows this client */
160};
161
162define sockclnt_delete_reply {
163 i32 response; /* Non-negative = success */
164 u64 handle; /* in case the client wonders */
165};
166
167/*
168 * Ask vpp for a memfd shared segment
169 */
170define memfd_segment_create {
171 u32 client_index;
172 u32 context;
173 u64 requested_size;
174};
175
176/*
177 * Reply
178 */
179define memfd_segment_create_reply
180{
181 u32 context;
182 i32 retval;
183 u32 master_fd;
184};
185
186/*
Florin Coras90a63982017-12-19 04:50:01 -0800187 * Initialize shm api over socket api
188 */
189define sock_init_shm {
190 u32 client_index;
191 u32 context;
192 u32 requested_size;
193 u8 nitems;
194 u64 configs[nitems];
195};
196
197define sock_init_shm_reply {
198 u32 client_index;
199 u32 context;
200 i32 retval;
201};
202
203/*
Dave Barach59b25652017-09-10 15:04:27 -0400204 * Memory client ping / response
205 * Only sent on inactive connections
206 */
207autoreply define memclnt_keepalive
208{
209 u32 client_index;
210 u32 context;
211};