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