api: API cleanup
[vpp.git] / src / vpp / api / vpe.api
1 /*
2  * Copyright (c) 2015-2016 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 /** \file
17
18     This file defines vpe control-plane API messages which are generally
19     called through a shared memory interface.
20 */
21
22 option version = "1.6.1";
23
24 import "vpp/api/vpe_types.api";
25
26 /*
27  * Note: API placement cleanup in progress
28  * If you're looking for interface APIs, please
29  * see .../src/vnet/{interface.api,interface_api.c}
30  * IP APIs: see .../src/vnet/ip/{ip.api, ip_api.c}
31  * VXLAN APIs: see .../src/vnet/vxlan/{vxlan.api, vxlan_api.c}
32  * GENEVE APIs: see .../src/vnet/geneve/{geneve.api, geneve_api.c}
33  * LLDP APIs: see .../src/vnet/lldp/{lldp.api, lldp_api.c}
34  * AF-PACKET APIs: see ... /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
35  * VHOST-USER APIs: see .../vnet/devices/virtio/{vhost_user.api, vhost_user_api.c}
36  * VXLAN GPE APIs: see .../src/vnet/vxlan-gpe/{vxlan_gpe.api, vxlan_gpe_api.c}
37  * GRE APIs: see .../src/vnet/gre/{gre.api, gre_api.c}
38  * L2 APIs: see .../src/vnet/l2/{l2.api, l2_api.c}
39  * L2TP APIs: see .../src/vnet/l2tp/{l2tp.api, l2tp_api.c}
40  * BFD APIs: see .../src/vnet/bfd/{bfd.api, bfd_api.c}
41  * IPSEC APIs: see .../src/vnet/ipsec/{ipsec.api, ipsec_api.c}
42  * LISP APIs: see .../src/vnet/lisp/{lisp.api, lisp_api.c}
43  * LISP-GPE APIs: see .../src/vnet/lisp-gpe/{lisp_gpe.api, lisp_gpe_api.c}
44  * SESSION APIs: .../vnet/session/{session.api session_api.c}
45  * MPLS APIs: see .../src/vnet/mpls/{mpls.api, mpls_api.c}
46  * SR APIs: see .../src/vnet/srv6/{sr.api, sr_api.c}
47  * CLASSIFY APIs: see ... /src/vnet/classify/{classify.api, classify_api.c}
48  * FLOW APIs: see ... /src/vnet/flow/{flow.api, flow_api.c}
49  * DHCP APIs: see ... /src/vnet/dhcp/{dhcp.api, dhcp_api.c}
50  * COP APIs: see ... /src/vnet/cop/{cop.api, cop_api.c}
51  * POLICER APIs: see ... /src/vnet/policer/{policer.api, policer_api.c}
52  * BIER APIs: see ... /src/vnet/policer/{bier.api, bier_api.c}
53  */
54
55 /** \brief Control ping from client to api server request
56     @param client_index - opaque cookie to identify the sender
57     @param context - sender context, to match reply w/ request
58 */
59 define control_ping
60 {
61   u32 client_index;
62   u32 context;
63 };
64
65 /** \brief Control ping from the client to the server response
66     @param client_index - opaque cookie to identify the sender
67     @param context - sender context, to match reply w/ request
68     @param retval - return code for the request
69     @param vpe_pid - the pid of the vpe, returned by the server
70 */
71 define control_ping_reply
72 {
73   u32 context;
74   i32 retval;
75   u32 client_index;
76   u32 vpe_pid;
77 };
78
79 /** \brief Process a vpe parser cli string request
80     @param client_index - opaque cookie to identify the sender
81     @param context - sender context, to match reply w/ request
82     @param cmd_in_shmem - pointer to cli command string
83 */
84 define cli
85 {
86   u32 client_index;
87   u32 context;
88   u64 cmd_in_shmem;
89 };
90 define cli_inband
91 {
92   u32 client_index;
93   u32 context;
94   string cmd[];
95 };
96
97 /** \brief vpe parser cli string response
98     @param context - sender context, to match reply w/ request
99     @param retval - return code for request
100     @param reply_in_shmem - Reply string from cli processing if any
101 */
102 define cli_reply
103 {
104   u32 context;
105   i32 retval;
106   u64 reply_in_shmem;
107 };
108 define cli_inband_reply
109 {
110   u32 context;
111   i32 retval;
112   string reply[];
113 };
114
115 /** \brief Get node index using name request
116     @param client_index - opaque cookie to identify the sender
117     @param context - sender context, to match reply w/ request
118     @param node_name[] - name of the node
119 */
120 define get_node_index
121 {
122   u32 client_index;
123   u32 context;
124   string node_name[64];
125 };
126
127 /** \brief Get node index using name request
128     @param context - sender context, to match reply w/ request
129     @param retval - return code for the request
130     @param node_index - index of the desired node if found, else ~0
131 */
132 define get_node_index_reply
133 {
134   u32 context;
135   i32 retval;
136   u32 node_index;
137 };
138
139 /** \brief Set the next node for a given node request
140     @param client_index - opaque cookie to identify the sender
141     @param context - sender context, to match reply w/ request
142     @param node_name[] - node to add the next node to
143     @param next_name[] - node to add as the next node
144 */
145 define add_node_next
146 {
147   u32 client_index;
148   u32 context;
149   string node_name[64];
150   string next_name[64];
151 };
152
153 /** \brief IP Set the next node for a given node response
154     @param context - sender context, to match reply w/ request
155     @param retval - return code for the add next node request
156     @param next_index - the index of the next node if success, else ~0
157 */
158 define add_node_next_reply
159 {
160   u32 context;
161   i32 retval;
162   u32 next_index;
163 };
164
165 /** \brief show version
166     @param client_index - opaque cookie to identify the sender
167     @param context - sender context, to match reply w/ request
168 */
169 define show_version
170 {
171   u32 client_index;
172   u32 context;
173 };
174
175 /** \brief show version response
176     @param context - sender context, to match reply w/ request
177     @param retval - return code for the request
178     @param program - name of the program (vpe)
179     @param version  - version of the program
180     @param build_directory - root of the workspace where the program was built
181 */
182 define show_version_reply
183 {
184   u32 context;
185   i32 retval;
186   string program[32];
187   string version[32];
188   string build_date[32];
189   string build_directory[256];
190 };
191
192
193 /** \brief show_threads display the information about vpp
194     threads running on system along with their process id,
195     cpu id, physical core and cpu socket.
196 */
197 define show_threads
198 {
199   u32 client_index;
200   u32 context;
201 };
202
203 /** \brief thread data
204     @param id - thread index
205     @param name - thread name i.e. vpp_main or vpp_wk_0
206     @param type - thread type i.e. workers or stats
207     @param pid - thread Process Id
208     @param cpu_id - thread pinned to cpu.
209     "CPUs or Logical cores are the number of physical cores times
210     the number of threads that can run on each core through
211     the use of hyperthreading." (from unix.stackexchange.com)
212     @param core - thread pinned to actual physical core.
213     @param cpu_socket - thread is running on which cpu socket.
214 */
215 typedef thread_data
216 {
217   u32 id;
218   string name[64];
219   string type[64];
220   u32 pid;
221   u32 cpu_id;
222   u32 core;
223   u32 cpu_socket;
224 };
225
226 /** \brief show_threads_reply
227     @param context - returned sender context, to match reply w/ request
228     @param retval - return code
229     @param count - number of threads in thread_data array
230     @param thread_data - array of thread data
231 */
232 define show_threads_reply
233 {
234   u32 context;
235   i32 retval;
236   u32 count;
237   vl_api_thread_data_t thread_data[count];
238 };
239
240 define get_node_graph
241 {
242   u32 client_index;
243   u32 context;
244 };
245
246 /** \brief get_node_graph_reply
247     @param context - returned sender context, to match reply w/ request
248     @param retval - return code
249     @param reply_in_shmem - result from vlib_node_serialize, in shared
250     memory. Process with vlib_node_unserialize, remember to switch
251     heaps and free the result.
252 */
253
254 define get_node_graph_reply
255 {
256   u32 context;
257   i32 retval;
258   u64 reply_in_shmem;
259 };
260
261 /** \brief Query relative index via node names
262     @param client_index - opaque cookie to identify the sender
263     @param context - sender context, to match reply w/ request
264     @param node_name - name of node to find relative index from
265     @param next_name - next node from node_name to find relative index of
266 */
267 define get_next_index
268 {
269   u32 client_index;
270   u32 context;
271   string node_name[64];
272   string next_name[64];
273 };
274
275 /** \brief Reply for get next node index
276     @param context - sender context which was passed in the request
277     @param retval - return value
278     @param next_index - index of the next_node
279 */
280 define get_next_index_reply
281 {
282   u32 context;
283   i32 retval;
284   u32 next_index;
285 };
286
287 define log_dump {
288   u32 client_index;
289   u32 context;
290   vl_api_timestamp_t start_timestamp;
291 };
292
293 define log_details {
294   u32 context;
295   vl_api_timestamp_t timestamp;
296   vl_api_log_level_t level;
297   string msg_class[32];
298   string message[256];
299 };
300
301 /** \brief Show the current system timestamp.
302     @param client_index - opaque cookie to identify the sender
303     @param context - sender context, to match reply w/ request
304 */
305 define show_vpe_system_time
306 {
307   u32 client_index;
308   u32 context;
309 };
310
311 /** \brief Reply for show vpe system time.
312     @param context - sender context which was passed in the request
313     @param retval - return value
314     @param vpe_system_time - the time in seconds since epoch of the host system.
315 */
316 define show_vpe_system_time_reply
317 {
318   u32 context;
319   i32 retval;
320   vl_api_timestamp_t vpe_system_time;
321 };
322
323 /** \brief f64 types are not standardized across the wire. Sense wire format in each direction by sending the f64 value 1.0.
324     @param client_index - opaque cookie to identify the sender
325     @param context - sender context, to match reply w/ request
326     @param f64_one - The constant of 1.0.  If you send a different value, expect an rv=VNET_API_ERROR_API_ENDIAN_FAILED.
327 */
328 define get_f64_endian_value
329 {
330   u32 client_index;
331   u32 context;
332   f64 f64_one [default=1.0];
333 };
334
335 /** \brief get_f64_endian_value reply message
336     @param context - sender context which was passed in the request
337     @param retval - return value - VNET_API_ERROR_API_ENDIAN_FAILED if f64_one != 1.0
338     @param f64_one_result - The value of 'f64 1.0'
339 */
340 define get_f64_endian_value_reply
341 {
342   u32 context;
343   u32 retval;
344   f64 f64_one_result;
345 };
346
347 /** \brief Verify f64 wire format by sending a value and receiving the value + 1.0
348     @param client_index - opaque cookie to identify the sender.
349     @param context - sender context, to match reply w/ request.
350     @param f64_value - The value you want to test.  Default: 1.0.
351 */
352 define get_f64_increment_by_one
353 {
354   u32 client_index;
355   u32 context;
356   f64 f64_value [default=1.0];
357 };
358
359 /** \brief get_f64_increment_by_one reply
360     @param client_index - opaque cookie to identify the sender.
361     @param context - sender context, to match reply w/ request.
362     @param f64_value - The input f64_value incremented by 1.0.
363 */
364 define get_f64_increment_by_one_reply
365 {
366   u32 context;
367   u32 retval;
368   f64 f64_value;
369 };
370
371 /*
372  * Local Variables:
373  * eval: (c-set-style "gnu")
374  * End:
375  */