2017-04-12 19:21:16 +08:00
/*
2017-06-01 00:24:12 +08:00
* Copyright (c) 2017 Intel and/or its affiliates.
2017-04-12 19:21:16 +08:00
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
2022-11-22 10:35:03 +01:00
option version = "2.1.0";
2019-12-08 14:14:37 +01:00
import "vnet/interface_types.api";
import "vnet/ip/ip_types.api";
2017-09-28 15:11:16 -04:00
2022-11-22 10:35:03 +01:00
enum gtpu_forwarding_type
{
GTPU_API_FORWARDING_NONE = 0,
GTPU_API_FORWARDING_BAD_HEADER = 1,
GTPU_API_FORWARDING_UNKNOWN_TEID = 2,
GTPU_API_FORWARDING_UNKNOWN_TYPE = 4,
};
enum gtpu_decap_next_type
{
GTPU_API_DECAP_NEXT_DROP = 0,
GTPU_API_DECAP_NEXT_L2 = 1,
GTPU_API_DECAP_NEXT_IP4 = 2,
GTPU_API_DECAP_NEXT_IP6 = 3,
};
typedef sw_if_counters
{
u64 packets_rx;
u64 packets_tx;
u64 bytes_rx;
u64 bytes_tx;
};
2020-06-11 00:20:45 -04:00
/** \brief Create or delete a GTPU tunnel
2017-04-12 19:21:16 +08:00
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param src_address - GTPU tunnel's source address.
@param dst_address - GTPU tunnel's destination address.
@param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
@param decap_next_index - the index of the next node if success
2020-06-11 00:20:45 -04:00
@param teid - Local (rx) Tunnel Endpoint Identifier
@param tteid - Remote (tx) Tunnel Endpoint Identifier
2017-04-12 19:21:16 +08:00
*/
define gtpu_add_del_tunnel
{
u32 client_index;
u32 context;
2019-12-08 14:14:37 +01:00
bool is_add;
vl_api_address_t src_address;
vl_api_address_t dst_address;
vl_api_interface_index_t mcast_sw_if_index;
2017-04-12 19:21:16 +08:00
u32 encap_vrf_id;
u32 decap_next_index;
u32 teid;
2020-06-11 00:20:45 -04:00
u32 tteid;
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]";
2017-04-12 19:21:16 +08:00
};
/** \brief reply for set or delete an GTPU tunnel
@param context - sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index of the interface
*/
define gtpu_add_del_tunnel_reply
{
u32 context;
i32 retval;
2019-12-08 14:14:37 +01:00
vl_api_interface_index_t sw_if_index;
2017-04-12 19:21:16 +08:00
};
2022-11-22 10:35:03 +01:00
/** \brief Create or delete a GTPU tunnel
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param src_address - GTPU tunnel's source address.
@param dst_address - GTPU tunnel's destination address.
@param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
@param decap_next_index - the index of the next node if success
@param teid - Local (rx) Tunnel Endpoint Identifier
@param tteid - Remote (tx) Tunnel Endpoint Identifier
@param pdu_extension - add PDU session container extension to each packet
@param qfi - the QFI to set in the PDU session container, 6 bits only
*/
define gtpu_add_del_tunnel_v2
{
u32 client_index;
u32 context;
bool is_add;
vl_api_address_t src_address;
vl_api_address_t dst_address;
vl_api_interface_index_t mcast_sw_if_index;
u32 encap_vrf_id;
vl_api_gtpu_decap_next_type_t decap_next_index;
u32 teid;
u32 tteid;
bool pdu_extension;
u8 qfi;
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>] [qfi <nn>] [del]";
option in_progress;
};
/** \brief reply for set or delete an GTPU tunnel
@param context - sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index of the interface
@param counters - Number of packets/bytes that is sent/received via this tunnel. Inaccurate (with in flight packets), sum for the entire set of per-thread counters. Zero for new tunnels.
*/
define gtpu_add_del_tunnel_v2_reply
{
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
vl_api_sw_if_counters_t counters;
option in_progress;
};
2020-06-11 00:20:45 -04:00
/** \brief Update GTPU tunnel TX TEID
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param dst_address - GTPU tunnel's destination address.
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
@param teid - Local (rx) Tunnel Endpoint Identifier
@param tteid - remote (tx) Tunnel Endpoint Identifier
*/
autoreply define gtpu_tunnel_update_tteid
{
u32 client_index;
u32 context;
vl_api_address_t dst_address;
u32 encap_vrf_id;
u32 teid;
u32 tteid;
option vat_help = "dst <ip-addr> teid <nn> tteid <nn> [encap-vrf-id <nn>]";
};
2017-04-12 19:21:16 +08:00
/** \brief Dump GTPU tunnel
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the interface
*/
define gtpu_tunnel_dump
{
u32 client_index;
u32 context;
2019-12-08 14:14:37 +01:00
vl_api_interface_index_t sw_if_index;
2019-09-27 09:35:04 +02:00
option vat_help = "[<intfc> | sw_if_index <nn>]";
2017-04-12 19:21:16 +08:00
};
2017-06-01 00:24:12 +08:00
/** \brief dump details of an GTPU tunnel
2017-04-12 19:21:16 +08:00
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the interface
@param src_address - GTPU tunnel's source address.
@param dst_address - GTPU tunnel's destination address.
@param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
@param decap_next_index - the index of the next node if success
2020-06-11 00:20:45 -04:00
@param teid - Local (rx) Tunnel Endpoint Identifier
@param tteid - Remote (tx) Tunnel Endpoint Identifier
2017-04-12 19:21:16 +08:00
*/
define gtpu_tunnel_details
{
u32 context;
2019-12-08 14:14:37 +01:00
vl_api_interface_index_t sw_if_index;
vl_api_address_t src_address;
vl_api_address_t dst_address;
vl_api_interface_index_t mcast_sw_if_index;
2017-04-12 19:21:16 +08:00
u32 encap_vrf_id;
u32 decap_next_index;
u32 teid;
2020-06-11 00:20:45 -04:00
u32 tteid;
2017-04-12 19:21:16 +08:00
};
2022-11-22 10:35:03 +01:00
/** \brief Dump GTPU tunnel
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the interface
*/
define gtpu_tunnel_v2_dump
{
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index;
option vat_help = "[<intfc> | sw_if_index <nn>]";
option in_progress;
};
/** \brief dump details of an GTPU tunnel
@param context - sender context, to match reply w/ request
@param sw_if_index - software index of the interface
@param src_address - GTPU tunnel's source address.
@param dst_address - GTPU tunnel's destination address.
@param mcast_sw_if_index - version, O-bit and C-bit (see nsh_packet.h)
@param encap_vrf_id - fib identifier used for outgoing encapsulated packets
@param decap_next_index - the index of the next node if success
@param teid - Local (rx) Tunnel Endpoint Identifier
@param tteid - Remote (tx) Tunnel Endpoint Identifier
@param pdu_extension - add PDU session container extension to each packet
@param qfi - the QFI to set in the PDU session container, 6 bits only
@param is_forwarding - tunnel used for forwarding packets
@param forwarding_type - the type of packets forwarded
@param counters - Number of packets/bytes that is sent/received via this tunnel. Inaccurate (with in flight packets), sum for the entire set of per-thread counters.
*/
define gtpu_tunnel_v2_details
{
u32 context;
vl_api_interface_index_t sw_if_index;
vl_api_address_t src_address;
vl_api_address_t dst_address;
vl_api_interface_index_t mcast_sw_if_index;
u32 encap_vrf_id;
vl_api_gtpu_decap_next_type_t decap_next_index;
u32 teid;
u32 tteid;
bool pdu_extension;
u8 qfi;
bool is_forwarding;
vl_api_gtpu_forwarding_type_t forwarding_type;
vl_api_sw_if_counters_t counters;
option in_progress;
};
2017-04-12 19:21:16 +08:00
/** \brief Interface set gtpu-bypass request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface used to reach neighbor
@param is_ipv6 - if non-zero, enable ipv6-gtpu-bypass, else ipv4-gtpu-bypass
@param enable - if non-zero enable, else disable
*/
2019-09-27 09:35:04 +02:00
autoreply define sw_interface_set_gtpu_bypass
2017-04-12 19:21:16 +08:00
{
u32 client_index;
u32 context;
2019-12-08 14:14:37 +01:00
vl_api_interface_index_t sw_if_index;
bool is_ipv6;
bool enable;
2019-09-27 09:35:04 +02:00
option vat_help = "<intfc> | sw_if_index <id> [ip4 | ip6] [enable | disable]";
2017-04-12 19:21:16 +08:00
};
2020-02-17 02:19:15 +08:00
/** \brief Offload gtpu rx request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param hw_if_index - rx hw interface
@param sw_if_index - gtpu interface to offload
@param enable - if non-zero enable, else disable
*/
autoreply define gtpu_offload_rx
{
u32 client_index;
u32 context;
u32 hw_if_index;
u32 sw_if_index;
u8 enable;
option vat_help = "hw <intfc> rx <tunnel-name> [del]";
};
2022-11-22 10:35:03 +01:00
/** \brief Set gtpu-forward request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_add - add address if non-zero, else delete
@param forwarding_type - forward filter (unknown teid, unknown message type or unknown header)
@param dst_address - forward destination address.
@param encap_vrf_id - fib identifier used for outgoing packets
@param decap_next_index - the index of the next node if success
*/
define gtpu_add_del_forward
{
u32 client_index;
u32 context;
bool is_add;
vl_api_address_t dst_address;
vl_api_gtpu_forwarding_type_t forwarding_type;
u32 encap_vrf_id;
vl_api_gtpu_decap_next_type_t decap_next_index;
option vat_help = "dst <ip-addr> {bad-header|unknown-teid|unknown-type} [decap-next <l2|nn>] [del]";
option in_progress;
};
/** \brief reply for set or delete GTPU forwarding
@param context - sender context, to match reply w/ request
@param retval - return code
@param sw_if_index - software index of the interface
*/
define gtpu_add_del_forward_reply
{
u32 context;
i32 retval;
vl_api_interface_index_t sw_if_index;
option in_progress;
};
/** \brief Get list of metrics, use for bulk transfer.
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index_start - software index of the first interface to return data on.
@param capacity - max number of interfaces returned.
*/
define gtpu_get_transfer_counts
{
u32 client_index;
u32 context;
vl_api_interface_index_t sw_if_index_start;
u32 capacity;
//option vat_help = "start_index <sw_if_index> count <nn>";
option in_progress;
};
/** \brief reply for set or delete GTPU forwarding
@param context - sender context, to match reply w/ request
@param retval - return code
@param count - number of tunnel counters returned, sequential starting at sw_if_index_start.
@param tunnels - Number of packets/bytes that is sent/received via this tunnel. Inaccurate (with in flight packets), sum for the entire set of per-thread counters.
*/
typedef tunnel_metrics
{
vl_api_interface_index_t sw_if_index;
u32 reserved;
vl_api_sw_if_counters_t counters;
};
define gtpu_get_transfer_counts_reply
{
u32 context;
i32 retval;
u32 count;
vl_api_tunnel_metrics_t tunnels[count];
option in_progress;
};
2017-04-12 19:21:16 +08:00
/*
* Local Variables:
* eval: (c-set-style "gnu")
* End:
*/