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