FD.io VPP  v18.07-rc0-415-g6c78436
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.0.0";
23 
24 /*
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  * TAP APIs: see .../src/vnet/unix/{tap.api, tap_api.c}
30  * VXLAN APIs: see .../src/vnet/vxlan/{vxlan.api, vxlan_api.c}
31  * GENEVE APIs: see .../src/vnet/geneve/{geneve.api, geneve_api.c}
32  * LLDP APIs: see .../src/vnet/lldp/{lldp.api, lldp_api.c}
33  * AF-PACKET APIs: see ... /vnet/devices/af_packet/{af_packet.api, af_packet_api.c}
34  * NETMAP APIs: see ... /src/vnet/devices/netmap/{netmap.api, netmap_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  * IPSEC-GRE APIs: see .../src/vnet/ipsec-gre/{ipsec_gre.api, ipsec_gre_api.c}
43  * LISP APIs: see .../src/vnet/lisp/{lisp.api, lisp_api.c}
44  * LISP-GPE APIs: see .../src/vnet/lisp-gpe/{lisp_gpe.api, lisp_gpe_api.c}
45  * SESSION APIs: .../vnet/session/{session.api session_api.c}
46  * MPLS APIs: see .../src/vnet/mpls/{mpls.api, mpls_api.c}
47  * SR APIs: see .../src/vnet/srv6/{sr.api, sr_api.c}
48  * CLASSIFY APIs: see ... /src/vnet/classify/{classify.api, classify_api.c}
49  * FLOW APIs: see ... /src/vnet/flow/{flow.api, flow_api.c}
50  * DHCP APIs: see ... /src/vnet/dhcp/{dhcpk.api, dhcp_api.c}
51  * COP APIs: see ... /src/vnet/cop/{cop.api, cop_api.c}
52  * POLICER APIs: see ... /src/vnet/policer/{policer.api, policer_api.c}
53  * STATS APIs: see .../src/vpp/stats/{stats.api, stats.c}
54  * BIER APIs: see ... /src/vnet/policer/{bier.api, bier_api.c}
55  */
56 
57 /** \brief Control ping from client to api server request
58  @param client_index - opaque cookie to identify the sender
59  @param context - sender context, to match reply w/ request
60 */
61 define control_ping
62 {
65 };
66 
67 /** \brief Control ping from the client to the server response
68  @param client_index - opaque cookie to identify the sender
69  @param context - sender context, to match reply w/ request
70  @param retval - return code for the request
71  @param vpe_pid - the pid of the vpe, returned by the server
72 */
73 define control_ping_reply
74 {
79 };
80 
81 /** \brief Process a vpe parser cli string request
82  @param client_index - opaque cookie to identify the sender
83  @param context - sender context, to match reply w/ request
84  @param cmd_in_shmem - pointer to cli command string
85 */
86 define cli
87 {
91 };
92 define cli_inband
93 {
97  u8 cmd[length];
98 };
99 
100 /** \brief vpe parser cli string response
101  @param context - sender context, to match reply w/ request
102  @param retval - return code for request
103  @param reply_in_shmem - Reply string from cli processing if any
104 */
105 define cli_reply
106 {
110 };
111 define cli_inband_reply
112 {
116  u8 reply[length];
117 };
118 
119 /** \brief Get node index using name request
120  @param client_index - opaque cookie to identify the sender
121  @param context - sender context, to match reply w/ request
122  @param node_name[] - name of the node
123 */
124 define get_node_index
125 {
128  u8 node_name[64];
129 };
130 
131 /** \brief Get node index using name request
132  @param context - sender context, to match reply w/ request
133  @param retval - return code for the request
134  @param node_index - index of the desired node if found, else ~0
135 */
136 define get_node_index_reply
137 {
141 };
142 
143 /** \brief Set the next node for a given node request
144  @param client_index - opaque cookie to identify the sender
145  @param context - sender context, to match reply w/ request
146  @param node_name[] - node to add the next node to
147  @param next_name[] - node to add as the next node
148 */
149 define add_node_next
150 {
153  u8 node_name[64];
154  u8 next_name[64];
155 };
156 
157 /** \brief IP Set the next node for a given node response
158  @param context - sender context, to match reply w/ request
159  @param retval - return code for the add next node request
160  @param next_index - the index of the next node if success, else ~0
161 */
162 define add_node_next_reply
163 {
167 };
168 
169 /** \brief show version
170  @param client_index - opaque cookie to identify the sender
171  @param context - sender context, to match reply w/ request
172 */
173 define show_version
174 {
177 };
178 
179 /** \brief show version response
180  @param context - sender context, to match reply w/ request
181  @param retval - return code for the request
182  @param program - name of the program (vpe)
183  @param version - version of the program
184  @param build_directory - root of the workspace where the program was built
185 */
186 define show_version_reply
187 {
190  u8 program[32];
191  u8 version[32];
192  u8 build_date[32];
193  u8 build_directory[256];
194 };
195 
196 define get_node_graph
197 {
200 };
201 
202 /** \brief get_node_graph_reply
203  @param context - returned sender context, to match reply w/ request
204  @param retval - return code
205  @param reply_in_shmem - result from vlib_node_serialize, in shared
206  memory. Process with vlib_node_unserialize, remember to switch
207  heaps and free the result.
208 */
209 
210 define get_node_graph_reply
211 {
215 };
216 
217 /** \brief Query relative index via node names
218  @param client_index - opaque cookie to identify the sender
219  @param context - sender context, to match reply w/ request
220  @param node_name - name of node to find relative index from
221  @param next_name - next node from node_name to find relative index of
222 */
223 define get_next_index
224 {
227  u8 node_name[64];
228  u8 next_name[64];
229 };
230 
231 /** \brief Reply for get next node index
232  @param context - sender context which was passed in the request
233  @param retval - return value
234  @param next_index - index of the next_node
235 */
236 define get_next_index_reply
237 {
241 };
242 
243 /*
244  * Local Variables:
245  * eval: (c-set-style "gnu")
246  * End:
247  */
unsigned long u64
Definition: types.h:89
unsigned char u8
Definition: types.h:56
u32 context
Definition: vpe.api:89
unsigned int u32
Definition: types.h:88
u64 cmd_in_shmem
Definition: vpe.api:90
u32 client_index
Definition: vpe.api:88
signed int i32
Definition: types.h:81
option version
Definition: vpe.api:22
u64 reply_in_shmem
Definition: vpe.api:109