diff options
author | Neale Ranns <nranns@cisco.com> | 2019-05-15 02:13:37 -0700 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2019-05-28 13:30:44 +0000 |
commit | 50f0ac0f097e5495da1f2b1816106e3d420ff34b (patch) | |
tree | d10ae0385fc10b7da97b2a24f8dea3882f6d702d /src/vnet/ip/punt.api | |
parent | 9080096f7c548415fc4d5354c7e582a3eda1a5ed (diff) |
Punt: socket register for exception dispatched/punted packets based on reason
- add to the Punt API to allow different descriptions of the desired packets: UDP or exceptions
- move the punt nodes into punt_node.c
- improve tests (test that the correct packets are punted to the registered socket)
Change-Id: I1a133dec88106874993cba1f5a439cd26b2fef72
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/ip/punt.api')
-rw-r--r-- | src/vnet/ip/punt.api | 92 |
1 files changed, 68 insertions, 24 deletions
diff --git a/src/vnet/ip/punt.api b/src/vnet/ip/punt.api index c8b222a211b..cedddc5601d 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,18 +13,55 @@ * limitations under the License. */ -option version = "2.0.0"; +option version = "2.1.0"; +import "vnet/ip/ip_types.api"; -/** \brief Punt definition - @param ipv - L3 protocol 4 - IPv4, 6 - IPv6, ~0 - All - @param l4_protocol - L4 protocol to be punted - @param l4_port - TCP/UDP port to be punted +/** \brief The types of packets to be punted */ -typeonly define punt +enum punt_type { - u8 ipv; - u8 l4_protocol; - u16 l4_port; + /* L4 (UDP) packets */ + PUNT_API_TYPE_L4, + /* 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 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; +}; + +/** \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 @@ -40,19 +77,6 @@ autoreply define set_punt { vl_api_punt_t punt; }; -define punt_dump -{ - u32 client_index; - u32 context; - u8 is_ipv6; -}; - -define punt_details -{ - u32 context; - 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 @@ -78,7 +102,7 @@ define punt_socket_dump { u32 client_index; u32 context; - u8 is_ipv6; + vl_api_punt_type_t type; }; define punt_socket_details @@ -94,6 +118,26 @@ autoreply define punt_socket_deregister { vl_api_punt_t punt; }; +/** \brief Dump all of the excpetion punt reasons +*/ +define punt_reason_dump +{ + u32 client_index; + u32 context; +}; + +typedef punt_reason +{ + u32 id; + string name; +}; + +define punt_reason_details +{ + u32 context; + vl_api_punt_reason_t reason; +}; + /* * Local Variables: * eval: (c-set-style "gnu") |