Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp> --- v3 - manual rebase
v2 - changed for ofp_instruction Conflicts: ofproto/ofproto-dpif.c --- lib/ofp-actions.c | 3 +-- ofproto/ofproto-dpif.c | 11 +++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index 165b131..2a027dc 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -907,8 +907,7 @@ ofpacts_pull_openflow11_instructions(struct ofpbuf *openflow, ogt->table_id = oigt->table_id; } - if (insts[OVSINST_OFPIT11_GOTO_TABLE] || - insts[OVSINST_OFPIT11_WRITE_METADATA] || + if (insts[OVSINST_OFPIT11_WRITE_METADATA] || insts[OVSINST_OFPIT11_WRITE_ACTIONS] || insts[OVSINST_OFPIT11_CLEAR_ACTIONS]) { error = OFPERR_OFPBIC_UNSUP_INST; diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 8b857f3..c73b2e4 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -5505,7 +5505,6 @@ do_xlate_action(const struct ofpact *a, struct action_xlate_ctx *ctx) case OFPACT_RESUBMIT: xlate_ofpact_resubmit(ctx, ofpact_get_RESUBMIT(a)); - break; case OFPACT_SET_TUNNEL: ctx->flow.tun_id = htonll(ofpact_get_SET_TUNNEL(a)->tun_id); @@ -5578,9 +5577,13 @@ do_xlate_action(const struct ofpact *a, struct action_xlate_ctx *ctx) NOT_REACHED(); /* TODO:XXX */ break; - case OFPACT_GOTO_TABLE: - NOT_REACHED(); /* TODO:XXX */ - break; + case OFPACT_GOTO_TABLE: { + struct ofpact_goto_table *ogt = ofpact_get_GOTO_TABLE(a); + xlate_table_action(ctx, ctx->flow.in_port, + ogt->table_id == 255? ctx->table_id: ogt->table_id); + /* TODO:XXX remove 255 */ + return false; + } } return true; -- 1.7.1.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev