api: clean up use of deprecated flag
[vpp.git] / src / plugins / map / map.api
1 /*
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:
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 option version = "4.2.1";
17
18 import "vnet/ip/ip_types.api";
19 import "vnet/interface_types.api";
20
21 /** \brief Add MAP domains
22     @param client_index - opaque cookie to identify the sender
23     @param context - sender context, to match reply w/ request
24     @param ip6_prefix - Rule IPv6 prefix
25     @param ip4_prefix - Rule IPv4 prefix
26     @param ip6_src - MAP domain IPv6 BR address / Tunnel source
27     @param ea_bits_len - Embedded Address bits length
28     @param psid_offset - Port Set Identifier (PSID) offset
29     @param psid_length - PSID length
30     @param mtu - MTU. default 1280
31     @param tag - A user field stored with the MAP
32 */
33 define map_add_domain
34 {
35   u32 client_index;
36   u32 context;
37   vl_api_ip6_prefix_t ip6_prefix;
38   vl_api_ip4_prefix_t ip4_prefix;
39   vl_api_ip6_prefix_t ip6_src;
40   u8 ea_bits_len;
41   u8 psid_offset;
42   u8 psid_length;
43   u16 mtu [default=1280];
44   string tag[64];
45 };
46
47 /** \brief Reply for MAP domain add
48     @param context - returned sender context, to match reply w/ request
49     @param index - MAP domain index
50     @param retval - return code
51 */
52 define map_add_domain_reply
53 {
54   u32 context;
55   u32 index;
56   i32 retval;
57 };
58
59 /** \brief Delete MAP domain
60     @param client_index - opaque cookie to identify the sender
61     @param context - sender context, to match reply w/ request
62     @param index - MAP Domain index
63 */
64 autoreply define map_del_domain
65 {
66   u32 client_index;
67   u32 context;
68   u32 index;
69 };
70
71
72 /** \brief Add or Delete MAP rule from a domain (Only used for shared IPv4 per subscriber)
73     @param client_index - opaque cookie to identify the sender
74     @param context - sender context, to match reply w/ request
75     @param index - MAP Domain index
76     @param is_add - If 1 add rule, if 0 delete rule
77     @param ip6_dst - MAP CE IPv6 address
78     @param psid - Rule PSID
79 */
80 autoreply define map_add_del_rule
81 {
82   u32 client_index;
83   u32 context;
84   u32 index;
85   bool is_add;
86   vl_api_ip6_address_t ip6_dst;
87   u16 psid;
88 };
89
90
91 /** \brief Get list of map domains
92     @param client_index - opaque cookie to identify the sender
93 */
94 service {
95   rpc map_domains_get returns map_domains_get_reply
96     stream map_domain_details;
97 };
98
99 define map_domains_get
100 {
101   u32 client_index;
102   u32 context;
103   u32 cursor;
104 };
105
106 define map_domains_get_reply
107 {
108   u32 context;
109   i32 retval;
110   u32 cursor;
111 };
112
113 define map_domain_dump
114 {
115   option deprecated;
116   u32 client_index;
117   u32 context;
118 };
119
120 /** \brief Details about a single MAP domain
121     @param context - returned sender context, to match reply w/ request
122     @param domain_index - MAP domain index
123     @param ip6_prefix - Rule IPv6 prefix
124     @param ip4_prefix - Rule IPv4 prefix
125     @param ip6_src - MAP domain IPv6 BR address / Tunnel source
126     @param ea_bits_len - Embedded Address bits length
127     @param psid_offset - Port Set Identifier (PSID) offset
128     @param psid_length - PSID length
129     @param flags -
130     @param mtu - MTU
131     @param tag - The user field stored with the MAP at creation time
132 */
133 define map_domain_details
134 {
135   u32 context;
136   u32 domain_index;
137   vl_api_ip6_prefix_t ip6_prefix;
138   vl_api_ip4_prefix_t ip4_prefix;
139   vl_api_ip6_prefix_t ip6_src;
140   u8 ea_bits_len;
141   u8 psid_offset;
142   u8 psid_length;
143   u8 flags;
144   u16 mtu;
145   string tag[64];
146 };
147
148 define map_rule_dump
149 {
150   u32 client_index;
151   u32 context;
152   u32 domain_index;
153 };
154
155 define map_rule_details
156 {
157   u32 context;
158   vl_api_ip6_address_t ip6_dst;
159   u16 psid;
160 };
161
162 /** \brief Enable or disable a MAP interface
163     @param client_index - opaque cookie to identify the sender
164     @param context - sender context, to match reply w/ request
165     @param sw_if_index -
166     @param is_enable - 0=disable, 1=enable interface
167     @param is_translation -  0=encapsulation, 1=translation
168 */
169 autoreply define map_if_enable_disable
170 {
171   u32 client_index;
172   u32 context;
173   vl_api_interface_index_t sw_if_index;
174   bool is_enable;
175   bool is_translation; /* 0 - encapsulation, 1 - translation */
176 };
177
178 /** \brief Request for a single block of summary stats
179     @param client_index - opaque cookie to identify the sender
180     @param context - sender context, to match reply w/ request
181 */
182 define map_summary_stats
183 {
184   u32 client_index;
185   u32 context;
186 };
187
188 /** \brief Reply for map_summary_stats request
189     @param context - sender context, to match reply w/ request
190     @param retval - return code for request
191     @param total_bindings -
192     @param total_pkts -
193     @param total_ip4_fragments -
194     @param total_security_check -
195 */
196 define map_summary_stats_reply
197 {
198   u32 context;
199   i32 retval;
200   u64 total_bindings;
201   u64 total_pkts[2];
202   u64 total_bytes[2];
203   u64 total_ip4_fragments;
204   u64 total_security_check[2];
205 };
206
207
208 /** \brief Set MAP fragmentation parameters
209     @param client_index - opaque cookie to identify the sender
210     @param context - sender context, to match reply w/ request
211     @param inner - 1=frag inner packet, 0=frag tunnel packets
212     @param ignore_df - 1=IP4 fragment despite DF bit, 0=honor DF
213 */
214 autoreply define map_param_set_fragmentation
215 {
216   u32 client_index;
217   u32 context;
218   bool inner;
219   bool ignore_df;
220 };
221
222
223 /** \brief Set MAP ICMP parameters
224     @param client_index - opaque cookie to identify the sender
225     @param context - sender context, to match reply w/ request
226     @param icmp4_err_relay_src - IPv4 ICMP err relay src address
227 */
228 autoreply define map_param_set_icmp
229 {
230   u32 client_index;
231   u32 context;
232   vl_api_ip4_address_t ip4_err_relay_src;
233 };
234
235
236 /** \brief Set MAP ICMP6 parameters
237     @param client_index - opaque cookie to identify the sender
238     @param context - sender context, to match reply w/ request
239     @param enable_unreachable - 1 = send ICMP unreachable err msgs
240 */
241 autoreply define map_param_set_icmp6
242 {
243   u32 client_index;
244   u32 context;
245   bool enable_unreachable;
246 };
247
248
249 /** \brief Add/delete MAP pre-resolve IP addresses parameters
250     @param client_index - opaque cookie to identify the sender
251     @param context - sender context, to match reply w/ request
252     @param is_add - 1 = Add non-zero IP addresses, 0 = delete
253     @param ip4_nh_address - direct IP4 next-hop address
254     @param ip6_nh_address - direct IP6 next-hop address
255 */
256 autoreply define map_param_add_del_pre_resolve
257 {
258   u32 client_index;
259   u32 context;
260   bool is_add;
261   vl_api_ip4_address_t ip4_nh_address;
262   vl_api_ip6_address_t ip6_nh_address;
263 };
264
265 /** \brief Set MAP security-check parameters
266     @param client_index - opaque cookie to identify the sender
267     @param context - sender context, to match reply w/ request
268     @param enable - 1=enable security check on first inbound packet
269     @param fragments - 1=enable check on (subsequent) fragments too
270 */
271 autoreply define map_param_set_security_check
272 {
273   u32 client_index;
274   u32 context;
275   bool enable;
276   bool fragments;
277 };
278
279
280 /** \brief Set MAP traffic class parameters
281     @param client_index - opaque cookie to identify the sender
282     @param context - sender context, to match reply w/ request
283     @param copy - 1 = copy packet class/TOS field, 0 = use tc_class instead
284     @param tc_class - class field value when copy == 0
285 */
286 autoreply define map_param_set_traffic_class
287 {
288   u32 client_index;
289   u32 context;
290   bool copy;
291   u8 tc_class;
292 };
293
294
295 /** \brief Set MAP TCP parameters
296     @param client_index - opaque cookie to identify the sender
297     @param context - sender context, to match reply w/ request
298     @parma tcp_mss - TCP MSS clamping value
299 */
300 autoreply define map_param_set_tcp
301 {
302   u32 client_index;
303   u32 context;
304   u16 tcp_mss;
305 };
306
307
308 /** \brief Request for a single block of MAP parameters
309     @param client_index - opaque cookie to identify the sender
310     @param context - sender context, to match reply w/ request
311 */
312 define map_param_get
313 {
314   u32 client_index;
315   u32 context;
316 };
317
318
319 /** \brief Reply for map_param_get request
320     @param context - sender context, to match reply w/ request
321     @param retval - return code for request
322     @param inner - 1=frag inner packet, 0=frag tunnel packets, ~0=untouched
323     @param ignore_df - 1=IP4 fragm despite DF bit, 0=honor DF, ~0=untouched
324     @param icmp_ip4_err_relay_src - IPv4 ICMP err relay src address
325     @param icmp6_enable_unreachable - 1 = send ICMP unreachable err msgs
326     @param ip4_nh_address - direct IP4 next-hop address
327     @param ip6_nh_address - direct IP6 next-hop address
328     @param sec_check_enable - 1=enable security check on first inbound packet
329     @param sec_check_fragments - 1=enable check on (subsequent) fragments too
330     @param tc_copy - 1 = copy packet class/TOS field, 0 = use class instead
331     @param tc_class - class field value when copy == 0
332 */
333 define map_param_get_reply
334 {
335   u32 context;
336   i32 retval;
337   u8 frag_inner;
338   u8 frag_ignore_df;
339   vl_api_ip4_address_t icmp_ip4_err_relay_src;
340   bool icmp6_enable_unreachable;
341   vl_api_ip4_address_t ip4_nh_address;
342   vl_api_ip6_address_t ip6_nh_address;
343   u16 ip4_lifetime_ms;
344   u16 ip4_pool_size;
345   u32 ip4_buffers;
346   f64 ip4_ht_ratio;
347   bool sec_check_enable;
348   bool sec_check_fragments;
349   bool tc_copy;
350   u8 tc_class;
351 };