Remove mpls_depth field from flow
authorSimon Horman <horms@verge.net.au>
Thu, 26 Sep 2013 21:55:19 +0000 (06:55 +0900)
committerBen Pfaff <blp@nicira.com>
Fri, 27 Sep 2013 16:18:06 +0000 (09:18 -0700)
commitb0a17866c3145fd35e844e1b66c499c55ecf6f1d
tree3446a17bda4a9a0194f9d1ead184d3b4e297d9f2
parente15653c927a9aed6bf0e88b0ea49a665c7131e5d
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>
13 files changed:
lib/flow.c
lib/flow.h
lib/match.c
lib/nx-match.c
lib/odp-util.c
lib/odp-util.h
lib/ofp-util.c
ofproto/ofproto-dpif-xlate.c
tests/ofproto-dpif.at
tests/test-bundle.c
tests/test-multipath.c
utilities/ovs-dpctl.c
utilities/ovs-ofctl.8.in