On Tue, Nov 05, 2013 at 05:34:34PM +0900, Simon Horman wrote:
> Some different versions of OpenFlow require different consistency
> checking. This patch allows for three different variants to be checked.
> 
> 1. OpenFlow1.0
> 
>    This variant implicitly pushes a VLAN tag if one doesn't exist
>    and an action to modify a VLAN tag is encountered.
> 
>    MPLS push is supported as a Nicira extension whose behaviour is
>    the same as OpenFlow1.1 - 1.2.
> 
>    In practice Open vSwtich allows inconsistent OpenFlow 1.0 actions so
>    this portion of the change is just for completeness. I do not believe it
>    has any run-time affect. And I would not be opposed to folding this case
>    into the handling of OpenFlow1.1 - 1.2 other than that I believe it will
>    make the logic in parse_ofp_str__() and ofpact_check__() slightly less
>    intuitive in parts.
> 
> 2. OpenFlow1.1 - 1.2
> 
>    This does not have the implicit VLAN tag push behaviour of OpenFlow1.0.
> 
>    An MPLS push action pushes an MPLS LSE after any VLAN tags that are
>    present.
> 
> 3. OpenFlow1.3
> 
>    This does not have the implicit VLAN tag push behaviour of OpenFlow1.0.
> 
>    An MPLS push action pushes an MPLS LSE before any VLAN tags that are
>    present.
> 
> ofpact_get_SET_VLAN_VID(a)->push_vlan_if_needed and similar devices
> can't be used in order to effect this logic when ofpact_check__()
> is called via parse_ofp_str() as they are not filled in for
> specific OF versions at that time. Again, for OpenFlow1.0 and
> thus push_vlan_if_needed I believe this is cosmetic. But that is not
> the case for the MPLS portion of this change.
> 
> The net effect of this change on run-time is:
> 
> * To increase logging under some circumstances as ofpacts_check()
>   may now be called up to four times instead of up to twice
>   for each invocation of parse_ofp_str__()
> 
> * To disallow MPLS push actions on VLAN flows using OpenFlow1.3.
>   These did not comply to the OpenFlow1.3 as they would push an MPLS LSE
>   after any VLAN tags that were present. A subsequent patch will support
>   them in a manner that complies with the OpenFlow1.3.
> 
> Signed-off-by: Simon Horman <ho...@verge.net.au>
> 
> ---
> 
> This patch is targeted as a pre-requisite for v2.48 of
> the "MPLS actions and matches" series. I am posting it separately
> as I would like some feedback on the approach I have taken and
> I believe it can be reviewed independently of the MPLS series.

This needs a respin:

    ../ofproto/ofproto-dpif.c:5495:67: error: too few arguments to function 
call, expected 8, have 7
                               u16_to_ofp(ofproto->up.max_ports), 0, 0);
                                                                      ^
    ../lib/ofp-actions.h:609:1: note: 'ofpacts_check' declared here
    enum ofperr ofpacts_check(enum ofp_version ofp_version,
    ^
    1 error generated.

But I don't really understand your second point here:

  * To disallow MPLS push actions on VLAN flows using OpenFlow1.3.
    These did not comply to the OpenFlow1.3 as they would push an MPLS LSE
    after any VLAN tags that were present. A subsequent patch will support
    them in a manner that complies with the OpenFlow1.3.

Do you mean that OF1.3 forbids push_mpls when a VLAN header is
present?  If this is new to me.  Maybe you mean something else.
Either way, can you explain further?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to