• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _UAPI__LINUX_OPENVSWITCH_H
20 #define _UAPI__LINUX_OPENVSWITCH_H 1
21 #include <linux/types.h>
22 #include <linux/if_ether.h>
23 struct ovs_header {
24   int dp_ifindex;
25 };
26 #define OVS_DATAPATH_FAMILY "ovs_datapath"
27 #define OVS_DATAPATH_MCGROUP "ovs_datapath"
28 #define OVS_DATAPATH_VERSION 2
29 #define OVS_DP_VER_FEATURES 2
30 enum ovs_datapath_cmd {
31   OVS_DP_CMD_UNSPEC,
32   OVS_DP_CMD_NEW,
33   OVS_DP_CMD_DEL,
34   OVS_DP_CMD_GET,
35   OVS_DP_CMD_SET
36 };
37 enum ovs_datapath_attr {
38   OVS_DP_ATTR_UNSPEC,
39   OVS_DP_ATTR_NAME,
40   OVS_DP_ATTR_UPCALL_PID,
41   OVS_DP_ATTR_STATS,
42   OVS_DP_ATTR_MEGAFLOW_STATS,
43   OVS_DP_ATTR_USER_FEATURES,
44   OVS_DP_ATTR_PAD,
45   __OVS_DP_ATTR_MAX
46 };
47 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
48 struct ovs_dp_stats {
49   __u64 n_hit;
50   __u64 n_missed;
51   __u64 n_lost;
52   __u64 n_flows;
53 };
54 struct ovs_dp_megaflow_stats {
55   __u64 n_mask_hit;
56   __u32 n_masks;
57   __u32 pad0;
58   __u64 pad1;
59   __u64 pad2;
60 };
61 struct ovs_vport_stats {
62   __u64 rx_packets;
63   __u64 tx_packets;
64   __u64 rx_bytes;
65   __u64 tx_bytes;
66   __u64 rx_errors;
67   __u64 tx_errors;
68   __u64 rx_dropped;
69   __u64 tx_dropped;
70 };
71 #define OVS_DP_F_UNALIGNED (1 << 0)
72 #define OVS_DP_F_VPORT_PIDS (1 << 1)
73 #define OVSP_LOCAL ((__u32) 0)
74 #define OVS_PACKET_FAMILY "ovs_packet"
75 #define OVS_PACKET_VERSION 0x1
76 enum ovs_packet_cmd {
77   OVS_PACKET_CMD_UNSPEC,
78   OVS_PACKET_CMD_MISS,
79   OVS_PACKET_CMD_ACTION,
80   OVS_PACKET_CMD_EXECUTE
81 };
82 enum ovs_packet_attr {
83   OVS_PACKET_ATTR_UNSPEC,
84   OVS_PACKET_ATTR_PACKET,
85   OVS_PACKET_ATTR_KEY,
86   OVS_PACKET_ATTR_ACTIONS,
87   OVS_PACKET_ATTR_USERDATA,
88   OVS_PACKET_ATTR_EGRESS_TUN_KEY,
89   OVS_PACKET_ATTR_UNUSED1,
90   OVS_PACKET_ATTR_UNUSED2,
91   OVS_PACKET_ATTR_PROBE,
92   OVS_PACKET_ATTR_MRU,
93   OVS_PACKET_ATTR_LEN,
94   __OVS_PACKET_ATTR_MAX
95 };
96 #define OVS_PACKET_ATTR_MAX (__OVS_PACKET_ATTR_MAX - 1)
97 #define OVS_VPORT_FAMILY "ovs_vport"
98 #define OVS_VPORT_MCGROUP "ovs_vport"
99 #define OVS_VPORT_VERSION 0x1
100 enum ovs_vport_cmd {
101   OVS_VPORT_CMD_UNSPEC,
102   OVS_VPORT_CMD_NEW,
103   OVS_VPORT_CMD_DEL,
104   OVS_VPORT_CMD_GET,
105   OVS_VPORT_CMD_SET
106 };
107 enum ovs_vport_type {
108   OVS_VPORT_TYPE_UNSPEC,
109   OVS_VPORT_TYPE_NETDEV,
110   OVS_VPORT_TYPE_INTERNAL,
111   OVS_VPORT_TYPE_GRE,
112   OVS_VPORT_TYPE_VXLAN,
113   OVS_VPORT_TYPE_GENEVE,
114   __OVS_VPORT_TYPE_MAX
115 };
116 #define OVS_VPORT_TYPE_MAX (__OVS_VPORT_TYPE_MAX - 1)
117 enum ovs_vport_attr {
118   OVS_VPORT_ATTR_UNSPEC,
119   OVS_VPORT_ATTR_PORT_NO,
120   OVS_VPORT_ATTR_TYPE,
121   OVS_VPORT_ATTR_NAME,
122   OVS_VPORT_ATTR_OPTIONS,
123   OVS_VPORT_ATTR_UPCALL_PID,
124   OVS_VPORT_ATTR_STATS,
125   OVS_VPORT_ATTR_PAD,
126   OVS_VPORT_ATTR_IFINDEX,
127   OVS_VPORT_ATTR_NETNSID,
128   __OVS_VPORT_ATTR_MAX
129 };
130 #define OVS_VPORT_ATTR_MAX (__OVS_VPORT_ATTR_MAX - 1)
131 enum {
132   OVS_VXLAN_EXT_UNSPEC,
133   OVS_VXLAN_EXT_GBP,
134   __OVS_VXLAN_EXT_MAX,
135 };
136 #define OVS_VXLAN_EXT_MAX (__OVS_VXLAN_EXT_MAX - 1)
137 enum {
138   OVS_TUNNEL_ATTR_UNSPEC,
139   OVS_TUNNEL_ATTR_DST_PORT,
140   OVS_TUNNEL_ATTR_EXTENSION,
141   __OVS_TUNNEL_ATTR_MAX
142 };
143 #define OVS_TUNNEL_ATTR_MAX (__OVS_TUNNEL_ATTR_MAX - 1)
144 #define OVS_FLOW_FAMILY "ovs_flow"
145 #define OVS_FLOW_MCGROUP "ovs_flow"
146 #define OVS_FLOW_VERSION 0x1
147 enum ovs_flow_cmd {
148   OVS_FLOW_CMD_UNSPEC,
149   OVS_FLOW_CMD_NEW,
150   OVS_FLOW_CMD_DEL,
151   OVS_FLOW_CMD_GET,
152   OVS_FLOW_CMD_SET
153 };
154 struct ovs_flow_stats {
155   __u64 n_packets;
156   __u64 n_bytes;
157 };
158 enum ovs_key_attr {
159   OVS_KEY_ATTR_UNSPEC,
160   OVS_KEY_ATTR_ENCAP,
161   OVS_KEY_ATTR_PRIORITY,
162   OVS_KEY_ATTR_IN_PORT,
163   OVS_KEY_ATTR_ETHERNET,
164   OVS_KEY_ATTR_VLAN,
165   OVS_KEY_ATTR_ETHERTYPE,
166   OVS_KEY_ATTR_IPV4,
167   OVS_KEY_ATTR_IPV6,
168   OVS_KEY_ATTR_TCP,
169   OVS_KEY_ATTR_UDP,
170   OVS_KEY_ATTR_ICMP,
171   OVS_KEY_ATTR_ICMPV6,
172   OVS_KEY_ATTR_ARP,
173   OVS_KEY_ATTR_ND,
174   OVS_KEY_ATTR_SKB_MARK,
175   OVS_KEY_ATTR_TUNNEL,
176   OVS_KEY_ATTR_SCTP,
177   OVS_KEY_ATTR_TCP_FLAGS,
178   OVS_KEY_ATTR_DP_HASH,
179   OVS_KEY_ATTR_RECIRC_ID,
180   OVS_KEY_ATTR_MPLS,
181   OVS_KEY_ATTR_CT_STATE,
182   OVS_KEY_ATTR_CT_ZONE,
183   OVS_KEY_ATTR_CT_MARK,
184   OVS_KEY_ATTR_CT_LABELS,
185   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
186   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
187   OVS_KEY_ATTR_NSH,
188   __OVS_KEY_ATTR_MAX
189 };
190 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
191 enum ovs_tunnel_key_attr {
192   OVS_TUNNEL_KEY_ATTR_ID,
193   OVS_TUNNEL_KEY_ATTR_IPV4_SRC,
194   OVS_TUNNEL_KEY_ATTR_IPV4_DST,
195   OVS_TUNNEL_KEY_ATTR_TOS,
196   OVS_TUNNEL_KEY_ATTR_TTL,
197   OVS_TUNNEL_KEY_ATTR_DONT_FRAGMENT,
198   OVS_TUNNEL_KEY_ATTR_CSUM,
199   OVS_TUNNEL_KEY_ATTR_OAM,
200   OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS,
201   OVS_TUNNEL_KEY_ATTR_TP_SRC,
202   OVS_TUNNEL_KEY_ATTR_TP_DST,
203   OVS_TUNNEL_KEY_ATTR_VXLAN_OPTS,
204   OVS_TUNNEL_KEY_ATTR_IPV6_SRC,
205   OVS_TUNNEL_KEY_ATTR_IPV6_DST,
206   OVS_TUNNEL_KEY_ATTR_PAD,
207   OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS,
208   __OVS_TUNNEL_KEY_ATTR_MAX
209 };
210 #define OVS_TUNNEL_KEY_ATTR_MAX (__OVS_TUNNEL_KEY_ATTR_MAX - 1)
211 enum ovs_frag_type {
212   OVS_FRAG_TYPE_NONE,
213   OVS_FRAG_TYPE_FIRST,
214   OVS_FRAG_TYPE_LATER,
215   __OVS_FRAG_TYPE_MAX
216 };
217 #define OVS_FRAG_TYPE_MAX (__OVS_FRAG_TYPE_MAX - 1)
218 struct ovs_key_ethernet {
219   __u8 eth_src[ETH_ALEN];
220   __u8 eth_dst[ETH_ALEN];
221 };
222 struct ovs_key_mpls {
223   __be32 mpls_lse;
224 };
225 struct ovs_key_ipv4 {
226   __be32 ipv4_src;
227   __be32 ipv4_dst;
228   __u8 ipv4_proto;
229   __u8 ipv4_tos;
230   __u8 ipv4_ttl;
231   __u8 ipv4_frag;
232 };
233 struct ovs_key_ipv6 {
234   __be32 ipv6_src[4];
235   __be32 ipv6_dst[4];
236   __be32 ipv6_label;
237   __u8 ipv6_proto;
238   __u8 ipv6_tclass;
239   __u8 ipv6_hlimit;
240   __u8 ipv6_frag;
241 };
242 struct ovs_key_tcp {
243   __be16 tcp_src;
244   __be16 tcp_dst;
245 };
246 struct ovs_key_udp {
247   __be16 udp_src;
248   __be16 udp_dst;
249 };
250 struct ovs_key_sctp {
251   __be16 sctp_src;
252   __be16 sctp_dst;
253 };
254 struct ovs_key_icmp {
255   __u8 icmp_type;
256   __u8 icmp_code;
257 };
258 struct ovs_key_icmpv6 {
259   __u8 icmpv6_type;
260   __u8 icmpv6_code;
261 };
262 struct ovs_key_arp {
263   __be32 arp_sip;
264   __be32 arp_tip;
265   __be16 arp_op;
266   __u8 arp_sha[ETH_ALEN];
267   __u8 arp_tha[ETH_ALEN];
268 };
269 struct ovs_key_nd {
270   __be32 nd_target[4];
271   __u8 nd_sll[ETH_ALEN];
272   __u8 nd_tll[ETH_ALEN];
273 };
274 #define OVS_CT_LABELS_LEN_32 4
275 #define OVS_CT_LABELS_LEN (OVS_CT_LABELS_LEN_32 * sizeof(__u32))
276 struct ovs_key_ct_labels {
277   union {
278     __u8 ct_labels[OVS_CT_LABELS_LEN];
279     __u32 ct_labels_32[OVS_CT_LABELS_LEN_32];
280   };
281 };
282 #define OVS_CS_F_NEW 0x01
283 #define OVS_CS_F_ESTABLISHED 0x02
284 #define OVS_CS_F_RELATED 0x04
285 #define OVS_CS_F_REPLY_DIR 0x08
286 #define OVS_CS_F_INVALID 0x10
287 #define OVS_CS_F_TRACKED 0x20
288 #define OVS_CS_F_SRC_NAT 0x40
289 #define OVS_CS_F_DST_NAT 0x80
290 #define OVS_CS_F_NAT_MASK (OVS_CS_F_SRC_NAT | OVS_CS_F_DST_NAT)
291 struct ovs_key_ct_tuple_ipv4 {
292   __be32 ipv4_src;
293   __be32 ipv4_dst;
294   __be16 src_port;
295   __be16 dst_port;
296   __u8 ipv4_proto;
297 };
298 struct ovs_key_ct_tuple_ipv6 {
299   __be32 ipv6_src[4];
300   __be32 ipv6_dst[4];
301   __be16 src_port;
302   __be16 dst_port;
303   __u8 ipv6_proto;
304 };
305 enum ovs_nsh_key_attr {
306   OVS_NSH_KEY_ATTR_UNSPEC,
307   OVS_NSH_KEY_ATTR_BASE,
308   OVS_NSH_KEY_ATTR_MD1,
309   OVS_NSH_KEY_ATTR_MD2,
310   __OVS_NSH_KEY_ATTR_MAX
311 };
312 #define OVS_NSH_KEY_ATTR_MAX (__OVS_NSH_KEY_ATTR_MAX - 1)
313 struct ovs_nsh_key_base {
314   __u8 flags;
315   __u8 ttl;
316   __u8 mdtype;
317   __u8 np;
318   __be32 path_hdr;
319 };
320 #define NSH_MD1_CONTEXT_SIZE 4
321 struct ovs_nsh_key_md1 {
322   __be32 context[NSH_MD1_CONTEXT_SIZE];
323 };
324 enum ovs_flow_attr {
325   OVS_FLOW_ATTR_UNSPEC,
326   OVS_FLOW_ATTR_KEY,
327   OVS_FLOW_ATTR_ACTIONS,
328   OVS_FLOW_ATTR_STATS,
329   OVS_FLOW_ATTR_TCP_FLAGS,
330   OVS_FLOW_ATTR_USED,
331   OVS_FLOW_ATTR_CLEAR,
332   OVS_FLOW_ATTR_MASK,
333   OVS_FLOW_ATTR_PROBE,
334   OVS_FLOW_ATTR_UFID,
335   OVS_FLOW_ATTR_UFID_FLAGS,
336   OVS_FLOW_ATTR_PAD,
337   __OVS_FLOW_ATTR_MAX
338 };
339 #define OVS_FLOW_ATTR_MAX (__OVS_FLOW_ATTR_MAX - 1)
340 #define OVS_UFID_F_OMIT_KEY (1 << 0)
341 #define OVS_UFID_F_OMIT_MASK (1 << 1)
342 #define OVS_UFID_F_OMIT_ACTIONS (1 << 2)
343 enum ovs_sample_attr {
344   OVS_SAMPLE_ATTR_UNSPEC,
345   OVS_SAMPLE_ATTR_PROBABILITY,
346   OVS_SAMPLE_ATTR_ACTIONS,
347   __OVS_SAMPLE_ATTR_MAX,
348 };
349 #define OVS_SAMPLE_ATTR_MAX (__OVS_SAMPLE_ATTR_MAX - 1)
350 enum ovs_userspace_attr {
351   OVS_USERSPACE_ATTR_UNSPEC,
352   OVS_USERSPACE_ATTR_PID,
353   OVS_USERSPACE_ATTR_USERDATA,
354   OVS_USERSPACE_ATTR_EGRESS_TUN_PORT,
355   OVS_USERSPACE_ATTR_ACTIONS,
356   __OVS_USERSPACE_ATTR_MAX
357 };
358 #define OVS_USERSPACE_ATTR_MAX (__OVS_USERSPACE_ATTR_MAX - 1)
359 struct ovs_action_trunc {
360   __u32 max_len;
361 };
362 struct ovs_action_push_mpls {
363   __be32 mpls_lse;
364   __be16 mpls_ethertype;
365 };
366 struct ovs_action_push_vlan {
367   __be16 vlan_tpid;
368   __be16 vlan_tci;
369 };
370 enum ovs_hash_alg {
371   OVS_HASH_ALG_L4,
372 };
373 struct ovs_action_hash {
374   __u32 hash_alg;
375   __u32 hash_basis;
376 };
377 enum ovs_ct_attr {
378   OVS_CT_ATTR_UNSPEC,
379   OVS_CT_ATTR_COMMIT,
380   OVS_CT_ATTR_ZONE,
381   OVS_CT_ATTR_MARK,
382   OVS_CT_ATTR_LABELS,
383   OVS_CT_ATTR_HELPER,
384   OVS_CT_ATTR_NAT,
385   OVS_CT_ATTR_FORCE_COMMIT,
386   OVS_CT_ATTR_EVENTMASK,
387   __OVS_CT_ATTR_MAX
388 };
389 #define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1)
390 enum ovs_nat_attr {
391   OVS_NAT_ATTR_UNSPEC,
392   OVS_NAT_ATTR_SRC,
393   OVS_NAT_ATTR_DST,
394   OVS_NAT_ATTR_IP_MIN,
395   OVS_NAT_ATTR_IP_MAX,
396   OVS_NAT_ATTR_PROTO_MIN,
397   OVS_NAT_ATTR_PROTO_MAX,
398   OVS_NAT_ATTR_PERSISTENT,
399   OVS_NAT_ATTR_PROTO_HASH,
400   OVS_NAT_ATTR_PROTO_RANDOM,
401   __OVS_NAT_ATTR_MAX,
402 };
403 #define OVS_NAT_ATTR_MAX (__OVS_NAT_ATTR_MAX - 1)
404 struct ovs_action_push_eth {
405   struct ovs_key_ethernet addresses;
406 };
407 enum ovs_action_attr {
408   OVS_ACTION_ATTR_UNSPEC,
409   OVS_ACTION_ATTR_OUTPUT,
410   OVS_ACTION_ATTR_USERSPACE,
411   OVS_ACTION_ATTR_SET,
412   OVS_ACTION_ATTR_PUSH_VLAN,
413   OVS_ACTION_ATTR_POP_VLAN,
414   OVS_ACTION_ATTR_SAMPLE,
415   OVS_ACTION_ATTR_RECIRC,
416   OVS_ACTION_ATTR_HASH,
417   OVS_ACTION_ATTR_PUSH_MPLS,
418   OVS_ACTION_ATTR_POP_MPLS,
419   OVS_ACTION_ATTR_SET_MASKED,
420   OVS_ACTION_ATTR_CT,
421   OVS_ACTION_ATTR_TRUNC,
422   OVS_ACTION_ATTR_PUSH_ETH,
423   OVS_ACTION_ATTR_POP_ETH,
424   OVS_ACTION_ATTR_CT_CLEAR,
425   OVS_ACTION_ATTR_PUSH_NSH,
426   OVS_ACTION_ATTR_POP_NSH,
427   OVS_ACTION_ATTR_METER,
428   OVS_ACTION_ATTR_CLONE,
429   __OVS_ACTION_ATTR_MAX,
430 };
431 #define OVS_ACTION_ATTR_MAX (__OVS_ACTION_ATTR_MAX - 1)
432 #define OVS_METER_FAMILY "ovs_meter"
433 #define OVS_METER_MCGROUP "ovs_meter"
434 #define OVS_METER_VERSION 0x1
435 enum ovs_meter_cmd {
436   OVS_METER_CMD_UNSPEC,
437   OVS_METER_CMD_FEATURES,
438   OVS_METER_CMD_SET,
439   OVS_METER_CMD_DEL,
440   OVS_METER_CMD_GET
441 };
442 enum ovs_meter_attr {
443   OVS_METER_ATTR_UNSPEC,
444   OVS_METER_ATTR_ID,
445   OVS_METER_ATTR_KBPS,
446   OVS_METER_ATTR_STATS,
447   OVS_METER_ATTR_BANDS,
448   OVS_METER_ATTR_USED,
449   OVS_METER_ATTR_CLEAR,
450   OVS_METER_ATTR_MAX_METERS,
451   OVS_METER_ATTR_MAX_BANDS,
452   OVS_METER_ATTR_PAD,
453   __OVS_METER_ATTR_MAX
454 };
455 #define OVS_METER_ATTR_MAX (__OVS_METER_ATTR_MAX - 1)
456 enum ovs_band_attr {
457   OVS_BAND_ATTR_UNSPEC,
458   OVS_BAND_ATTR_TYPE,
459   OVS_BAND_ATTR_RATE,
460   OVS_BAND_ATTR_BURST,
461   OVS_BAND_ATTR_STATS,
462   __OVS_BAND_ATTR_MAX
463 };
464 #define OVS_BAND_ATTR_MAX (__OVS_BAND_ATTR_MAX - 1)
465 enum ovs_meter_band_type {
466   OVS_METER_BAND_TYPE_UNSPEC,
467   OVS_METER_BAND_TYPE_DROP,
468   __OVS_METER_BAND_TYPE_MAX
469 };
470 #define OVS_METER_BAND_TYPE_MAX (__OVS_METER_BAND_TYPE_MAX - 1)
471 #define OVS_CT_LIMIT_FAMILY "ovs_ct_limit"
472 #define OVS_CT_LIMIT_MCGROUP "ovs_ct_limit"
473 #define OVS_CT_LIMIT_VERSION 0x1
474 enum ovs_ct_limit_cmd {
475   OVS_CT_LIMIT_CMD_UNSPEC,
476   OVS_CT_LIMIT_CMD_SET,
477   OVS_CT_LIMIT_CMD_DEL,
478   OVS_CT_LIMIT_CMD_GET
479 };
480 enum ovs_ct_limit_attr {
481   OVS_CT_LIMIT_ATTR_UNSPEC,
482   OVS_CT_LIMIT_ATTR_ZONE_LIMIT,
483   __OVS_CT_LIMIT_ATTR_MAX
484 };
485 #define OVS_CT_LIMIT_ATTR_MAX (__OVS_CT_LIMIT_ATTR_MAX - 1)
486 #define OVS_ZONE_LIMIT_DEFAULT_ZONE - 1
487 struct ovs_zone_limit {
488   int zone_id;
489   __u32 limit;
490   __u32 count;
491 };
492 #endif
493