On Wed, Sep 25, 2013 at 01:31:07PM +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 <[email protected]>

The code seems fine.

This commit appears to introduce one subtle semantic change.
Previously, if a packet had an MPLS ethertype followed by too few bytes
to constitute a full MPLS label, then the flow indicated that with
mpls_depth=0, mpls_lse=0.  Now, there is no way to distinguish this case
from a single label with mpls_lse=0.  I don't know whether this is
important.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to