On Thu, Mar 07, 2013 at 11:12:31AM -0800, Ben Pfaff wrote: > On Thu, Mar 07, 2013 at 04:12:22AM +0100, Simon Horman wrote: > > Perhaps Ben has some ideas, but it seems to me that the > > way that execute_* and compose_* interact needs to be changed > > around in order to preserve the order of actions. > > This seems likely to be necessary.
Hi, I have taken a look into changing things around to preserve the order of actions, however, I think there is a problem. My reading of compose_output_action__() is that if a flow outputs to more than one port, is for an IP frame and get_priority() calls return different values for different ports then set_ipv4 or set_ipv6 action may be added between output actions. The behaviour above seems problematic as the motivation for preserving the order of actions was to avoid the case where an action that needs l3+ data occurs after a push_mpls action. This would allow an skb's network header to be used to track the top of the MPLS stack in the kernel datapath. It is not obvious to me how the behaviour relating to get_priority() as described above can sensibly be reconciled with a desire to preserve the order of actions. Or even reconciled with a looser constraint that actions that need l3+ data occur before push_mpls actions. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev