- /* Performs the 'actions_len' bytes of actions in 'actions' on the Ethernet
- * frame specified in 'packet' taken from the flow specified in the
- * 'key_len' bytes of 'key'. ('key' is mostly redundant with 'packet', but
- * it contains some metadata that cannot be recovered from 'packet', such
- * as tun_id and in_port.) */
- int (*execute)(struct dpif *dpif,
- const struct nlattr *key, size_t key_len,
- const struct nlattr *actions, size_t actions_len,
- const struct ofpbuf *packet);
-
- /* Retrieves 'dpif''s "listen mask" into '*listen_mask'. A 1-bit of value
- * 2**X set in '*listen_mask' indicates that 'dpif' will receive messages
- * of the type (from "enum dpif_upcall_type") with value X when its 'recv'
- * function is called. */
- int (*recv_get_mask)(const struct dpif *dpif, int *listen_mask);
-
- /* Sets 'dpif''s "listen mask" to 'listen_mask'. A 1-bit of value 2**X set
- * in '*listen_mask' requests that 'dpif' will receive messages of the type
- * (from "enum dpif_upcall_type") with value X when its 'recv' function is
- * called.
+ /* 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 tun_id and in_port.) */
+ int (*execute)(struct dpif *dpif, const 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
+ * "output" members documented in comments.