• Home
  • History
  • Annotate
  • 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