> From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Simon Horman
> Sent: Monday, 18 July, 2016 14:14
> >
> > Simon, very good guide, do push_eth and pop_eth also need to follow
> > this?
> 
> Not exactly.
> 
> As of v12 of the patch-set there are two phases, compose and commit.
> This was not the case in previous versions and was the source of some bugs.
> 
> The composition phase is not done directly in do_xlate_actions(). Rather it is
> done as required in compose_output_action__() and
> execute_controller_action() by setting flow->base_layer. This implements
> automatic placement of push/pop_eth actions as they are required for
> output.

Simon, the difference to your patch set is that here the controller sends an 
explicit push_eth action in order to push an Ethernet header and then set the 
MAC addresses before transmission to a L2 port.

As far as I can judge, this requires triggering a commit in the push_eth 
composition phase, so that subsequent set_field(dl_src/dst) actions set the new 
outer ethernet header rather than the inner header. (Compare this to  
compose_mpls_push_action()).

> 
> This can be seen in "[PATCH v12 2/3] userspace: add layer 3 flow and
> switching support"
> 
> The commit phase is provided by commit_ether_action() which also handles
> modification of ethernet addresses other than by push/pop_eth.
> 
> This can be seen in "PATCH v12 1/3] userspace: add support for pop_eth and
> push_eth action"


_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to