FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
vpe.api
Go to the documentation of this file.
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 {
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 {
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 {
89 };
90 define cli_inband
91 {
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 {
107 };
108 define cli_inband_reply
109 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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];
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 {
237  vl_api_thread_data_t thread_data[count];
238 };
239 
240 define get_node_graph
241 {
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 {
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 {
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 {
285 };
286 
287 define log_dump {
290  vl_api_timestamp_t start_timestamp;
291 };
292 
293 define log_details {
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 {
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 {
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 {
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 {
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 {
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 {
369 };
370 
371 /*
372  * Local Variables:
373  * eval: (c-set-style "gnu")
374  * End:
375  */
u8 count
Definition: dhcp.api:208
u32 client_index
Definition: vpe.api:288
u32 cpu_socket
Definition: vpe.api:223
unsigned long u64
Definition: types.h:89
u8 id[64]
Definition: dhcp.api:160
double f64
Definition: types.h:142
u32 context
Definition: vpe.api:87
vl_api_timestamp_t timestamp
Definition: vpe.api:295
unsigned int u32
Definition: types.h:88
u32 cpu_id
Definition: vpe.api:221
u64 cmd_in_shmem
Definition: vpe.api:88
vl_api_log_level_t level
Definition: vpe.api:296
u32 pid
Definition: vpe.api:220
vl_api_timestamp_t start_timestamp
Definition: vpe.api:290
u32 client_index
Definition: vpe.api:86
typedef thread_data
thread data
Definition: vpe.api:216
u32 core
Definition: vpe.api:222
string type[64]
Definition: vpe.api:219
vl_api_timestamp_t vpe_system_time
Definition: vpe.api:320
signed int i32
Definition: types.h:77
option version
Definition: vpe.api:22
u64 reply_in_shmem
Definition: vpe.api:106
string name[64]
Definition: vpe.api:218