blob: 30d2ae96bff4fab85c0432c4ed6ef0f2c89ee808 [file] [log] [blame]
Dave Barach68b0fb02017-02-28 15:15:56 -05001/*
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
Florin Coras6cf30ad2017-04-04 23:08:23 -070016/** \brief client->vpp, attach application to session layer
17 @param client_index - opaque cookie to identify the sender
18 @param context - sender context, to match reply w/ request
19 @param initial_segment_size - size of the initial shm segment to be
20 allocated
21 @param options - segment size, fifo sizes, etc.
22*/
23 define application_attach {
24 u32 client_index;
25 u32 context;
26 u32 initial_segment_size;
27 u64 options[16];
28 };
29
30 /** \brief Application attach reply
31 @param context - sender context, to match reply w/ request
32 @param retval - return code for the request
33 @param app_event_queue_address - vpp event queue address or 0 if this
34 connection shouldn't send events
35 @param segment_size - size of first shm segment
36 @param segment_name_length - length of segment name
37 @param segment_name - name of segment client needs to attach to
38*/
39define application_attach_reply {
40 u32 context;
41 i32 retval;
42 u64 app_event_queue_address;
43 u32 segment_size;
44 u8 segment_name_length;
45 u8 segment_name[128];
46};
47
48 /** \brief client->vpp, attach application to session layer
49 @param client_index - opaque cookie to identify the sender
50 @param context - sender context, to match reply w/ request
51*/
Dave Barach11b8dbf2017-04-24 10:46:54 -040052autoreply define application_detach {
Florin Coras6cf30ad2017-04-04 23:08:23 -070053 u32 client_index;
54 u32 context;
55 };
56
Florin Coras6cf30ad2017-04-04 23:08:23 -070057/** \brief vpp->client, please map an additional shared memory segment
58 @param client_index - opaque cookie to identify the sender
59 @param context - sender context, to match reply w/ request
60 @param segment_name -
61*/
Dave Barach11b8dbf2017-04-24 10:46:54 -040062autoreply define map_another_segment {
Florin Coras6cf30ad2017-04-04 23:08:23 -070063 u32 client_index;
64 u32 context;
65 u32 segment_size;
66 u8 segment_name[128];
67};
68
Dave Barach68b0fb02017-02-28 15:15:56 -050069 /** \brief Bind to a given URI
70 @param client_index - opaque cookie to identify the sender
71 @param context - sender context, to match reply w/ request
72 @param accept_cookie - sender accept cookie, to identify this bind flavor
73 @param uri - a URI, e.g. "tcp://0.0.0.0/0/80" [ipv4]
74 "tcp://::/0/80" [ipv6] etc.
75 @param options - socket options, fifo sizes, etc.
76*/
Dave Barach11b8dbf2017-04-24 10:46:54 -040077autoreply define bind_uri {
Dave Barach68b0fb02017-02-28 15:15:56 -050078 u32 client_index;
79 u32 context;
80 u32 accept_cookie;
Dave Barach68b0fb02017-02-28 15:15:56 -050081 u8 uri[128];
Dave Barach68b0fb02017-02-28 15:15:56 -050082};
83
84/** \brief Unbind a given URI
85 @param client_index - opaque cookie to identify the sender
86 @param context - sender context, to match reply w/ request
87 @param uri - a URI, e.g. "tcp://0.0.0.0/0/80" [ipv4]
88 "tcp://::/0/80" [ipv6], etc.
89 @param options - socket options, fifo sizes, etc.
90*/
Dave Barach11b8dbf2017-04-24 10:46:54 -040091autoreply define unbind_uri {
Dave Barach68b0fb02017-02-28 15:15:56 -050092 u32 client_index;
93 u32 context;
94 u8 uri[128];
95};
96
97/** \brief Connect to a given URI
98 @param client_index - opaque cookie to identify the sender
99 @param context - sender context, to match reply w/ request
100 @param accept_cookie - sender accept cookie, to identify this bind flavor
101 @param uri - a URI, e.g. "tcp4://0.0.0.0/0/80"
102 "tcp6://::/0/80" [ipv6], etc.
Florin Coras6cf30ad2017-04-04 23:08:23 -0700103 @param options - socket options, fifo sizes, etc. passed by vpp to the
104 server when redirecting connects
105 @param client_queue_address - binary API client queue address. Used by
106 local server when connect was redirected.
Dave Barach68b0fb02017-02-28 15:15:56 -0500107*/
Dave Wallace33e002b2017-09-06 01:20:02 -0400108autoreply define connect_uri {
Dave Barach68b0fb02017-02-28 15:15:56 -0500109 u32 client_index;
110 u32 context;
111 u8 uri[128];
112 u64 client_queue_address;
113 u64 options[16];
114};
115
Dave Barach68b0fb02017-02-28 15:15:56 -0500116/** \brief vpp->client, accept this session
117 @param context - sender context, to match reply w/ request
Florin Coras6cf30ad2017-04-04 23:08:23 -0700118 @param listener_handle - tells client which listener this pertains to
119 @param handle - unique session identifier
120 @param session_thread_index - thread index of new session
Dave Barach68b0fb02017-02-28 15:15:56 -0500121 @param rx_fifo_address - rx (vpp -> vpp-client) fifo address
122 @param tx_fifo_address - tx (vpp-client -> vpp) fifo address
Dave Barach68b0fb02017-02-28 15:15:56 -0500123 @param vpp_event_queue_address - vpp's event queue address
Florin Coras6cf30ad2017-04-04 23:08:23 -0700124 @param port - remote port
125 @param is_ip4 - 1 if the ip is ip4
126 @param ip - remote ip
Dave Barach68b0fb02017-02-28 15:15:56 -0500127*/
128define accept_session {
129 u32 client_index;
130 u32 context;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700131 u64 listener_handle;
132 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500133 u64 server_rx_fifo;
134 u64 server_tx_fifo;
Dave Barach68b0fb02017-02-28 15:15:56 -0500135 u64 vpp_event_queue_address;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700136 u16 port;
137 u8 is_ip4;
138 u8 ip[16];
Dave Barach68b0fb02017-02-28 15:15:56 -0500139};
140
141/** \brief client->vpp, reply to an accept message
142 @param context - sender context, to match reply w/ request
143 @param retval - return code for the request
144 @param session_index - session index from accept_session / connect_reply
145 @param session_thread_index - thread index from accept_session /
146 connect_reply
147*/
148define accept_session_reply {
149 u32 context;
150 i32 retval;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700151 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500152};
153
154/** \brief bidirectional disconnect API
155 @param client_index - opaque cookie to identify the sender
156 client to vpp direction only
157 @param context - sender context, to match reply w/ request
Florin Coras6cf30ad2017-04-04 23:08:23 -0700158 @param handle - session handle obtained from accept/connect
Dave Barach68b0fb02017-02-28 15:15:56 -0500159*/
160define disconnect_session {
161 u32 client_index;
162 u32 context;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700163 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500164};
165
166/** \brief bidirectional disconnect reply API
167 @param client_index - opaque cookie to identify the sender
168 client to vpp direction only
169 @param context - sender context, to match reply w/ request
170 @param retval - return code for the request
Florin Coras6cf30ad2017-04-04 23:08:23 -0700171 @param handle - session handle
Dave Barach68b0fb02017-02-28 15:15:56 -0500172*/
173define disconnect_session_reply {
174 u32 client_index;
175 u32 context;
176 i32 retval;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700177 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500178};
179
180/** \brief vpp->client reset session API
181 @param client_index - opaque cookie to identify the sender
182 client to vpp direction only
183 @param context - sender context, to match reply w/ request
Florin Coras6cf30ad2017-04-04 23:08:23 -0700184 @param handle - session handle obtained via accept/connects
Dave Barach68b0fb02017-02-28 15:15:56 -0500185*/
186define reset_session {
187 u32 client_index;
188 u32 context;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700189 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500190};
191
192/** \brief client->vpp reset session reply
193 @param client_index - opaque cookie to identify the sender
194 client to vpp direction only
195 @param context - sender context, to match reply w/ request
196 @param retval - return code for the request
Florin Coras6cf30ad2017-04-04 23:08:23 -0700197 @param handle - session handle obtained via accept/connect
Dave Barach68b0fb02017-02-28 15:15:56 -0500198*/
199define reset_session_reply {
200 u32 client_index;
201 u32 context;
202 i32 retval;
Florin Coras6cf30ad2017-04-04 23:08:23 -0700203 u64 handle;
Dave Barach68b0fb02017-02-28 15:15:56 -0500204};
205
206/** \brief Bind to an ip:port pair for a given transport protocol
207 @param client_index - opaque cookie to identify the sender
208 @param context - sender context, to match reply w/ request
209 @param vrf - bind namespace
210 @param is_ip4 - flag that is 1 if ip address family is IPv4
211 @param ip - ip address
212 @param port - port
213 @param proto - protocol 0 - TCP 1 - UDP
214 @param options - socket options, fifo sizes, etc.
215*/
216define bind_sock {
217 u32 client_index;
218 u32 context;
219 u32 vrf;
220 u8 is_ip4;
221 u8 ip[16];
222 u16 port;
223 u8 proto;
224 u64 options[16];
225};
226
227/** \brief Unbind
228 @param client_index - opaque cookie to identify the sender
229 @param context - sender context, to match reply w/ request
230 @param handle - bind handle obtained from bind reply
231*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400232autoreply define unbind_sock {
Dave Barach68b0fb02017-02-28 15:15:56 -0500233 u32 client_index;
234 u32 context;
235 u64 handle;
236};
237
238/** \brief Connect to a remote peer
239 @param client_index - opaque cookie to identify the sender
240 @param context - sender context, to match reply w/ request
Florin Coras2fcc49d2017-06-07 14:18:48 -0700241 @param app_connect - application connection id to be returned in reply
Dave Barach68b0fb02017-02-28 15:15:56 -0500242 @param vrf - connection namespace
243 @param is_ip4 - flag that is 1 if ip address family is IPv4
244 @param ip - ip address
245 @param port - port
246 @param proto - protocol 0 - TCP 1 - UDP
247 @param client_queue_address - client's API queue address. Non-zero when
248 used to perform redirects
Florin Coras6cf30ad2017-04-04 23:08:23 -0700249 @param options - socket options, fifo sizes, etc. when doing redirects
Dave Barach68b0fb02017-02-28 15:15:56 -0500250*/
Dave Wallace33e002b2017-09-06 01:20:02 -0400251autoreply define connect_sock {
Dave Barach68b0fb02017-02-28 15:15:56 -0500252 u32 client_index;
253 u32 context;
254 u32 vrf;
255 u8 is_ip4;
256 u8 ip[16];
257 u16 port;
258 u8 proto;
259 u64 client_queue_address;
260 u64 options[16];
261};
262
263/** \brief Bind reply
264 @param context - sender context, to match reply w/ request
265 @param handle - bind handle
266 @param retval - return code for the request
267 @param event_queue_address - vpp event queue address or 0 if this
268 connection shouldn't send events
269 @param segment_name_length - length of segment name
270 @param segment_name - name of segment client needs to attach to
271*/
272define bind_sock_reply {
273 u32 context;
274 u64 handle;
275 i32 retval;
276 u64 server_event_queue_address;
277 u32 segment_size;
278 u8 segment_name_length;
279 u8 segment_name[128];
280};
281
Dave Wallace33e002b2017-09-06 01:20:02 -0400282/* Dummy connect message -- needed to satisfy api generators
283*
284* NEVER USED, doxygen tags elided on purpose.
285*/
286define connect_session {
287 u32 client_index;
288 u32 context;
289};
290
291/** \brief vpp/server->client, connect reply -- used for all connect_* messages
Dave Barach68b0fb02017-02-28 15:15:56 -0500292 @param context - sender context, to match reply w/ request
293 @param retval - return code for the request
294 @param handle - connection handle
295 @param server_rx_fifo - rx (vpp -> vpp-client) fifo address
296 @param server_tx_fifo - tx (vpp-client -> vpp) fifo address
297 @param vpp_event_queue_address - vpp's event queue address
Florin Coras6cf30ad2017-04-04 23:08:23 -0700298 @param segment_size - size of segment to be attached. Only for redirects.
Dave Barach68b0fb02017-02-28 15:15:56 -0500299 @param segment_name_length - non-zero if the client needs to attach to
300 the fifo segment
301 @param segment_name - set if the client needs to attach to the segment
302*/
Dave Wallace33e002b2017-09-06 01:20:02 -0400303define connect_session_reply {
Dave Barach68b0fb02017-02-28 15:15:56 -0500304 u32 context;
305 i32 retval;
306 u64 handle;
307 u64 server_rx_fifo;
308 u64 server_tx_fifo;
Dave Barach68b0fb02017-02-28 15:15:56 -0500309 u64 vpp_event_queue_address;
310 u32 segment_size;
311 u8 segment_name_length;
312 u8 segment_name[128];
313};
314
Florin Corase04c2992017-03-01 08:17:34 -0800315/** \brief enable/disable session layer
316 @param client_index - opaque cookie to identify the sender
317 client to vpp direction only
318 @param context - sender context, to match reply w/ request
319 @param is_enable - disable session layer if 0, enable otherwise
320*/
Dave Barach11b8dbf2017-04-24 10:46:54 -0400321autoreply define session_enable_disable {
Florin Corase04c2992017-03-01 08:17:34 -0800322 u32 client_index;
323 u32 context;
324 u8 is_enable;
325};
326
Dave Barach68b0fb02017-02-28 15:15:56 -0500327/*
328 * Local Variables:
329 * eval: (c-set-style "gnu")
330 * End:
Dave Barach11b8dbf2017-04-24 10:46:54 -0400331 */