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
