From a91cb45909642978592c7e21a8f6d2da2e44e506 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Thu, 4 Feb 2021 11:02:52 +0000 Subject: tunnel: support copying TTL and flow label from inner to outer Type: feature The added functionality is to support copying TTL and flow label from inner to outer. The .api was extened to support expressing this and also adding a common tunnel endpoint type. i find it best to make API changes in one patch so there are less versions of the API. Signed-off-by: Neale Ranns Change-Id: I755c1e3f4c475058792af39c1abeda92129efb76 --- src/vnet/tunnel/tunnel_types.api | 44 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/vnet/tunnel/tunnel_types.api') diff --git a/src/vnet/tunnel/tunnel_types.api b/src/vnet/tunnel/tunnel_types.api index 7ce70997f36..14267173721 100644 --- a/src/vnet/tunnel/tunnel_types.api +++ b/src/vnet/tunnel/tunnel_types.api @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -option version = "1.0.0"; +option version = "1.0.1"; + +import "vnet/interface_types.api"; +import "vnet/ip/ip_types.api"; /** * Flags controlling tunnel behaviour @@ -33,6 +36,10 @@ enum tunnel_encap_decap_flags : u8 TUNNEL_API_ENCAP_DECAP_FLAG_DECAP_COPY_ECN = 0x10, /** at encap, compute flow hash on the inner packet for more entropy */ TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_INNER_HASH = 0x20 [backwards_compatible], + /** at encap, copy the hop-limit/TTL of the payload into the tunnel header */ + TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_HOP_LIMIT = 0x40 [backwards_compatible], + /** at encap, copy the Flow Label of the payload into the tunnel header */ + TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_FLOW_LABEL = 0x80 [backwards_compatible], }; /** @@ -46,6 +53,41 @@ enum tunnel_mode : u8 TUNNEL_API_MODE_MP, }; +/** + * tunnel mode + */ +enumflag tunnel_flags : u8 +{ + /** + * the tunnel's MTU tracks the MTU of its destination + * Currently NOT IMPLEMENTATION (this is a API place-holder) + */ + TUNNEL_API_FLAG_TRACK_MTU = 0x1, +}; + +/** + * An IP{v4,v6} tunnel. + */ +typedef tunnel +{ + /** If non-~0, specifies a custom dev instance */ + u32 instance; + /** Tunnel source and destination address */ + vl_api_address_t src; + vl_api_address_t dst; + /** ignored on create, set in details/dump */ + vl_api_interface_index_t sw_if_index; + /** The table ID in which the source and destination addresses are valid */ + u32 table_id; + vl_api_tunnel_encap_decap_flags_t encap_decap_flags; + vl_api_tunnel_mode_t mode; + vl_api_tunnel_flags_t flags; + /* DSCP value for the tunnel encap, ignored if ECNAP_COPY_DSCP flag is set */ + vl_api_ip_dscp_t dscp; + /* TTL=0 is considered 255 */ + u8 hop_limit; +}; + /* * Local Variables: * eval: (c-set-style "gnu") -- cgit 1.2.3-korg