X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fopenvswitch%2Fdatapath-protocol.h;h=8e07b8bd1804559655498a9d2909430bd94f2fa4;hb=7237e4f4b6155eb4854cebc0a45fe845f0950b40;hp=0cadc824bf38671b9a680f01832e6b87a86f201f;hpb=26233bb4615608fd45d89a5abe2e62f4b3d776f7;p=openvswitch diff --git a/include/openvswitch/datapath-protocol.h b/include/openvswitch/datapath-protocol.h index 0cadc824..8e07b8bd 100644 --- a/include/openvswitch/datapath-protocol.h +++ b/include/openvswitch/datapath-protocol.h @@ -52,16 +52,21 @@ * those types when compiling the kernel. */ #ifdef __KERNEL__ #include +#include #define ovs_be16 __be16 #define ovs_be32 __be32 #define ovs_be64 __be64 #else -#include -#define ovs_be16 uint16_t -#define ovs_be32 uint32_t -#define ovs_be64 uint64_t +#include "openvswitch/types.h" +#include #endif +#ifndef __aligned_u64 +#define __aligned_u64 __u64 __attribute__((aligned(8))) +#endif + +#include + #define ODP_MAX 256 /* Maximum number of datapaths. */ #define ODP_DP_CREATE _IO('O', 0) @@ -74,10 +79,10 @@ #define ODP_GET_LISTEN_MASK _IOW('O', 5, int) #define ODP_SET_LISTEN_MASK _IOR('O', 6, int) -#define ODP_PORT_ATTACH _IOR('O', 7, struct odp_port) -#define ODP_PORT_DETACH _IOR('O', 8, int) -#define ODP_PORT_QUERY _IOWR('O', 9, struct odp_port) -#define ODP_PORT_LIST _IOWR('O', 10, struct odp_portvec) +#define ODP_VPORT_ATTACH _IOR('O', 7, struct odp_port) +#define ODP_VPORT_DETACH _IOR('O', 8, int) +#define ODP_VPORT_QUERY _IOWR('O', 9, struct odp_port) +#define ODP_VPORT_LIST _IOWR('O', 10, struct odp_portvec) #define ODP_FLOW_GET _IOWR('O', 13, struct odp_flow) #define ODP_FLOW_PUT _IOWR('O', 14, struct odp_flow) @@ -90,9 +95,7 @@ #define ODP_SET_SFLOW_PROBABILITY _IOR('O', 19, int) #define ODP_GET_SFLOW_PROBABILITY _IOW('O', 20, int) -#define ODP_VPORT_ADD _IOR('O', 21, struct odp_vport_add) -#define ODP_VPORT_MOD _IOR('O', 22, struct odp_vport_mod) -#define ODP_VPORT_DEL _IO('O', 23) +#define ODP_VPORT_MOD _IOR('O', 22, struct odp_port) #define ODP_VPORT_STATS_GET _IOWR('O', 24, struct odp_vport_stats_req) #define ODP_VPORT_ETHER_GET _IOWR('O', 25, struct odp_vport_ether) #define ODP_VPORT_ETHER_SET _IOW('O', 26, struct odp_vport_ether) @@ -180,12 +183,15 @@ struct odp_sflow_sample_header { uint32_t n_actions; }; -#define ODP_PORT_INTERNAL (1 << 0) /* This port is simulated. */ +#define VPORT_TYPE_SIZE 16 +#define VPORT_CONFIG_SIZE 32 struct odp_port { char devname[16]; /* IFNAMSIZ */ + char type[VPORT_TYPE_SIZE]; uint16_t port; - uint16_t flags; + uint16_t reserved1; uint32_t reserved2; + __aligned_u64 config[VPORT_CONFIG_SIZE / 8]; /* type-specific */ }; struct odp_portvec { @@ -226,7 +232,6 @@ struct odp_flow_key { uint8_t nw_proto; /* IP protocol or lower 8 bits of ARP opcode. */ uint8_t nw_tos; /* IP ToS (DSCP field, 6 bits). */ - uint32_t reserved[1]; /* Reserved for later use. */ }; /* Flags for ODP_FLOW. */ @@ -259,7 +264,7 @@ struct odp_flowvec { /* Action types. */ #define ODPAT_OUTPUT 0 /* Output to switch port. */ #define ODPAT_CONTROLLER 2 /* Send copy to controller. */ -#define ODPAT_SET_DL_TCI 3 /* Set the 802.1q VLAN VID and/or PCP. */ +#define ODPAT_SET_DL_TCI 3 /* Set the 802.1q TCI value. */ #define ODPAT_STRIP_VLAN 5 /* Strip the 802.1q header. */ #define ODPAT_SET_DL_SRC 6 /* Ethernet source address. */ #define ODPAT_SET_DL_DST 7 /* Ethernet destination address. */ @@ -296,10 +301,8 @@ struct odp_action_tunnel { /* Action structure for ODPAT_SET_DL_TCI. */ struct odp_action_dl_tci { uint16_t type; /* ODPAT_SET_DL_TCI. */ - ovs_be16 tci; /* New TCI. Bits not in mask must be zero. */ - ovs_be16 mask; /* 0x0fff to set VID, 0xe000 to set PCP, - * or 0xefff to set both. */ - uint16_t reserved; + ovs_be16 tci; /* New TCI. CFI bit must be zero. */ + uint32_t reserved; }; /* Action structure for ODPAT_SET_DL_SRC/DST. */ @@ -371,24 +374,9 @@ struct odp_vport_mod { void *config; }; -struct odp_vport_stats { - uint64_t rx_packets; - uint64_t tx_packets; - uint64_t rx_bytes; - uint64_t tx_bytes; - uint64_t rx_dropped; - uint64_t tx_dropped; - uint64_t rx_errors; - uint64_t tx_errors; - uint64_t rx_frame_err; - uint64_t rx_over_err; - uint64_t rx_crc_err; - uint64_t collisions; -}; - struct odp_vport_stats_req { char devname[16]; /* IFNAMSIZ */ - struct odp_vport_stats stats; + struct rtnl_link_stats64 stats; }; struct odp_vport_ether {