#define XFIF_PROVIDER_H 1
/* Provider interface to xfifs, which provide an interface to an Open vSwitch
- * datapath. */
+ * datapath. A datapath is a collection of physical or virtual ports that are
+ * exposed over OpenFlow as a single switch. Datapaths and the collections of
+ * ports that they contain may be fixed or dynamic. */
#include <assert.h>
#include "openflow/openflow.h"
* packet. */
int (*set_sflow_probability)(struct xfif *xfif, uint32_t probability);
+ /* Translates OpenFlow queue ID 'queue_id' (in host byte order) into a
+ * priority value for use in the XFLOWAT_SET_PRIORITY action in
+ * '*priority'. */
+ int (*queue_to_priority)(const struct xfif *xfif, uint32_t queue_id,
+ uint32_t *priority);
+
/* Attempts to receive a message from 'xfif'. If successful, stores the
* message into '*packetp'. The message, if one is received, must begin
* with 'struct xflow_msg' as a header, and must have at least
void (*recv_wait)(struct xfif *xfif);
};
-/* Minimum number of bytes of headroom for a packet returned by the 'recv'
- * member function (see above). This headroom allows "struct xflow_msg" to be
- * replaced by "struct ofp_packet_in" without copying the buffer. */
-#define XFIF_RECV_MSG_PADDING (sizeof(struct ofp_packet_in) \
- - sizeof(struct xflow_msg))
-BUILD_ASSERT_DECL(sizeof(struct ofp_packet_in) > sizeof(struct xflow_msg));
-BUILD_ASSERT_DECL(XFIF_RECV_MSG_PADDING % 4 == 0);
-
extern const struct xfif_class xfif_linux_class;
extern const struct xfif_class xfif_netdev_class;