On Wed, Dec 14, 2016 at 06:41:46PM -0800, William Tu wrote: > >> actions= > >> clone(truncate(100), push_vlan, resubmit, ...) > >> where we don't need to worry about missing the truncate_unset() because > >> truncated packet is not visible outside the clone(). > > > > I see how "clone" helps with this conceptually, but I'm not sure why the > > "sample" is necessary. I think that the proposed value here is that > > "sample" allows the truncate to be canceled if no output occurs after > > "truncate" and before the end of the "sample" action. But it's also > > possible for the translation code to see whether there's an output > > action within the clone and, if there is none, then to refrain from > > emitting the datapath "truncate" action entirely. That seems like a > > more efficient way to implement it. Will that work? > > Yes that will work, but we have to add a new datapath clone action. > The reason I use "sample" is try not to add another new datapath > action to kernel. Current "sample" action happens to provide a list > of actions to execute, so I repurpose it to clone.
I still don't understand. Here are some examples of translations from OpenFlow to datapath actions, the way I would expect them to happen: OF: 1, clone(truncate(100), push_vlan, 2), 3 dp: 1, truncate(100), push_vlan, 2, pop_vlan, 3 OF: 1, clone(truncate(100), push_vlan), 2 dp: 1, 2 Where does the sample action help? Thanks, Ben. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev