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 <[email protected]>
>
> 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
[email protected]
http://openvswitch.org/mailman/listinfo/dev