On Mon, Jul 18, 2016 at 08:20:42PM +0000, Jan Scheurich wrote:
> > 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()).

Yes, that is entirely correct.

> 
> > 
> > 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