goto exit;
}
}
- /* TODO:XXX Clear-Actions */
+ if (insts[OVSINST_OFPIT11_CLEAR_ACTIONS]) {
+ instruction_get_OFPIT11_CLEAR_ACTIONS(
+ insts[OVSINST_OFPIT11_CLEAR_ACTIONS]);
+ ofpact_put_CLEAR_ACTIONS(ofpacts);
+ }
/* TODO:XXX Write-Actions */
/* TODO:XXX Write-Metadata */
if (insts[OVSINST_OFPIT11_GOTO_TABLE]) {
}
if (insts[OVSINST_OFPIT11_WRITE_METADATA] ||
- insts[OVSINST_OFPIT11_WRITE_ACTIONS] ||
- insts[OVSINST_OFPIT11_CLEAR_ACTIONS]) {
+ insts[OVSINST_OFPIT11_WRITE_ACTIONS]) {
error = OFPERR_OFPBIC_UNSUP_INST;
goto exit;
}
case OFPACT_EXIT:
return 0;
+ case OFPACT_CLEAR_ACTIONS:
case OFPACT_GOTO_TABLE:
return 0;
case OFPACT_SET_IPV4_DSCP:
case OFPACT_SET_L4_SRC_PORT:
case OFPACT_SET_L4_DST_PORT:
+ case OFPACT_CLEAR_ACTIONS:
case OFPACT_GOTO_TABLE:
NOT_REACHED();
}
= htons(ofpact_get_SET_L4_DST_PORT(a)->port);
break;
+ case OFPACT_CLEAR_ACTIONS:
case OFPACT_GOTO_TABLE:
/* TODO:XXX */
break;
= htons(ofpact_get_SET_L4_DST_PORT(a)->port);
break;
+ case OFPACT_CLEAR_ACTIONS:
case OFPACT_GOTO_TABLE:
NOT_REACHED();
const struct ofpact *a;
OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
- /* TODO:XXX Clear-Actions */
/* TODO:XXX Write-Actions */
/* TODO:XXX Write-Metadata */
- if (a->type == OFPACT_GOTO_TABLE) {
+ if (a->type == OFPACT_CLEAR_ACTIONS) {
+ struct ofp11_instruction *oi;
+ oi = instruction_put_OFPIT11_CLEAR_ACTIONS(openflow);
+ } else if (a->type == OFPACT_GOTO_TABLE) {
struct ofp11_instruction_goto_table *oigt;
oigt = instruction_put_OFPIT11_GOTO_TABLE(openflow);
case OFPACT_AUTOPATH:
case OFPACT_NOTE:
case OFPACT_EXIT:
+ case OFPACT_CLEAR_ACTIONS:
case OFPACT_GOTO_TABLE:
default:
return false;
ds_put_cstr(s, "exit");
break;
+ case OFPACT_CLEAR_ACTIONS:
+ ds_put_format(s, "%s",
+ ofpact_instruction_name_from_type(
+ OVSINST_OFPIT11_CLEAR_ACTIONS));
+ break;
+
case OFPACT_GOTO_TABLE:
ds_put_format(s, "%s:%"PRIu8,
ofpact_instruction_name_from_type(
ds_put_cstr(string, ",");
}
- /* TODO:XXX clear-actions */
/* TODO:XXX write-actions */
/* TODO:XXX write-metadata */
ofpact_format(a, string);