/* Metadata for restoring pipeline context after recirculation. Helpers
* are inlined below to keep them together with the definition for easier
* updates. */
-BUILD_ASSERT_DECL(FLOW_WC_SEQ == 39);
+BUILD_ASSERT_DECL(FLOW_WC_SEQ == 41);
struct frozen_metadata {
/* Metadata in struct flow. */
frozen_metadata_to_flow(const struct frozen_metadata *md,
struct flow *flow)
{
- if (flow_tnl_dst_is_set(&md->tunnel)) {
- flow->tunnel = md->tunnel;
- } else {
- memset(&flow->tunnel, 0, sizeof flow->tunnel);
- }
+ flow->tunnel = md->tunnel;
flow->metadata = md->metadata;
memcpy(flow->regs, md->regs, sizeof flow->regs);
flow->in_port.ofp_port = md->in_port;
size_t stack_size;
mirror_mask_t mirrors; /* Mirrors already output. */
bool conntracked; /* Conntrack occurred prior to freeze. */
+ struct uuid xport_uuid; /* UUID of 1st port packet received on. */
/* Actions to be translated when thawing. */
struct ofpact *ofpacts;
size_t ofpacts_len; /* Size of 'ofpacts', in bytes. */
struct ofpact *action_set;
size_t action_set_len; /* Size of 'action_set', in bytes. */
+
+ /* User data for controller userspace cookie. */
+ uint8_t *userdata;
+ size_t userdata_len;
};
/* This maps a recirculation ID to saved state that flow translation can