On Tue, Sep 24, 2013 at 04:51:35PM +0900, Simon Horman wrote: > 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 <ho...@verge.net.au>
pre_push_mpls_lse is a local variable in do_xlate_actions(). That means that a push/pop sequence can't span a resubmit or cross two tables with goto_table. I think that if we put pre_push_mpls_lse in the context, then this restriction would not exist. Any particular reason to make it a local variable? It took me a minute to see that eth_mpls_depth() can be removed since it had no callers in the existing tree. Also, it looks like this patch does not remove its prototype in packets.h. It would be a no-brainer to write a standalone patch to remove it and its prototype. s/loosing/losing/ in comments in a couple of places. Also s/futher/further/ in the manpage. Thanks, Ben. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev