int (*port_query_by_name)(const struct dpif *dpif, const char *devname,
struct dpif_port *port);
- /* Returns one greater than the largest port number accepted in flow
- * actions. */
- uint32_t (*get_max_ports)(const struct dpif *dpif);
-
/* Returns the Netlink PID value to supply in OVS_ACTION_ATTR_USERSPACE
* actions as the OVS_USERSPACE_ATTR_PID attribute's value, for use in
* flows whose packets arrived on port 'port_no'.
int (*flow_dump_done)(const struct dpif *dpif, void *state);
/* Performs the 'execute->actions_len' bytes of actions in
- * 'execute->actions' on the Ethernet frame specified in 'execute->packet'
- * taken from the flow specified in the 'execute->key_len' bytes of
- * 'execute->key'. ('execute->key' is mostly redundant with
- * 'execute->packet', but it contains some metadata that cannot be
- * recovered from 'execute->packet', such as tunnel and in_port.) */
- int (*execute)(struct dpif *dpif, const struct dpif_execute *execute);
+ * 'execute->actions' on the Ethernet frame in 'execute->packet'
+ * and on the packet metadata in 'execute->md'.
+ * May modify both packet and metadata. */
+ int (*execute)(struct dpif *dpif, struct dpif_execute *execute);
/* Executes each of the 'n_ops' operations in 'ops' on 'dpif', in the order
* in which they are specified, placing each operation's results in the
* The caller owns the data of 'upcall->packet' and may modify it. If
* packet's headroom is exhausted as it is manipulated, 'upcall->packet'
* will be reallocated. This requires the data of 'upcall->packet' to be
- * released with ofpbuf_uninit() before 'upcall' is destroyed.
+ * released with ofpbuf_uninit() before 'upcall' is destroyed. However,
+ * when an error is returned, the 'upcall->packet' may be uninitialized
+ * and should not be released.
*
* This function must not block. If no upcall is pending when it is
* called, it should return EAGAIN without blocking. */
extern const struct dpif_class dpif_linux_class;
extern const struct dpif_class dpif_netdev_class;
+extern const struct dpif_class dpif_planetlab_class;
#ifdef __cplusplus
}