ec4933af197b7d7a940e2873ff7c74d9be1743a6
[vpp.git] / src / plugins / gtpu / gtpu.api
1 /*
2  * Copyright (c) 2017 Intel 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 = "2.0.1";
17 import "vnet/interface_types.api";
18 import "vnet/ip/ip_types.api";
19
20 /** \brief Create or delete a GTPU tunnel
21     @param client_index - opaque cookie to identify the sender
22     @param context - sender context, to match reply w/ request
23     @param is_add - add address if non-zero, else delete
24     @param src_address - GTPU tunnel's source address.
25     @param dst_address - GTPU tunnel's destination address.
26     @param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
27     @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
28     @param decap_next_index - the index of the next node if success
29     @param teid - Local (rx) Tunnel Endpoint Identifier
30     @param tteid - Remote (tx) Tunnel Endpoint Identifier
31 */
32 define gtpu_add_del_tunnel
33 {
34   u32 client_index;
35   u32 context;
36   bool is_add;
37   vl_api_address_t src_address;
38   vl_api_address_t dst_address;
39   vl_api_interface_index_t mcast_sw_if_index;
40   u32 encap_vrf_id;
41   u32 decap_next_index;
42   u32 teid;
43   u32 tteid;
44   option vat_help = "src <ip-addr> {dst <ip-addr> | group <mcast-ip-addr> {<intfc> | mcast_sw_if_index <nn>}} teid <nn> [tteid <nn>] [encap-vrf-id <nn>] [decap-next <l2|nn>] [del]";
45 };
46
47 /** \brief reply for set or delete an GTPU tunnel
48     @param context - sender context, to match reply w/ request
49     @param retval - return code
50     @param sw_if_index - software index of the interface
51 */
52 define gtpu_add_del_tunnel_reply
53 {
54   u32 context;
55   i32 retval;
56   vl_api_interface_index_t sw_if_index;
57 };
58
59 /** \brief Update GTPU tunnel TX TEID
60     @param client_index - opaque cookie to identify the sender
61     @param context - sender context, to match reply w/ request
62     @param dst_address - GTPU tunnel's destination address.
63     @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
64     @param teid - Local (rx) Tunnel Endpoint Identifier
65     @param tteid - remote (tx) Tunnel Endpoint Identifier
66 */
67 autoreply define gtpu_tunnel_update_tteid
68 {
69   u32 client_index;
70   u32 context;
71   vl_api_address_t dst_address;
72   u32 encap_vrf_id;
73   u32 teid;
74   u32 tteid;
75   option vat_help = "dst <ip-addr> teid <nn> tteid <nn> [encap-vrf-id <nn>]";
76 };
77
78 /** \brief Dump GTPU tunnel
79     @param client_index - opaque cookie to identify the sender
80     @param context - sender context, to match reply w/ request
81     @param sw_if_index - software index of the interface
82 */
83 define gtpu_tunnel_dump
84 {
85   u32 client_index;
86   u32 context;
87   vl_api_interface_index_t sw_if_index;
88   option vat_help = "[<intfc> | sw_if_index <nn>]";
89 };
90
91 /** \brief dump details of an GTPU tunnel
92     @param context - sender context, to match reply w/ request
93     @param sw_if_index - software index of the interface
94     @param src_address - GTPU tunnel's source address.
95     @param dst_address - GTPU tunnel's destination address.
96     @param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
97     @param encap_vrf_id - fib identifier used for outgoing encapsulated packets
98     @param decap_next_index - the index of the next node if success
99     @param teid - Local (rx) Tunnel Endpoint Identifier
100     @param tteid - Remote (tx) Tunnel Endpoint Identifier
101 */
102 define gtpu_tunnel_details
103 {
104   u32 context;
105   vl_api_interface_index_t sw_if_index;
106   vl_api_address_t src_address;
107   vl_api_address_t dst_address;
108   vl_api_interface_index_t mcast_sw_if_index;
109   u32 encap_vrf_id;
110   u32 decap_next_index;
111   u32 teid;
112   u32 tteid;
113 };
114
115 /** \brief Interface set gtpu-bypass request
116     @param client_index - opaque cookie to identify the sender
117     @param context - sender context, to match reply w/ request
118     @param sw_if_index - interface used to reach neighbor
119     @param is_ipv6 - if non-zero, enable ipv6-gtpu-bypass, else ipv4-gtpu-bypass
120     @param enable - if non-zero enable, else disable
121 */
122 autoreply define sw_interface_set_gtpu_bypass
123 {
124   u32 client_index;
125   u32 context;
126   vl_api_interface_index_t sw_if_index;
127   bool is_ipv6;
128   bool enable;
129   option vat_help = "<intfc> | sw_if_index <id> [ip4 | ip6] [enable | disable]";
130 };
131
132 /** \brief Offload gtpu rx request
133     @param client_index - opaque cookie to identify the sender
134     @param context - sender context, to match reply w/ request
135     @param hw_if_index - rx hw interface
136     @param sw_if_index - gtpu interface to offload
137     @param enable - if non-zero enable, else disable
138 */
139 autoreply define gtpu_offload_rx
140 {
141   u32 client_index;
142   u32 context;
143   u32 hw_if_index;
144   u32 sw_if_index;
145   u8 enable;
146   option vat_help = "hw <intfc> rx <tunnel-name> [del]";
147 };
148
149 /*
150  * Local Variables:
151  * eval: (c-set-style "gnu")
152  * End:
153  */