/* * pvti.api - binary API skeleton * * Copyright (c) 2024 Cisco and/or its affiliates. * 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. */ /** * @file pvti.api * @brief VPP control-plane API messages. * * This file defines VPP control-plane binary API messages which are generally * called through a shared memory interface. */ /* Version and type recitations */ option version = "0.0.1"; import "vnet/interface_types.api"; import "vnet/ip/ip_types.api"; /** \brief A composite type uniquely defining a PVTI tunnel. @param sw_if_index - ignored on create/delete, present in details. @param src_ip - Source IP address @param src_port - Source UDP port @param dst_ip - Destination IP address @param dst_port - Destination UDP port @param underlay_mtu - Underlay MTU for packet splitting/coalescing @param underlay_fib_index - Underlay FIB index to be used after encap */ typedef pvti_tunnel { vl_api_interface_index_t sw_if_index; vl_api_address_t local_ip; u16 local_port; vl_api_address_t remote_ip; bool peer_address_from_payload; u16 remote_port; u16 underlay_mtu; u32 underlay_fib_index; }; /** @brief API to enable / disable pvti on an interface @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param enable_disable - 1 to enable, 0 to disable the feature @param sw_if_index - interface handle */ define pvti_interface_create { option status="in_progress"; /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; vl_api_pvti_tunnel_t interface; }; define pvti_interface_create_reply { option status="in_progress"; u32 context; i32 retval; /* Index for the newly created interface */ vl_api_interface_index_t sw_if_index; }; autoreply define pvti_interface_delete { option status="in_progress"; /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; vl_api_interface_index_t sw_if_index; }; define pvti_interface_dump { option status="in_progress"; u32 client_index; u32 context; vl_api_interface_index_t sw_if_index; }; define pvti_interface_details { option status="in_progress"; u32 context; vl_api_pvti_tunnel_t interface; };