On Mon, Mar 18, 2013 at 12:37 AM, Simon Horman <ho...@verge.net.au> wrote:
> * Update the order in which actions are committed and thus
>   appear in the datapath such that MPLS actions appear after
>   l3 and l4 (nw and port) actions.
>
>   In the case where an mpls_push action is present it should ensure
>   that l3 and l4 actions occur first, which seems logical as
>   once a mpls_push has occur the frame will be MPLS rather
>   than IPv4 or IPv6.
>
>   In the case where there is an mpls_pop action is present this should
>   not make any difference as the frame will have been MPLS to start with
>   and thus not satisfy the pre-requisites for  l3 or l4 actions.
>
> * Update commit_set_nw_action() to use the base ethertype when considering
>   eligibility to commit l3 (nw) actions. This allows l3 actions to be
>   applied so long as the frame was originally IPv4 or IPv6, even if
>   an mpls_push action will be applied and thus flow indicates the
>   frame will be MPLS.
>
> Signed-off-by: Simon Horman <ho...@verge.net.au>

I think this is the right path although I'm not sure that it fully
handles L4 ports correctly if you push an MPLS label, output, and then
set a port number.  We should ignore the last set but I think we will
attempt to do it anyways since we originally had an unlabeled packet.
Maybe we should sanitize the flow a little more when we push a label.

It would also be good to add some comments since the ordering and
checks were essentially arbitrary before but are now important.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to