Thanks, applied to master.
On Thu, Dec 10, 2015 at 05:16:02PM -0800, Justin Pettit wrote: > Acked-by: Justin Pettit <jpet...@ovn.org> > > --Justin > > > > On Dec 8, 2015, at 5:08 PM, Ben Pfaff <b...@ovn.org> wrote: > > > > This will have another user in an upcoming commit. > > > > Signed-off-by: Ben Pfaff <b...@ovn.org> > > --- > > ovn/lib/actions.c | 70 > > +++++++++++++++++++++++++++++++------------------------ > > 1 file changed, 39 insertions(+), 31 deletions(-) > > > > diff --git a/ovn/lib/actions.c b/ovn/lib/actions.c > > index 581dbae..6bc452a 100644 > > --- a/ovn/lib/actions.c > > +++ b/ovn/lib/actions.c > > @@ -52,6 +52,8 @@ struct action_context { > > struct expr *prereqs; /* Prerequisites to apply to match. */ > > }; > > > > +static bool parse_action(struct action_context *); > > + > > static bool > > action_error_handle_common(struct action_context *ctx) > > { > > @@ -225,6 +227,42 @@ emit_ct(struct action_context *ctx, bool recirc_next, > > bool commit) > > add_prerequisite(ctx, "ip"); > > } > > > > +static bool > > +parse_action(struct action_context *ctx) > > +{ > > + if (ctx->lexer->token.type != LEX_T_ID) { > > + action_syntax_error(ctx, NULL); > > + return false; > > + } > > + > > + enum lex_type lookahead = lexer_lookahead(ctx->lexer); > > + if (lookahead == LEX_T_EQUALS || lookahead == LEX_T_EXCHANGE > > + || lookahead == LEX_T_LSQUARE) { > > + parse_set_action(ctx); > > + } else if (lexer_match_id(ctx->lexer, "next")) { > > + parse_next_action(ctx); > > + } else if (lexer_match_id(ctx->lexer, "output")) { > > + emit_resubmit(ctx, ctx->output_ptable); > > + } else if (lexer_match_id(ctx->lexer, "ip.ttl")) { > > + if (lexer_match(ctx->lexer, LEX_T_DECREMENT)) { > > + add_prerequisite(ctx, "ip"); > > + ofpact_put_DEC_TTL(ctx->ofpacts); > > + } else { > > + action_syntax_error(ctx, "expecting `--'"); > > + } > > + } else if (lexer_match_id(ctx->lexer, "ct_next")) { > > + emit_ct(ctx, true, false); > > + } else if (lexer_match_id(ctx->lexer, "ct_commit")) { > > + emit_ct(ctx, false, true); > > + } else { > > + action_syntax_error(ctx, "expecting action"); > > + } > > + if (!lexer_match(ctx->lexer, LEX_T_SEMICOLON)) { > > + action_syntax_error(ctx, "expecting ';'"); > > + } > > + return !ctx->error; > > +} > > + > > static void > > parse_actions(struct action_context *ctx) > > { > > @@ -242,37 +280,7 @@ parse_actions(struct action_context *ctx) > > } > > > > while (ctx->lexer->token.type != LEX_T_END) { > > - if (ctx->lexer->token.type != LEX_T_ID) { > > - action_syntax_error(ctx, NULL); > > - break; > > - } > > - > > - enum lex_type lookahead = lexer_lookahead(ctx->lexer); > > - if (lookahead == LEX_T_EQUALS || lookahead == LEX_T_EXCHANGE > > - || lookahead == LEX_T_LSQUARE) { > > - parse_set_action(ctx); > > - } else if (lexer_match_id(ctx->lexer, "next")) { > > - parse_next_action(ctx); > > - } else if (lexer_match_id(ctx->lexer, "output")) { > > - emit_resubmit(ctx, ctx->output_ptable); > > - } else if (lexer_match_id(ctx->lexer, "ip.ttl")) { > > - if (lexer_match(ctx->lexer, LEX_T_DECREMENT)) { > > - add_prerequisite(ctx, "ip"); > > - ofpact_put_DEC_TTL(ctx->ofpacts); > > - } else { > > - action_syntax_error(ctx, "expecting `--'"); > > - } > > - } else if (lexer_match_id(ctx->lexer, "ct_next")) { > > - emit_ct(ctx, true, false); > > - } else if (lexer_match_id(ctx->lexer, "ct_commit")) { > > - emit_ct(ctx, false, true); > > - } else { > > - action_syntax_error(ctx, "expecting action"); > > - } > > - if (!lexer_match(ctx->lexer, LEX_T_SEMICOLON)) { > > - action_syntax_error(ctx, "expecting ';'"); > > - } > > - if (ctx->error) { > > + if (!parse_action(ctx)) { > > return; > > } > > } > > -- > > 2.1.3 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev