l3xc: use explicit types in api
[vpp.git] / src / plugins / l3xc / l3xc.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2016 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 /** \file
18     This file defines the vpp control-plane API messages
19     used to control the L3XC plugin
20 */
21
22 option version = "1.0.1";
23
24 import "vnet/fib/fib_types.api";
25 import "vnet/interface_types.api";
26
27 /** \brief Get the plugin version
28     @param client_index - opaque cookie to identify the sender
29     @param context - sender context, to match reply w/ request
30 */
31 define l3xc_plugin_get_version
32 {
33   u32 client_index;
34   u32 context;
35 };
36
37 /** \brief Reply to get the plugin version
38     @param context - returned sender context, to match reply w/ request
39     @param major - Incremented every time a known breaking behavior change is introduced
40     @param minor - Incremented with small changes, may be used to avoid buggy versions
41 */
42 define l3xc_plugin_get_version_reply
43 {
44   u32 context;
45   u32 major;
46   u32 minor;
47 };
48
49 /** \brief A description of an L3XC policy
50     @param input interface of the x-connect
51     @param n_paths Number of paths
52     @param paths The set of forwarding paths.
53  */
54 typedef l3xc
55 {
56   vl_api_interface_index_t sw_if_index;
57   bool is_ip6;
58   u8 n_paths;
59   vl_api_fib_path_t paths[n_paths];
60 };
61
62 define l3xc_update
63 {
64   u32 client_index;
65   u32 context;
66   vl_api_l3xc_t l3xc;
67 };
68 define l3xc_update_reply
69 {
70   u32 context;
71   i32 retval;
72   u32 stats_index;
73 };
74
75
76 autoreply define l3xc_del
77 {
78   u32 client_index;
79   u32 context;
80   vl_api_interface_index_t sw_if_index;
81   bool is_ip6;
82 };
83
84 /** \brief Dump all L3XC policies
85  */
86 define l3xc_dump
87 {
88   u32 client_index;
89   u32 context;
90   vl_api_interface_index_t sw_if_index;
91 };
92
93 /** \brief description returned in the dump
94  */
95 define l3xc_details
96 {
97   u32 context;
98   vl_api_l3xc_t l3xc;
99 };