Home | History | Annotate | Download | only in linux
      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