blob: 6d99668ccc2eaf00d5fd4199ff2b939c2a8e987b [file] [log] [blame]
Neale Rannsb8d44812017-11-10 06:53:54 -08001/*
Neale Ranns50f0ac02019-05-15 02:13:37 -07002 * Copyright (c) 2015-2019 Cisco and/or its affiliates.
Neale Rannsb8d44812017-11-10 06:53:54 -08003 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
Jakub Grajciarf72ad932019-10-09 14:15:56 +020016option version = "2.2.1";
Neale Ranns50f0ac02019-05-15 02:13:37 -070017import "vnet/ip/ip_types.api";
Pavel Kotuceke88865d2018-11-28 07:42:11 +010018
Neale Ranns50f0ac02019-05-15 02:13:37 -070019/** \brief The types of packets to be punted
Pavel Kotuceke88865d2018-11-28 07:42:11 +010020*/
Neale Ranns50f0ac02019-05-15 02:13:37 -070021enum punt_type
Pavel Kotuceke88865d2018-11-28 07:42:11 +010022{
Neale Ranns50f0ac02019-05-15 02:13:37 -070023 /* L4 (UDP) packets */
24 PUNT_API_TYPE_L4,
Neale Rannsb538dd82019-05-21 06:54:54 -070025 /* IP proto (i.e. OSPF, RIP, etc) packets */
26 PUNT_API_TYPE_IP_PROTO,
Neale Ranns50f0ac02019-05-15 02:13:37 -070027 /* Exception packets handled by the VLIB punt infra */
28 PUNT_API_TYPE_EXCEPTION,
29};
30
31/** \brief Punt L4 traffic definition
32 @param af - Address Family, IPv4 or IPV6
33 @param protocol - L4 protocol to be punted
34 @param port - TCP/UDP port to be punted
35*/
36typedef punt_l4
37{
38 vl_api_address_family_t af;
39 vl_api_ip_proto_t protocol;
40 u16 port;
41};
42
Neale Rannsb538dd82019-05-21 06:54:54 -070043/** \brief Punt IP protocol traffic definition
44 @param af - Address Family, IPv4 or IPV6
45 @param protocol - IP protocol to be punted
46*/
47typedef punt_ip_proto
48{
49 vl_api_address_family_t af;
50 vl_api_ip_proto_t protocol;
51};
52
Neale Ranns50f0ac02019-05-15 02:13:37 -070053/** \brief The ID of the punt exception reason
54 Dump all the reasons to obtain this
55*/
56typedef punt_exception
57{
58 u32 id;
59};
60
61/** \brief Union of the different punt packet descriptions
62*/
63union punt_union
64{
65 vl_api_punt_exception_t exception;
66 vl_api_punt_l4_t l4;
Neale Rannsb538dd82019-05-21 06:54:54 -070067 vl_api_punt_ip_proto_t ip_proto;
Neale Ranns50f0ac02019-05-15 02:13:37 -070068};
69
70/** \brief Full description of which packets are requested to be punted
71 @param type - Which packet type
72 @param punt - Description corresponding to the type
73*/
74typedef punt
75{
76 vl_api_punt_type_t type;
Jakub Grajciarf72ad932019-10-09 14:15:56 +020077 vl_api_punt_union_t punt;
Pavel Kotuceke88865d2018-11-28 07:42:11 +010078};
Neale Rannsb8d44812017-11-10 06:53:54 -080079
80/** \brief Punt traffic to the host
81 @param client_index - opaque cookie to identify the sender
82 @param context - sender context, to match reply w/ request
83 @param is_add - add punt if non-zero, else delete
Pavel Kotuceke88865d2018-11-28 07:42:11 +010084 @param punt - punt definition, only UDP (0x11) is supported
Neale Rannsb8d44812017-11-10 06:53:54 -080085*/
Pavel Kotuceke88865d2018-11-28 07:42:11 +010086autoreply define set_punt {
Neale Rannsb8d44812017-11-10 06:53:54 -080087 u32 client_index;
88 u32 context;
Jakub Grajciarf72ad932019-10-09 14:15:56 +020089 bool is_add;
Pavel Kotuceke88865d2018-11-28 07:42:11 +010090 vl_api_punt_t punt;
91};
92
Neale Rannsb8d44812017-11-10 06:53:54 -080093/** \brief Punt traffic to the host via socket
94 @param client_index - opaque cookie to identify the sender
95 @param context - sender context, to match reply w/ request
96 @param header_version - expected meta data header version (currently 1)
Pavel Kotuceke88865d2018-11-28 07:42:11 +010097 @param punt - punt definition
Neale Rannsb8d44812017-11-10 06:53:54 -080098*/
99define punt_socket_register {
100 u32 client_index;
101 u32 context;
102 u32 header_version;
Pavel Kotuceke88865d2018-11-28 07:42:11 +0100103 vl_api_punt_t punt;
Jakub Grajciarf72ad932019-10-09 14:15:56 +0200104 string pathname[108]; /* Linux sun_path defined to be 108 bytes, see unix(7) */
Neale Rannsb8d44812017-11-10 06:53:54 -0800105};
106
107define punt_socket_register_reply
108{
Pavel Kotuceke88865d2018-11-28 07:42:11 +0100109 u32 context;
110 i32 retval;
Jakub Grajciarf72ad932019-10-09 14:15:56 +0200111 string pathname[108];
Pavel Kotuceke88865d2018-11-28 07:42:11 +0100112};
113
114define punt_socket_dump
115{
116 u32 client_index;
117 u32 context;
Neale Ranns50f0ac02019-05-15 02:13:37 -0700118 vl_api_punt_type_t type;
Pavel Kotuceke88865d2018-11-28 07:42:11 +0100119};
120
121define punt_socket_details
122{
123 u32 context;
124 vl_api_punt_t punt;
Jakub Grajciarf72ad932019-10-09 14:15:56 +0200125 string pathname[108];
Neale Rannsb8d44812017-11-10 06:53:54 -0800126};
127
128autoreply define punt_socket_deregister {
129 u32 client_index;
130 u32 context;
Pavel Kotuceke88865d2018-11-28 07:42:11 +0100131 vl_api_punt_t punt;
Neale Rannsb8d44812017-11-10 06:53:54 -0800132};
133
Neale Ranns719beb72019-07-10 07:10:25 +0000134typedef punt_reason
135{
136 u32 id;
Ole Troane5ff5a32019-08-23 22:55:18 +0200137 string name[];
Neale Ranns719beb72019-07-10 07:10:25 +0000138};
139
Paul Vinciguerraf1589442019-10-17 21:08:17 -0400140/** \brief Dump all or one of the exception punt reasons
Neale Ranns719beb72019-07-10 07:10:25 +0000141* @param - If the string is not set punt dump all reasons
142* else dump only the one specified
Neale Ranns50f0ac02019-05-15 02:13:37 -0700143*/
144define punt_reason_dump
145{
146 u32 client_index;
147 u32 context;
Neale Ranns719beb72019-07-10 07:10:25 +0000148 vl_api_punt_reason_t reason;
Neale Ranns50f0ac02019-05-15 02:13:37 -0700149};
150
151define punt_reason_details
152{
153 u32 context;
154 vl_api_punt_reason_t reason;
155};
156
Neale Rannsb8d44812017-11-10 06:53:54 -0800157/*
158 * Local Variables:
159 * eval: (c-set-style "gnu")
160 * End:
161 */