FD.io VPP  v21.06
Vector Packet Processing
ikev2.api
Go to the documentation of this file.
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2015-2020 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 option version = "1.0.1";
18 
19 import "plugins/ikev2/ikev2_types.api";
20 import "vnet/ip/ip_types.api";
21 import "vnet/interface_types.api";
22 
23 /** \brief Get the plugin version
24  @param client_index - opaque cookie to identify the sender
25  @param context - sender context, to match reply w/ request
26 */
27 define ikev2_plugin_get_version
28 {
31 };
32 
33 /** \brief Reply to get the plugin version
34  @param context - returned sender context, to match reply w/ request
35  @param major - Incremented every time a known breaking behavior change is introduced
36  @param minor - Incremented with small changes, may be used to avoid buggy versions
37 */
38 define ikev2_plugin_get_version_reply
39 {
43 };
44 
45 /** \brief Dump all profiles
46  @param client_index - opaque cookie to identify the sender
47  @param context - sender context, to match reply w/ request
48 */
49 define ikev2_profile_dump
50 {
53  option status="in_progress";
54 };
55 
56 /** \brief Details about all profiles
57  @param context - returned sender context, to match reply w/ request
58  @param profile - profile element with encapsulated attributes
59 */
60 define ikev2_profile_details
61 {
63  vl_api_ikev2_profile_t profile;
64  option status="in_progress";
65 };
66 
67 /** \brief Dump all SAs
68  @param client_index - opaque cookie to identify the sender
69  @param context - sender context, to match reply w/ request
70 */
71 define ikev2_sa_dump
72 {
75 
76  option status = "in_progress";
77 };
78 
79 /** \brief Details about IKE SA
80  @param context - sender context, to match reply w/ request
81  @param retval - return code
82  @param sa - SA data
83 */
84 define ikev2_sa_details
85 {
88 
89  vl_api_ikev2_sa_t sa;
90  option status = "in_progress";
91 };
92 
93 /** \brief Dump child SA of specific SA
94  @param client_index - opaque cookie to identify the sender
95  @param context - sender context, to match reply w/ request
96  @param sa_index - index of specific sa
97 */
98 define ikev2_child_sa_dump
99 {
102 
104  option vat_help = "sa_index <index>";
105  option status = "in_progress";
106 };
107 
108 /** \brief Child SA details
109  @param context - sender context, to match reply w/ request
110  @param retval - return code
111  @param child_sa - child SA data
112 */
113 define ikev2_child_sa_details
114 {
117 
118  vl_api_ikev2_child_sa_t child_sa;
119  option status = "in_progress";
120 };
121 
122 /** \brief get specific nonce
123  @param client_index - opaque cookie to identify the sender
124  @param context - sender context, to match reply w/ request
125  @param is_initiator - specify type initiator|responder of nonce
126  @param sa_index - index of specific sa
127 */
128 define ikev2_nonce_get
129 {
132 
135  option vat_help = "initiator|responder sa_index <index>";
136  option status = "in_progress";
137 };
138 
139 /** \brief reply on specific nonce
140  @param context - sender context, to match reply w/ request
141  @param retval - return code
142  @param data_len - nonce length
143  @param nonce - nonce data
144 */
145 
146 define ikev2_nonce_get_reply
147 {
150 
152  u8 nonce[data_len];
153  option status = "in_progress";
154 };
155 
156 /** \brief dump traffic selectors
157  @param client_index - opaque cookie to identify the sender
158  @param context - sender context, to match reply w/ request
159  @param is_initiator - specify type initiator|responder of nonce
160  @param sa_index - index of specific sa
161  @param child_sa_index - index of specific sa child of specific sa
162 */
163 
164 define ikev2_traffic_selector_dump
165 {
168 
172  option vat_help = "initiator|responder sa_index <index> child_sa_index <index>";
173  option status = "in_progress";
174 };
175 
176 /** \brief details on specific traffic selector
177  @param context - sender context, to match reply w/ request
178  @param retval - return code
179  @param ts - traffic selector data
180 */
181 
182 define ikev2_traffic_selector_details
183 {
186 
187  vl_api_ikev2_ts_t ts;
188  option status = "in_progress";
189 };
190 
191 /** \brief IKEv2: Add/delete profile
192  @param client_index - opaque cookie to identify the sender
193  @param context - sender context, to match reply w/ request
194  @param name - IKEv2 profile name
195  @param is_add - Add IKEv2 profile if non-zero, else delete
196 */
197 autoreply define ikev2_profile_add_del
198 {
201 
202  string name[64];
203  bool is_add;
204  option vat_help = "name <profile_name> [del]";
205  option status="in_progress";
206 };
207 
208 /** \brief IKEv2: Set IKEv2 profile authentication method
209  @param client_index - opaque cookie to identify the sender
210  @param context - sender context, to match reply w/ request
211  @param name - IKEv2 profile name
212  @param auth_method - IKEv2 authentication method (shared-key-mic/rsa-sig)
213  @param is_hex - Authentication data in hex format if non-zero, else string
214  @param data_len - Authentication data length
215  @param data - Authentication data (for rsa-sig cert file path)
216 */
217 autoreply define ikev2_profile_set_auth
218 {
221 
222  string name[64];
224  bool is_hex;
227  option vat_help = "name <profile_name> auth_method <method> (auth_data 0x<data> | auth_data <data>)";
228  option status="in_progress";
229 };
230 
231 /** \brief IKEv2: Set IKEv2 profile local/remote identification
232  @param client_index - opaque cookie to identify the sender
233  @param context - sender context, to match reply w/ request
234  @param name - IKEv2 profile name
235  @param is_local - Identification is local if non-zero, else remote
236  @param id_type - Identification type
237  @param data_len - Identification data length
238  @param data - Identification data
239 */
240 autoreply define ikev2_profile_set_id
241 {
244 
245  string name[64];
246  bool is_local;
250  option vat_help = "name <profile_name> id_type <type> (id_data 0x<data> | id_data <data>) (local|remote)";
251  option status="in_progress";
252 };
253 
254 /** \brief IKEv2: Disable NAT traversal
255  @param client_index - opaque cookie to identify the sender
256  @param context - sender context, to match reply w/ request
257  @param name - IKEv2 profile name
258 */
259 autoreply define ikev2_profile_disable_natt
260 {
263 
264  string name[64];
265  option status="in_progress";
266 };
267 
268 /** \brief IKEv2: Set IKEv2 profile traffic selector parameters
269  @param client_index - opaque cookie to identify the sender
270  @param context - sender context, to match reply w/ request
271  @param name - IKEv2 profile name
272  @param ts - traffic selector data
273 */
274 autoreply define ikev2_profile_set_ts
275 {
278 
279  string name[64];
280  vl_api_ikev2_ts_t ts;
281  option vat_help = "name <profile_name> protocol <proto> start_port <port> end_port <port> start_addr <ip> end_addr <ip> (local|remote)";
282  option status="in_progress";
283 };
284 
285 /** \brief IKEv2: Set IKEv2 local RSA private key
286  @param client_index - opaque cookie to identify the sender
287  @param context - sender context, to match reply w/ request
288  @param key_file - Key file absolute path
289 */
290 autoreply define ikev2_set_local_key
291 {
294 
295  string key_file[256];
296  option vat_help = "file <absolute_file_path>";
297  option status="in_progress";
298 };
299 
300 /** \brief IKEv2: Set the tunnel interface which will be protected by IKE
301  If this API is not called, a new tunnel will be created
302  @param client_index - opaque cookie to identify the sender
303  @param context - sender context, to match reply w/ request
304  @param name - IKEv2 profile name
305  @param sw_if_index - Of an existing tunnel
306 */
307 autoreply define ikev2_set_tunnel_interface
308 {
311  string name[64];
312 
313  vl_api_interface_index_t sw_if_index;
314  option status="in_progress";
315 };
316 
317 /** \brief IKEv2: Set IKEv2 responder interface and IP address
318  @param client_index - opaque cookie to identify the sender
319  @param context - sender context, to match reply w/ request
320  @param name - IKEv2 profile name
321  @param responder - responder data
322 */
323 autoreply define ikev2_set_responder
324 {
327 
328  string name[64];
329  vl_api_ikev2_responder_t responder;
330  option vat_help = "<profile_name> interface <interface> address <addr>";
331  option status="in_progress";
332 };
333 
334 autoreply define ikev2_set_responder_hostname
335 {
338 
339  string name[64];
340  string hostname[64];
341  vl_api_interface_index_t sw_if_index;
342  option status="in_progress";
343 };
344 
345 /** \brief IKEv2: Set IKEv2 IKE transforms in SA_INIT proposal (RFC 7296)
346  @param client_index - opaque cookie to identify the sender
347  @param context - sender context, to match reply w/ request
348  @param name - IKEv2 profile name
349  @param tr - IKE transforms
350 */
351 autoreply define ikev2_set_ike_transforms
352 {
355 
356  string name[64];
357  vl_api_ikev2_ike_transforms_t tr;
358  option vat_help = "<profile_name> <crypto alg> <key size> <integrity alg> <DH group>";
359  option status="in_progress";
360 };
361 
362 /** \brief IKEv2: Set IKEv2 ESP transforms in SA_INIT proposal (RFC 7296)
363  @param client_index - opaque cookie to identify the sender
364  @param context - sender context, to match reply w/ request
365  @param name - IKEv2 profile name
366  @param tr - ESP transforms
367 */
368 autoreply define ikev2_set_esp_transforms
369 {
372 
373  string name[64];
374  vl_api_ikev2_esp_transforms_t tr;
375  option vat_help = "<profile_name> <crypto alg> <key size> <integrity alg>";
376  option status="in_progress";
377 };
378 
379 /** \brief IKEv2: Set Child SA lifetime, limited by time and/or data
380  @param client_index - opaque cookie to identify the sender
381  @param context - sender context, to match reply w/ request
382  @param name - IKEv2 profile name
383  @param lifetime - SA maximum life time in seconds (0 to disable)
384  @param lifetime_jitter - Jitter added to prevent simultaneous rekeying
385  @param handover - Hand over time
386  @param lifetime_maxdata - SA maximum life time in bytes (0 to disable)
387 */
388 autoreply define ikev2_set_sa_lifetime
389 {
392 
393  string name[64];
398  option vat_help = "<profile_name> <seconds> <jitter> <handover> <max bytes>";
399  option status="in_progress";
400 };
401 
402 /** \brief IKEv2: Initiate the SA_INIT exchange
403  @param client_index - opaque cookie to identify the sender
404  @param context - sender context, to match reply w/ request
405  @param name - IKEv2 profile name
406 */
407 autoreply define ikev2_initiate_sa_init
408 {
411 
412  string name[64];
413  option vat_help = "<profile_name>";
414  option status="in_progress";
415 };
416 
417 /** \brief IKEv2: Initiate the delete IKE SA exchange
418  @param client_index - opaque cookie to identify the sender
419  @param context - sender context, to match reply w/ request
420  @param ispi - IKE SA initiator SPI
421 */
422 autoreply define ikev2_initiate_del_ike_sa
423 {
426 
428  option vat_help = "<ispi>";
429  option status="in_progress";
430 };
431 
432 /** \brief IKEv2: Initiate the delete Child SA exchange
433  @param client_index - opaque cookie to identify the sender
434  @param context - sender context, to match reply w/ request
435  @param ispi - Child SA initiator SPI
436 */
437 autoreply define ikev2_initiate_del_child_sa
438 {
441 
443  option vat_help = "<ispi>";
444  option status="in_progress";
445 };
446 
447 /** \brief IKEv2: Initiate the rekey Child SA exchange
448  @param client_index - opaque cookie to identify the sender
449  @param context - sender context, to match reply w/ request
450  @param ispi - Child SA initiator SPI
451 */
453 {
456 
458  option vat_help = "<ispi>";
459  option status="in_progress";
460 };
461 
462 /** \brief IKEv2: Set UDP encapsulation
463  @param client_index - opaque cookie to identify the sender
464  @param context - sender context, to match reply w/ request
465  @param name - IKEv2 profile name
466 */
467 autoreply define ikev2_profile_set_udp_encap
468 {
471 
472  string name[64];
473  option status="in_progress";
474 };
475 
476 /** \brief IKEv2: Set/unset custom ipsec-over-udp port
477  @param client_index - opaque cookie to identify the sender
478  @param context - sender context, to match reply w/ request
479  @param is_set - whether set or unset custom port
480  @param port - port number
481  @param name - IKEv2 profile name
482 */
483 autoreply define ikev2_profile_set_ipsec_udp_port
484 {
487 
490  string name[64];
491  option status="in_progress";
492 };
493 
494 /** \brief IKEv2: Set liveness parameters
495  @param client_index - opaque cookie to identify the sender
496  @param context - sender context, to match reply w/ request
497  @param period - how often is liveness check performed
498  @param max_retries - max retries for liveness check
499 */
500 autoreply define ikev2_profile_set_liveness
501 {
504 
507  option status="in_progress";
508 };
509 
510 counters ikev2 {
511  processed {
512  severity info;
513  type counter64;
514  units "packets";
515  description "packets processed";
516  };
518  severity info;
520  units "packets";
521  description "IKE SA INIT retransmit";
522  };
524  severity error;
525  type counter64;
526  units "packets";
527  description "IKE_SA_INIT ignore (IKE SA already auth)";
528  };
530  severity error;
531  type counter64;
532  units "packets";
533  description "IKE request retransmit";
534  };
536  severity error;
537  type counter64;
538  units "packets";
539  description "IKE request ignore (old msgid)";
540  };
542  severity error;
543  type counter64;
544  units "packets";
545  description "Non IKEv2 packets received";
546  };
548  severity error;
549  type counter64;
550  units "packets";
551  description "Bad packet length";
552  };
554  severity error;
555  type counter64;
556  units "packets";
557  description "Malformed packet";
558  };
560  severity error;
561  type counter64;
562  units "packets";
563  description "No buffer space";
564  };
566  severity info;
567  type counter64;
568  units "packets";
569  description "IKE keepalive messages received";
570  };
572  severity info;
573  type counter64;
574  units "packets";
575  description "IKE rekey requests received";
576  };
578  severity info;
579  type counter64;
580  units "packets";
581  description "IKE EXCHANGE SA requests received";
582  };
584  severity info;
585  type counter64;
586  units "packets";
587  description "IKE AUTH SA requests received";
588  };
589 };
591  "/err/ikev2-ip4" "ike";
592  "/err/ikev2-ip6" "ike";
593  "/err/ikev2-ip4-natt" "ike";
594 };
595 
596 /*
597  * Local Variables:
598  * eval: (c-set-style "gnu")
599  * End:
600  */
paths
Definition: ikev2.api:590
string hostname[64]
Definition: dhcp.api:159
vl_api_ikev2_sa_t sa
Definition: ikev2.api:89
type counter64
Definition: ikev2.api:519
vl_api_ikev2_ike_transforms_t tr
Definition: ikev2.api:357
ike_sa_init_retransmit
Definition: ikev2.api:517
vl_api_ikev2_ts_t ts
Definition: ikev2.api:280
unsigned long u64
Definition: types.h:89
ike_sa_init_ignore
Definition: ikev2.api:523
string name[64]
Definition: fib.api:25
counters ikev2
Definition: ikev2.api:510
unsigned char u8
Definition: types.h:56
u8 data[128]
Definition: ipsec_types.api:92
unsigned int u32
Definition: types.h:88
not_ikev2
Definition: ikev2.api:541
clib_error_t * ikev2_initiate_sa_init(vlib_main_t *vm, u8 *name)
Definition: ikev2.c:4286
vl_api_fib_path_type_t type
Definition: fib_types.api:123
Definition: cJSON.c:88
no_buff_space
Definition: ikev2.api:559
vl_api_ikev2_esp_transforms_t tr
Definition: ikev2.api:374
vl_api_interface_index_t sw_if_index
Definition: ikev2.api:341
unsigned short u16
Definition: types.h:57
u8 data_len
Definition: ikev2_types.api:24
ike_req_ignore
Definition: ikev2.api:535
vl_api_ikev2_profile_t profile
Definition: ikev2.api:63
vl_api_interface_index_t sw_if_index
Definition: ikev2.api:313
keepalive
Definition: ikev2.api:565
clib_error_t * ikev2_set_local_key(vlib_main_t *vm, u8 *file)
Definition: ikev2.c:3711
clib_error_t * ikev2_initiate_rekey_child_sa(vlib_main_t *vm, u32 ispi)
Definition: ikev2.c:4636
signed int i32
Definition: types.h:77
ike_req_retransmit
Definition: ikev2.api:529
vl_api_ikev2_responder_t responder
Definition: ikev2.api:329
init_sa_req
Definition: ikev2.api:577
option version
Definition: ikev2.api:17
ike_auth_req
Definition: ikev2.api:583
malformed_packet
Definition: ikev2.api:553
bad_length
Definition: ikev2.api:547
vl_api_ikev2_child_sa_t child_sa
Definition: ikev2.api:118
rekey_req
Definition: ikev2.api:571