From patchwork Wed Dec 9 01:08:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 554170 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (unknown [IPv6:2600:3c00::f03c:91ff:fe6e:bdf7]) by ozlabs.org (Postfix) with ESMTP id 9C76C1402B4 for ; Wed, 9 Dec 2015 12:09:03 +1100 (AEDT) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 1CE8410771; Tue, 8 Dec 2015 17:08:35 -0800 (PST) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx3v3.cudamail.com (mx3.cudamail.com [64.34.241.5]) by archives.nicira.com (Postfix) with ESMTPS id 766CF1075A for ; Tue, 8 Dec 2015 17:08:33 -0800 (PST) Received: from bar4.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id 0425C1617F4 for ; Tue, 8 Dec 2015 18:08:33 -0700 (MST) X-ASG-Debug-ID: 1449623312-03dc21603ed479e0001-byXFYA Received: from mx3-pf2.cudamail.com ([192.168.14.1]) by bar4.cudamail.com with ESMTP id x3UARus6p2gGGdaS (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 08 Dec 2015 18:08:32 -0700 (MST) X-Barracuda-Envelope-From: blp@ovn.org X-Barracuda-RBL-Trusted-Forwarder: 192.168.14.1 Received: from unknown (HELO relay4-d.mail.gandi.net) (217.70.183.196) by mx3-pf2.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 9 Dec 2015 01:08:32 -0000 Received-SPF: pass (mx3-pf2.cudamail.com: SPF record at ovn.org designates 217.70.183.196 as permitted sender) X-Barracuda-Apparent-Source-IP: 217.70.183.196 X-Barracuda-RBL-IP: 217.70.183.196 Received: from mfilter28-d.gandi.net (mfilter28-d.gandi.net [217.70.178.159]) by relay4-d.mail.gandi.net (Postfix) with ESMTP id 9C9451720A3; Wed, 9 Dec 2015 02:08:30 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mfilter28-d.gandi.net Received: from relay4-d.mail.gandi.net ([IPv6:::ffff:217.70.183.196]) by mfilter28-d.gandi.net (mfilter28-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id Nf-sQNA0Lj8P; Wed, 9 Dec 2015 02:08:29 +0100 (CET) X-Originating-IP: 208.91.2.3 Received: from sigabrt.benpfaff.org (unknown [208.91.2.3]) (Authenticated sender: blp@ovn.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id B0D02172098; Wed, 9 Dec 2015 02:08:28 +0100 (CET) X-CudaMail-Envelope-Sender: blp@ovn.org From: Ben Pfaff To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-V2-1207068699 X-CudaMail-DTE: 120815 X-CudaMail-Originating-IP: 217.70.183.196 Date: Tue, 8 Dec 2015 17:08:09 -0800 X-ASG-Orig-Subj: [##CM-V2-1207068699##][PATCH 06/14] actions: Factor out new helper function add_prerequisite(). Message-Id: <1449623297-31060-7-git-send-email-blp@ovn.org> X-Mailer: git-send-email 2.1.3 In-Reply-To: <1449623297-31060-1-git-send-email-blp@ovn.org> References: <1449623297-31060-1-git-send-email-blp@ovn.org> X-Barracuda-Connect: UNKNOWN[192.168.14.1] X-Barracuda-Start-Time: 1449623312 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Cc: Ben Pfaff Subject: [ovs-dev] [PATCH 06/14] actions: Factor out new helper function add_prerequisite(). X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" This will acquire new users in upcoming commits. Signed-off-by: Ben Pfaff Acked-by: Justin Pettit --- ovn/lib/actions.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ovn/lib/actions.c b/ovn/lib/actions.c index 693b1c1..581dbae 100644 --- a/ovn/lib/actions.c +++ b/ovn/lib/actions.c @@ -183,6 +183,19 @@ parse_next_action(struct action_context *ctx) } } +/* Parses 'prerequisite' as an expression in the context of 'ctx', then adds it + * as a conjunction with the existing 'ctx->prereqs'. */ +static void +add_prerequisite(struct action_context *ctx, const char *prerequisite) +{ + struct expr *expr; + char *error; + + expr = expr_parse_string(prerequisite, ctx->symtab, &error); + ovs_assert(!error); + ctx->prereqs = expr_combine(EXPR_T_AND, ctx->prereqs, expr); +} + static void emit_ct(struct action_context *ctx, bool recirc_next, bool commit) { @@ -209,12 +222,7 @@ emit_ct(struct action_context *ctx, bool recirc_next, bool commit) ct->alg = 0; /* CT only works with IP, so set up a prerequisite. */ - struct expr *expr; - char *error; - - expr = expr_parse_string("ip", ctx->symtab, &error); - ovs_assert(!error); - ctx->prereqs = expr_combine(EXPR_T_AND, ctx->prereqs, expr); + add_prerequisite(ctx, "ip"); } static void @@ -249,9 +257,7 @@ parse_actions(struct action_context *ctx) emit_resubmit(ctx, ctx->output_ptable); } else if (lexer_match_id(ctx->lexer, "ip.ttl")) { if (lexer_match(ctx->lexer, LEX_T_DECREMENT)) { - struct expr *e = expr_parse_string("ip", ctx->symtab, - &ctx->error); - ctx->prereqs = expr_combine(EXPR_T_AND, ctx->prereqs, e); + add_prerequisite(ctx, "ip"); ofpact_put_DEC_TTL(ctx->ofpacts); } else { action_syntax_error(ctx, "expecting `--'");