+ len += maskp ? sizeof(struct odputil_keybuf) : 0;
+ len += actionsp ? actions->size : 0;
+
+ *bufp = ofpbuf_new(len);
+ if (maskp) {
+ struct flow_wildcards wc;
+
+ minimask_expand(&netdev_flow->cr.match.mask, &wc);
+ odp_flow_key_from_mask(*bufp, &wc.masks, &netdev_flow->flow,
+ odp_to_u32(wc.masks.in_port.odp_port),
+ SIZE_MAX);
+ *maskp = ofpbuf_data(*bufp);
+ *mask_len = ofpbuf_size(*bufp);
+ }
+ if (actionsp) {
+ struct dp_netdev_actions *actions;
+
+ actions = dp_netdev_flow_get_actions(netdev_flow);
+ *actionsp = ofpbuf_put(*bufp, actions->actions, actions->size);
+ *actions_len = actions->size;
+ }