hs-test: clean up Makefile for compatibility with ci-management
[vpp.git] / src / vnet / ip / punt.api
1 /*
2  * Copyright (c) 2015-2019 Cisco and/or its affiliates.
3  * 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
16 option version = "2.2.1";
17 import "vnet/ip/ip_types.api";
18
19 /** \brief The types of packets to be punted
20 */
21 enum punt_type
22 {
23     /* L4 (UDP) packets */
24     PUNT_API_TYPE_L4,
25     /* IP proto (i.e. OSPF, RIP, etc) packets */
26     PUNT_API_TYPE_IP_PROTO,
27     /* 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 */
36 typedef punt_l4
37 {
38     vl_api_address_family_t af;
39     vl_api_ip_proto_t protocol;
40     u16 port;
41 };
42
43 /** \brief Punt IP protocol traffic definition
44     @param af - Address Family, IPv4 or IPV6
45     @param protocol - IP protocol to be punted
46 */
47 typedef punt_ip_proto
48 {
49     vl_api_address_family_t af;
50     vl_api_ip_proto_t protocol;
51 };
52
53 /** \brief The ID of the punt exception reason
54            Dump all the reasons to obtain this
55 */
56 typedef punt_exception
57 {
58     u32 id;
59 };
60
61 /** \brief Union of the different punt packet descriptions
62 */
63 union punt_union
64 {
65     vl_api_punt_exception_t exception;
66     vl_api_punt_l4_t l4;
67     vl_api_punt_ip_proto_t ip_proto;
68 };
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 */
74 typedef punt
75 {
76     vl_api_punt_type_t type;
77     vl_api_punt_union_t punt;
78 };
79
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
84     @param punt - punt definition, only UDP (0x11) is supported
85 */
86 autoreply define set_punt {
87     u32 client_index;
88     u32 context;
89     bool is_add;
90     vl_api_punt_t punt;
91 };
92
93 /** \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)
97     @param punt - punt definition
98 */
99 define punt_socket_register {
100     u32 client_index;
101     u32 context;
102     u32 header_version;
103     vl_api_punt_t punt;
104     string pathname[108]; /* Linux sun_path defined to be 108 bytes, see unix(7) */
105 };
106
107 define punt_socket_register_reply
108 {
109     u32 context;
110     i32 retval;
111     string pathname[108];
112 };
113
114 define punt_socket_dump
115 {
116     u32 client_index;
117     u32 context;
118     vl_api_punt_type_t type;
119 };
120
121 define punt_socket_details
122 {
123     u32 context;
124     vl_api_punt_t punt;
125     string pathname[108];
126 };
127
128 autoreply define punt_socket_deregister {
129     u32 client_index;
130     u32 context;
131     vl_api_punt_t punt;
132 };
133
134 typedef punt_reason
135 {
136     u32 id;
137     string name[];
138 };
139
140 /** \brief Dump all or one of the exception punt reasons
141 *   @param - If the string is not set punt dump all reasons
142 *            else dump only the one specified
143 */
144 define punt_reason_dump
145 {
146     u32 client_index;
147     u32 context;
148     vl_api_punt_reason_t reason;
149 };
150
151 define punt_reason_details
152 {
153     u32 context;
154     vl_api_punt_reason_t reason;
155 };
156
157 /*
158  * Local Variables:
159  * eval: (c-set-style "gnu")
160  * End:
161  */