2 * Copyright (c) 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.
17 * @brief VPP control-plane API messages.
19 * This file defines VPP control-plane API messages which are generally
20 * called through a shared memory interface.
23 /** \brief Add/del S-NAT address range
24 @param client_index - opaque cookie to identify the sender
25 @param context - sender context, to match reply w/ request
26 @param is_ip4 - 1 if address type is IPv4
27 @param first_ip_address - first IP address
28 @param last_ip_address - last IP address
29 @param vrf_id - VRF id of tenant, ~0 means independent of VRF
30 @param is_add - 1 if add, 0 if delete
32 define snat_add_address_range {
36 u8 first_ip_address[16];
37 u8 last_ip_address[16];
42 /** \brief Add S-NAT address range reply
43 @param context - sender context, to match reply w/ request
44 @param retval - return code
46 define snat_add_address_range_reply {
51 /** \brief Dump S-NAT addresses
52 @param client_index - opaque cookie to identify the sender
53 @param context - sender context, to match reply w/ request
55 define snat_address_dump {
60 /** \brief S-NAT address details response
61 @param context - sender context, to match reply w/ request
62 @param is_ip4 - 1 if address type is IPv4
63 @param ip_address - IP address
64 @param vrf_id - VRF id of tenant, ~0 means independent of VRF
66 define snat_address_details {
73 /** \brief Enable/disable S-NAT feature on the interface
74 @param client_index - opaque cookie to identify the sender
75 @param context - sender context, to match reply w/ request
76 @param is_add - 1 if add, 0 if delete
77 @param is_inside - 1 if inside, 0 if outside
78 @param sw_if_index - software index of the interface
80 define snat_interface_add_del_feature {
88 /** \brief Enable/disable S-NAT feature on the interface reply
89 @param context - sender context, to match reply w/ request
90 @param retval - return code
92 define snat_interface_add_del_feature_reply {
97 /** \brief Dump interfaces with S-NAT feature
98 @param client_index - opaque cookie to identify the sender
99 @param context - sender context, to match reply w/ request
101 define snat_interface_dump {
106 /** \brief S-NAT interface details response
107 @param context - sender context, to match reply w/ request
108 @param is_inside - 1 if inside, 0 if outside
109 @param sw_if_index - software index of the interface
111 define snat_interface_details {
117 /** \brief Add/delete S-NAT static mapping
118 @param client_index - opaque cookie to identify the sender
119 @param context - sender context, to match reply w/ request
120 @param is_add - 1 if add, 0 if delete
121 @param is_ip4 - 1 if address type is IPv4
122 @param addr_only - 1 if address only mapping
123 @param local_ip_address - local IP address
124 @param external_ip_address - external IP address
125 @param protocol - IP protocol
126 @param local_port - local port number
127 @param external_port - external port number
128 @param external_sw_if_index - external interface (if set
129 external_ip_address is ignored, ~0 means not
131 @param vfr_id - VRF ID
133 define snat_add_static_mapping {
139 u8 local_ip_address[16];
140 u8 external_ip_address[16];
144 u32 external_sw_if_index;
148 /** \brief Add/delete S-NAT static mapping reply
149 @param context - sender context, to match reply w/ request
150 @param retval - return code
152 define snat_add_static_mapping_reply {
157 /** \brief Dump S-NAT static mappings
158 @param client_index - opaque cookie to identify the sender
159 @param context - sender context, to match reply w/ request
161 define snat_static_mapping_dump {
166 /** \brief S-NAT static mapping details response
167 @param context - sender context, to match reply w/ request
168 @param is_ip4 - 1 if address type is IPv4
169 @param addr_only - 1 if address only mapping
170 @param local_ip_address - local IP address
171 @param external_ip_address - external IP address
172 @param protocol - IP protocol
173 @param local_port - local port number
174 @param external_port - external port number
175 @param external_sw_if_index - external interface
176 @param vfr_id - VRF ID
178 define snat_static_mapping_details {
182 u8 local_ip_address[16];
183 u8 external_ip_address[16];
187 u32 external_sw_if_index;
191 /** \brief Control ping from client to api server request
192 @param client_index - opaque cookie to identify the sender
193 @param context - sender context, to match reply w/ request
195 define snat_control_ping
201 /** \brief Control ping from the client to the server response
202 @param client_index - opaque cookie to identify the sender
203 @param context - sender context, to match reply w/ request
204 @param retval - return code for the request
205 @param vpe_pid - the pid of the vpe, returned by the server
207 define snat_control_ping_reply
215 /** \brief Show S-NAT plugin startup config
216 @param client_index - opaque cookie to identify the sender
217 @param context - sender context, to match reply w/ request
219 define snat_show_config
225 /** \brief Show S-NAT plugin startup config reply
226 @param context - sender context, to match reply w/ request
227 @param retval - return code for the request
228 @param static_mapping_only - if 1 dynamic translations disabled
229 @param static_mapping_connection_tracking - if 1 create session data
230 @param deterministic - if 1 deterministic mapping
231 @param translation_buckets - number of translation hash buckets
232 @param translation_memory_size - translation hash memory size
233 @param user_buckets - number of user hash buckets
234 @param user_memory_size - user hash memory size
235 @param max_translations_per_user - maximum number of translations per user
236 @param outside_vrf_id - outside VRF id
237 @param inside_vrf_id - default inside VRF id
239 define snat_show_config_reply
243 u8 static_mapping_only;
244 u8 static_mapping_connection_tracking;
246 u32 translation_buckets;
247 u32 translation_memory_size;
249 u32 user_memory_size;
250 u32 max_translations_per_user;
255 /** \brief Set S-NAT workers
256 @param client_index - opaque cookie to identify the sender
257 @param context - sender context, to match reply w/ request
258 @param worker_mask - S-NAT workers mask
260 define snat_set_workers {
266 /** \brief Set S-NAT workers reply
267 @param context - sender context, to match reply w/ request
268 @param retval - return code
270 define snat_set_workers_reply {
275 /** \brief Dump S-NAT workers
276 @param client_index - opaque cookie to identify the sender
277 @param context - sender context, to match reply w/ request
279 define snat_worker_dump {
284 /** \brief S-NAT workers details response
285 @param context - sender context, to match reply w/ request
286 @param worker_index - worker index
287 @param lcore_id - lcore ID
288 @param name - worker name
290 define snat_worker_details {
297 /** \brief Add/delete S-NAT pool address from specific interfce
298 @param client_index - opaque cookie to identify the sender
299 @param context - sender context, to match reply w/ request
300 @param is_add - 1 if add, 0 if delete
301 @param sw_if_index - software index of the interface
303 define snat_add_del_interface_addr {
311 /** \brief Add/delete S-NAT pool address from specific interfce reply
312 @param context - sender context, to match reply w/ request
313 @param retval - return code
315 define snat_add_del_interface_addr_reply {
320 /** \brief Dump S-NAT pool addresses interfaces
321 @param client_index - opaque cookie to identify the sender
322 @param context - sender context, to match reply w/ request
324 define snat_interface_addr_dump {
329 /** \brief S-NAT pool addresses interfaces details response
330 @param context - sender context, to match reply w/ request
331 @param sw_if_index - software index of the interface
333 define snat_interface_addr_details {
338 /** \brief Enable/disable S-NAT IPFIX logging
339 @param client_index - opaque cookie to identify the sender
340 @param context - sender context, to match reply w/ request
341 @param domain_id - observation domain ID
342 @param src_port - source port number
343 @param enable - 1 if enable, 0 if disable
345 define snat_ipfix_enable_disable {
353 /** \brief Enable/disable S-NAT IPFIX logging reply
354 @param context - sender context, to match reply w/ request
355 @param retval - return code
357 define snat_ipfix_enable_disable_reply {
362 /** \brief Dump S-NAT users
363 @param client_index - opaque cookie to identify the sender
364 @param context - sender context, to match reply w/ request
366 define snat_user_dump {
371 /** \brief S-NAT users response
372 @param context - sender context, to match reply w/ request
374 @param is_ip4 - 1 if address type is IPv4
375 @param ip_adress - IP address
376 @param nsessions - number of dynamic sessions
377 @param nstaticsessions - number of static sessions
379 define snat_user_details {
388 /** \brief S-NAT user's sessions
389 @param client_index - opaque cookie to identify the sender
390 @param context - sender context, to match reply w/ request
391 @param is_ip4 - 1 if address type is IPv4
392 @param user_ip - IP address of the user to dump
393 @param vrf_id - VRF_ID
395 define snat_user_session_dump {
403 /** \brief S-NAT user's sessions response
404 @param context - sender context, to match reply w/ request
405 @param is_ip4 - 1 if address type is IPv4
406 @param outside_ip_address - outside IP address
407 @param outside_port - outside port
408 @param inside_ip_address - inside IP address
409 @param inside_port - inside port
410 @param protocol - protocol
411 @param is_static - 1 if session is static
412 @param last_heard - last heard timer
413 @param total_bytes - count of bytes sent through session
414 @param total_pkts - count of pakets sent through session
416 define snat_user_session_details {
419 u8 outside_ip_address[16];
421 u8 inside_ip_address[16];
430 /** \brief Add/delete S-NAT deterministic mapping
431 @param client_index - opaque cookie to identify the sender
432 @param context - sender context, to match reply w/ request
433 @param is_add - 1 if add, 0 if delete
434 @param is_ip4 - 1 if address type is IPv4
435 @param in_addr - inside IP address
436 @param in_plen - inside IP address prefix length
437 @param out_addr - outside IP address
438 @param out_addr - outside IP address prefix length
440 define snat_add_det_map {
452 /** \brief Add/delete S-NAT deterministic mapping reply
453 @param context - sender context, to match reply w/ request
454 @param retval - return code
456 define snat_add_det_map_reply {
461 /** \brief Get outside address and port range from inside address
462 @param client_index - opaque cookie to identify the sender
463 @param context - sender context, to match reply w/ request
464 @param is_ip4 - 1 if address type is IPv4
465 @param in_addr - inside IP address
467 define snat_det_forward {
474 /** \brief Get outside address and port range from inside address
475 @param context - sender context, to match reply w/ request
476 @param retval - return code
477 @param out_port_lo - outside port range start
478 @param out_port_hi - outside port range end
479 @param is_ip4 - 1 if address type is IPv4
480 @param out_addr - outside IP address
482 define snat_det_forward_reply {
491 /** \brief Get inside address from outside address and port
492 @param client_index - opaque cookie to identify the sender
493 @param context - sender context, to match reply w/ request
494 @param out_port - outside port
495 @param is_ip4 - 1 if address type is IPv4
496 @param out_addr - outside IP address
498 define snat_det_reverse {
506 /** \brief Get inside address from outside address and port reply
507 @param context - sender context, to match reply w/ request
508 @param retval - return code
509 @param is_ip4 - 1 if address type is IPv4
510 @param in_addr - inside IP address
512 define snat_det_reverse_reply {
519 /** \brief Dump S-NAT deterministic mappings
520 @param client_index - opaque cookie to identify the sender
521 @param context - sender context, to match reply w/ request
523 define snat_det_map_dump {
528 /** \brief S-NAT users response
529 @param context - sender context, to match reply w/ request
530 @param is_ip4 - 1 if address type is IPv4
531 @param in_addr - inside IP address
532 @param in_plen - inside IP address prefix length
533 @param out_addr - outside IP address
534 @param out_plen - outside IP address prefix length
535 @param sharing_ratio - outside to inside address sharing ratio
536 @param ports_per_host - number of ports available to a host
537 @param ses_num - number of sessions belonging to this mapping
539 define snat_det_map_details {
551 /** \brief Set values of timeouts for deterministic NAT (seconds, 0 = default)
552 @param client_index - opaque cookie to identify the sender
553 @param context - sender context, to match reply w/ request
554 @param udp - UDP timeout (default 300sec)
555 @param tcp_established - TCP established timeout (default 7440sec)
556 @param tcp_transitory - TCP transitory timeout (default 240sec)
557 @param icmp - ICMP timeout (default 60sec)
559 define snat_det_set_timeouts {
568 /** \brief Set values of timeouts for deterministic NAT reply
569 @param context - sender context, to match reply w/ request
570 @param retval - return code
572 define snat_det_set_timeouts_reply {
577 /** \brief Get values of timeouts for deterministic NAT (seconds)
578 @param client_index - opaque cookie to identify the sender
579 @param context - sender context, to match reply w/ request
581 define snat_det_get_timeouts {
586 /** \brief Get values of timeouts for deterministic NAT reply
587 @param context - sender context, to match reply w/ request
588 @param retval - return code
589 @param udp - UDP timeout (default 300sec)
590 @param tcp_established - TCP established timeout (default 7440sec)
591 @param tcp_transitory - TCP transitory timeout (default 240sec)
592 @param icmp - ICMP timeout (default 60sec)
594 define snat_det_get_timeouts_reply {