diff options
author | Simon Horman <horms@verge.net.au> | 2013-09-27 06:55:19 +0900 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2013-09-27 09:18:06 -0700 |
commit | b0a17866c3145fd35e844e1b66c499c55ecf6f1d (patch) | |
tree | 3446a17bda4a9a0194f9d1ead184d3b4e297d9f2 /lib/ofp-util.c | |
parent | e15653c927a9aed6bf0e88b0ea49a665c7131e5d (diff) |
Remove mpls_depth field from flow
Rather than tracking the MPLS depth as a field in the
flow, which is an entirely poor place for it, just track
the delta to the MPLS depth during translation.
This logic was developed while implementing recirculation
and intended to be used to detect when recirculation should
occur. This variant of the patch uses the logic to determine
if processing of actions should stop due to an MPLS
action which cannot be translated (without recirculation).
A side-effect of this patch is that it resolves a bug
whereby ovs-vswitchd will abort due to to an assertion
on eth_type_mpls(ctx->xin->flow.dl_type) in compose_mpls_pop_action(()
if the actions of a flow include pop_mpls twice without
a push_mpls in between.
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/ofp-util.c')
-rw-r--r-- | lib/ofp-util.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 6a2bf5bf..173b5347 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -84,7 +84,7 @@ ofputil_netmask_to_wcbits(ovs_be32 netmask) void ofputil_wildcard_from_ofpfw10(uint32_t ofpfw, struct flow_wildcards *wc) { - BUILD_ASSERT_DECL(FLOW_WC_SEQ == 20); + BUILD_ASSERT_DECL(FLOW_WC_SEQ == 21); /* Initialize most of wc. */ flow_wildcards_init_catchall(wc); @@ -4905,7 +4905,6 @@ ofputil_normalize_match__(struct match *match, bool may_log) } if (!(may_match & MAY_MPLS)) { wc.masks.mpls_lse = htonl(0); - wc.masks.mpls_depth = 0; } /* Log any changes. */ |