On Wed, Jul 18, 2012 at 09:29:31AM -0700, Ben Pfaff wrote:
> On Wed, Jul 18, 2012 at 08:41:17PM +0900, Isaku Yamahata wrote:
> > Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>
> 
> It looks like your intended strategy for handling Apply-Actions is to
> put those actions into a nested set of ofpacts.  I see how this would
> work--it is one strategy that I have considered--but the strategy that
> I have been leaning toward is instead to put ofpacts for all the
> instructions together, in the correct order, without using any
> nesting.  OF1.1 specifies the order in which instructions are
> executed, so the order is simple enough.  There is some overlap
> between what Apply-Actions and Write-Actions can do, but we should be
> able to distinguish them one way or another.

I see. Let me check my understanding and I need some feedback before
starting to rewrite the patch series.

The basic strategy is
- don't introduce actions that directly corresponds to instruction.
- distinguish Apply-Actions and Write-Actions somehow
- teach encoder/decoder those distinction
- teach do_xlate_actions()/struct action_xlate_ctx those distinction
  to track mode. i.e. in apply actions or in write-actions somehow.

  Anyway for action-set and group table, some enhancements
  to xlate_actions()is necessary.
  Once I finished apply-action/goto-table instruction, I'd like to address
  action-set and group table.

Then, the remaining issue is how to differentiate Apply-Action and
Write-Action.
Which way do you prefer? My preference is B.

A. always put clear-actions with parameter
   OFPACT_INST_CLEAR_ACTIONS
   struct ofpact_instruction_clear_action {
      struct ofpact ofpact;
      uint8_t clear;    /* true: OFPIT11_CLEAR_ACTION is speicfied
                         * false: OFPIT11_CLEAR_ACTION is not specified.
                         *        serves as marker for starting write-actions
                         */
   }

B. add meta action for marker. Its real action is nop.
   something like

   OFPACT_INSTRUCTION_WRITE_ACTIONS_START
   struct ofpact; (No additional parameter)

   or

   OFPACT_INSTRUCTION_DELIMITER
   struct ofpact_instruction_delimiter {
      struct ofpact ofpact;
      uint8_t instruction_type;
   }
   At this moment, only instruction_type = OVSINST_OFPIT11_WRITE_ACTIONS
   is used.

C. add flag member to struct ofpact
   I think this is overkill.

D. any other idea?

thanks,
-- 
yamahata
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to