X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fpunt.api;h=72efc7a9557bef705e45fa1ddcc6d27731fed6d5;hb=719beb709;hp=4477e5c14e528d1cac3d0797894d8150071b1b2d;hpb=9d42087149a6870965896be74dc6260f72d2cac9;p=vpp.git diff --git a/src/vnet/ip/punt.api b/src/vnet/ip/punt.api index 4477e5c14e5..72efc7a9557 100644 --- a/src/vnet/ip/punt.api +++ b/src/vnet/ip/punt.api @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016 Cisco and/or its affiliates. + * Copyright (c) 2015-2019 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: @@ -13,56 +13,145 @@ * limitations under the License. */ -option version = "1.0.0"; +option version = "2.1.0"; +import "vnet/ip/ip_types.api"; + +/** \brief The types of packets to be punted +*/ +enum punt_type +{ + /* L4 (UDP) packets */ + PUNT_API_TYPE_L4, + /* IP proto (i.e. OSPF, RIP, etc) packets */ + PUNT_API_TYPE_IP_PROTO, + /* Exception packets handled by the VLIB punt infra */ + PUNT_API_TYPE_EXCEPTION, +}; + +/** \brief Punt L4 traffic definition + @param af - Address Family, IPv4 or IPV6 + @param protocol - L4 protocol to be punted + @param port - TCP/UDP port to be punted +*/ +typedef punt_l4 +{ + vl_api_address_family_t af; + vl_api_ip_proto_t protocol; + u16 port; +}; + +/** \brief Punt IP protocol traffic definition + @param af - Address Family, IPv4 or IPV6 + @param protocol - IP protocol to be punted +*/ +typedef punt_ip_proto +{ + vl_api_address_family_t af; + vl_api_ip_proto_t protocol; +}; + +/** \brief The ID of the punt exception reason + Dump all the reasons to obtain this +*/ +typedef punt_exception +{ + u32 id; +}; + +/** \brief Union of the different punt packet descriptions +*/ +union punt_union +{ + vl_api_punt_exception_t exception; + vl_api_punt_l4_t l4; + vl_api_punt_ip_proto_t ip_proto; +}; + +/** \brief Full description of which packets are requested to be punted + @param type - Which packet type + @param punt - Description corresponding to the type +*/ +typedef punt +{ + vl_api_punt_type_t type; + vl_api_punt_union_t punt; +}; /** \brief Punt traffic to the host @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add - add punt if non-zero, else delete - @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All - @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported - @param l4_port - TCP/UDP port to be punted + @param punt - punt definition, only UDP (0x11) is supported */ -autoreply define punt { +autoreply define set_punt { u32 client_index; u32 context; u8 is_add; - u8 ipv; - u8 l4_protocol; - u16 l4_port; + vl_api_punt_t punt; }; /** \brief Punt traffic to the host via socket @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param header_version - expected meta data header version (currently 1) - @param is_ip4 - L3 protocol 1 - IPv4, 0 - IPv6 - @param l4_protocol - L4 protocol to be punted, only UDP (0x11) is supported - @param l4_port - TCP/UDP port to be punted + @param punt - punt definition */ define punt_socket_register { u32 client_index; u32 context; u32 header_version; - u8 is_ip4; - u8 l4_protocol; - u16 l4_port; + vl_api_punt_t punt; u8 pathname[108]; /* Linux sun_path defined to be 108 bytes, see unix(7) */ }; define punt_socket_register_reply { - u32 context; - i32 retval; - u8 pathname[64]; + u32 context; + i32 retval; + u8 pathname[64]; +}; + +define punt_socket_dump +{ + u32 client_index; + u32 context; + vl_api_punt_type_t type; +}; + +define punt_socket_details +{ + u32 context; + vl_api_punt_t punt; + u8 pathname[108]; }; autoreply define punt_socket_deregister { u32 client_index; u32 context; - u8 is_ip4; - u8 l4_protocol; - u16 l4_port; + vl_api_punt_t punt; +}; + +typedef punt_reason +{ + u32 id; + string name; +}; + +/** \brief Dump all or one of the excpetion punt reasons +* @param - If the string is not set punt dump all reasons +* else dump only the one specified +*/ +define punt_reason_dump +{ + u32 client_index; + u32 context; + vl_api_punt_reason_t reason; +}; + +define punt_reason_details +{ + u32 context; + vl_api_punt_reason_t reason; }; /*