FD.io VPP  v21.06-3-gbb25fbf28
Vector Packet Processing
punt.api
Go to the documentation of this file.
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 */
22 {
23  /* L4 (UDP) packets */
25  /* IP proto (i.e. OSPF, RIP, etc) packets */
27  /* Exception packets handled by the VLIB punt infra */
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;
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 */
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 {
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 {
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 {
111  string pathname[108];
112 };
113 
114 define punt_socket_dump
115 {
118  vl_api_punt_type_t type;
119 };
120 
121 define punt_socket_details
122 {
124  vl_api_punt_t punt;
125  string pathname[108];
126 };
127 
128 autoreply define punt_socket_deregister {
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 {
148  vl_api_punt_reason_t reason;
149 };
150 
151 define punt_reason_details
152 {
154  vl_api_punt_reason_t reason;
155 };
156 
157 /*
158  * Local Variables:
159  * eval: (c-set-style "gnu")
160  * End:
161  */
punt_union::l4
vl_api_punt_l4_t l4
Definition: punt.api:66
punt_reason
typedef punt_reason
Definition: punt.api:135
vl_api_punt_socket_dump_t::type
vl_api_punt_type_t type
Definition: punt.api:118
punt_union
Union of the different punt packet descriptions.
Definition: punt.api:63
vl_api_punt_reason_details_t::reason
vl_api_punt_reason_t reason
Definition: punt.api:154
vl_api_set_punt_t::client_index
u32 client_index
Definition: punt.api:87
vl_api_punt_socket_dump_t::context
u32 context
Definition: punt.api:117
vl_api_punt_socket_details_t::punt
vl_api_punt_t punt
Definition: punt.api:124
vl_api_punt_socket_register_t
Punt traffic to the host via socket.
Definition: punt.api:99
name
string name[]
Definition: punt.api:137
vl_api_punt_socket_register_reply_t::retval
i32 retval
Definition: punt.api:110
vl_api_punt_socket_deregister_t::context
u32 context
Definition: punt.api:130
punt_ip_proto
typedef punt_ip_proto
Punt IP protocol traffic definition.
Definition: punt.api:48
u16
unsigned short u16
Definition: types.h:57
vl_api_punt_socket_deregister_t
Definition: punt.api:128
punt
typedef punt
Full description of which packets are requested to be punted.
Definition: punt.api:75
vl_api_punt_socket_register_reply_t::pathname
string pathname[108]
Definition: punt.api:111
punt_union::exception
vl_api_punt_exception_t exception
Definition: punt.api:65
i32
signed int i32
Definition: types.h:77
vl_api_punt_reason_details_t
Definition: punt.api:151
version
option version
Definition: punt.api:16
vl_api_punt_socket_register_t::context
u32 context
Definition: punt.api:101
vl_api_punt_socket_register_t::pathname
string pathname[108]
Definition: punt.api:104
vl_api_punt_reason_dump_t::reason
vl_api_punt_reason_t reason
Definition: punt.api:148
vl_api_set_punt_t::is_add
bool is_add
Definition: punt.api:89
PUNT_API_TYPE_IP_PROTO
@ PUNT_API_TYPE_IP_PROTO
Definition: punt.api:26
punt_union::ip_proto
vl_api_punt_ip_proto_t ip_proto
Definition: punt.api:67
vl_api_punt_reason_dump_t
Dump all or one of the exception punt reasons.
Definition: punt.api:144
punt_type
punt_type
The types of packets to be punted.
Definition: punt.api:21
vl_api_punt_socket_details_t::context
u32 context
Definition: punt.api:123
protocol
vl_api_ip_proto_t protocol
Definition: punt.api:39
vl_api_punt_socket_dump_t
Definition: punt.api:114
vl_api_punt_reason_details_t::context
u32 context
Definition: punt.api:153
punt_exception
typedef punt_exception
The ID of the punt exception reason Dump all the reasons to obtain this.
Definition: punt.api:57
vl_api_punt_socket_register_reply_t::context
u32 context
Definition: punt.api:109
vl_api_set_punt_t::punt
vl_api_punt_t punt
Definition: punt.api:90
vl_api_punt_socket_register_t::client_index
u32 client_index
Definition: punt.api:100
vl_api_punt_socket_dump_t::client_index
u32 client_index
Definition: punt.api:116
punt_l4
typedef punt_l4
Punt L4 traffic definition.
Definition: punt.api:37
vl_api_punt_socket_deregister_t::client_index
u32 client_index
Definition: punt.api:129
vl_api_set_punt_t::context
u32 context
Definition: punt.api:88
id
u8 id[64]
Definition: dhcp.api:160
PUNT_API_TYPE_EXCEPTION
@ PUNT_API_TYPE_EXCEPTION
Definition: punt.api:28
vl_api_punt_reason_dump_t::context
u32 context
Definition: punt.api:147
port
u16 port
Definition: punt.api:40
vl_api_punt_reason_dump_t::client_index
u32 client_index
Definition: punt.api:146
vl_api_punt_socket_deregister_t::punt
vl_api_punt_t punt
Definition: punt.api:131
u32
unsigned int u32
Definition: types.h:88
vl_api_punt_socket_details_t
Definition: punt.api:121
vl_api_punt_socket_register_t::header_version
u32 header_version
Definition: punt.api:102
vl_api_set_punt_t
Punt traffic to the host.
Definition: punt.api:86
vl_api_punt_socket_register_t::punt
vl_api_punt_t punt
Definition: punt.api:103
type
vl_api_fib_path_type_t type
Definition: fib_types.api:123
PUNT_API_TYPE_L4
@ PUNT_API_TYPE_L4
Definition: punt.api:24
vl_api_punt_socket_register_reply_t
Definition: punt.api:107
vl_api_punt_socket_details_t::pathname
string pathname[108]
Definition: punt.api:125