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:
7 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 This file defines vpe control-plane API messages which are generally
19 called through a shared memory interface.
22 option version = "1.1.0";
25 * Note: API placement cleanup in progress
26 * If you're looking for interface APIs, please
27 * see .../src/vnet/{interface.api,interface_api.c}
28 * IP APIs: see .../src/vnet/ip/{ip.api, ip_api.c}
29 * VXLAN APIs: see .../src/vnet/vxlan/{vxlan.api, vxlan_api.c}
30 * GENEVE APIs: see .../src/vnet/geneve/{geneve.api, geneve_api.c}
31 * LLDP APIs: see .../src/vnet/lldp/{lldp.api, lldp_api.c}
32 * AF-PACKET APIs: see ... /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
33 * NETMAP APIs: see ... /src/vnet/devices/netmap/{netmap.api, netmap_api.c}
34 * VHOST-USER APIs: see .../vnet/devices/virtio/{vhost_user.api, vhost_user_api.c}
35 * VXLAN GPE APIs: see .../src/vnet/vxlan-gpe/{vxlan_gpe.api, vxlan_gpe_api.c}
36 * GRE APIs: see .../src/vnet/gre/{gre.api, gre_api.c}
37 * L2 APIs: see .../src/vnet/l2/{l2.api, l2_api.c}
38 * L2TP APIs: see .../src/vnet/l2tp/{l2tp.api, l2tp_api.c}
39 * BFD APIs: see .../src/vnet/bfd/{bfd.api, bfd_api.c}
40 * IPSEC APIs: see .../src/vnet/ipsec/{ipsec.api, ipsec_api.c}
41 * IPSEC-GRE APIs: see .../src/vnet/ipsec-gre/{ipsec_gre.api, ipsec_gre_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}
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
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
71 define control_ping_reply
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
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
108 define cli_inband_reply
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
120 define get_node_index
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
132 define get_node_index_reply
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
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
158 define add_node_next_reply
165 /** \brief show version
166 @param client_index - opaque cookie to identify the sender
167 @param context - sender context, to match reply w/ request
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
182 define show_version_reply
189 string build_directory;
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.
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.
215 typeonly define thread_data
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
232 define show_threads_reply
237 vl_api_thread_data_t thread_data[count];
240 define get_node_graph
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.
254 define get_node_graph_reply
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
267 define get_next_index
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
280 define get_next_index_reply
289 * eval: (c-set-style "gnu")