From patchwork Tue Jul 17 13:34:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Sitnicki X-Patchwork-Id: 945048 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41VLsV1yFmz9rxs for ; Tue, 17 Jul 2018 23:36:30 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id DD190CE4; Tue, 17 Jul 2018 13:34:30 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 317F0CCA for ; Tue, 17 Jul 2018 13:34:27 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 9B835711 for ; Tue, 17 Jul 2018 13:34:26 +0000 (UTC) Received: by mail-wm0-f65.google.com with SMTP id s14-v6so1560894wmc.1 for ; Tue, 17 Jul 2018 06:34:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=NGPbEnw1sQNRgzqSXLL/CTo1LVWvqkXBQJ2mCvcR4ro=; b=mWKUpyArCzjBFbmh/WV6xyGLp/P9Qx6mvFPeKJMJHJ2YgF4L22sp/zg2ArA8xGUaoY ll3IK+xaIUMUW7m3UfVIzi+Jepalr8M2tVELwJoPUwR56E65uiX+AcG8Lbim7NODfHAO 7s4Kmp9PPravBt6wCMAFxYdPQ8/7S4oSraX5MAh82Z74eMC1JOX7/m48Q6ZWMnBUDwTG BvxFw6nqnMrJdvNokS6yfa882ZjErqxsd4Szbug+LTIzEYWbIVlgmCLGygC8DVKaui00 CvXZBhv3Gh6Kp+Y+cpiAqYktsBvl7qOw42u9YssyBAcUYTg1wIszXXpFmVa5isZj4Sg8 SgWA== X-Gm-Message-State: AOUpUlFiHpRL4Fu5Lg9uHlSg3otRfjEKyRQvku4PsAL7x/rtX7I0fXNk v70NebXfy9QIvl1UQntgTax/4FuDBww= X-Google-Smtp-Source: AAOMgpcFN6JGFr0TM4y9XEkxEywZ3AZNNELpAGZj5cXvLAPPnMios/jbmu/LPt01V7VsgTH3+5a2Sw== X-Received: by 2002:a1c:b45:: with SMTP id 66-v6mr1366432wml.45.1531834465078; Tue, 17 Jul 2018 06:34:25 -0700 (PDT) Received: from redhat.com (218.red-2-136-166.dynamicip.rima-tde.net. [2.136.166.218]) by smtp.gmail.com with ESMTPSA id q140-v6sm2068657wmb.35.2018.07.17.06.34.24 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Jul 2018 06:34:24 -0700 (PDT) From: Jakub Sitnicki To: dev@openvswitch.org Date: Tue, 17 Jul 2018 15:34:09 +0200 Message-Id: <20180717133415.23781-6-jkbs@redhat.com> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20180717133415.23781-1-jkbs@redhat.com> References: <20180717133415.23781-1-jkbs@redhat.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH 05/11] ovn-nbctl: Don't die in parse_priority(). X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Let the caller handle the error. This prepares us for reporting errors in daemon mode. Signed-off-by: Jakub Sitnicki --- ovn/utilities/ovn-nbctl.c | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c index f89ddbc0a..1cee059f2 100644 --- a/ovn/utilities/ovn-nbctl.c +++ b/ovn/utilities/ovn-nbctl.c @@ -1684,16 +1684,17 @@ parse_direction(const char *arg) } } -static int -parse_priority(const char *arg) +static char * OVS_WARN_UNUSED_RESULT +parse_priority(const char *arg, int64_t *priority_p) { /* Validate priority. */ int64_t priority; if (!ovs_scan(arg, "%"SCNd64, &priority) || priority < 0 || priority > 32767) { - ctl_fatal("%s: priority must in range 0...32767", arg); + return xasprintf("%s: priority must in range 0...32767", arg); } - return priority; + *priority_p = priority; + return NULL; } static void @@ -1710,7 +1711,12 @@ nbctl_acl_add(struct ctl_context *ctx) } const char *direction = parse_direction(ctx->argv[2]); - int64_t priority = parse_priority(ctx->argv[3]); + int64_t priority; + error = parse_priority(ctx->argv[3], &priority); + if (error) { + ctx->error = error; + return; + } /* Validate action. */ if (strcmp(action, "allow") && strcmp(action, "allow-related") @@ -1825,7 +1831,11 @@ nbctl_acl_del(struct ctl_context *ctx) return; } - int64_t priority = parse_priority(ctx->argv[3]); + int64_t priority; + error = parse_priority(ctx->argv[3], &priority); + if (error) { + ctl_fatal("%s", error); + } if (ctx->argc == 4) { ctl_fatal("cannot specify priority without match"); @@ -1908,12 +1918,18 @@ nbctl_qos_add(struct ctl_context *ctx) { const struct nbrec_logical_switch *ls; const char *direction = parse_direction(ctx->argv[2]); - int64_t priority = parse_priority(ctx->argv[3]); + int64_t priority; int64_t dscp = -1; int64_t rate = 0; int64_t burst = 0; + char *error; - char *error = ls_by_name_or_uuid(ctx, ctx->argv[1], true, &ls); + error = parse_priority(ctx->argv[3], &priority); + if (error) { + ctx->error = error; + return; + } + error = ls_by_name_or_uuid(ctx, ctx->argv[1], true, &ls); if (error) { ctx->error = error; return; @@ -2039,7 +2055,11 @@ nbctl_qos_del(struct ctl_context *ctx) return; } - int64_t priority = parse_priority(ctx->argv[3]); + int64_t priority; + error = parse_priority(ctx->argv[3], &priority); + if (error) { + ctl_fatal("%s", error); + } if (ctx->argc == 4) { ctl_fatal("cannot specify priority without match"); @@ -3352,7 +3372,11 @@ nbctl_lrp_set_gateway_chassis(struct ctl_context *ctx) const char *chassis_name = ctx->argv[2]; if (ctx->argv[3]) { - priority = parse_priority(ctx->argv[3]); + error = parse_priority(ctx->argv[3], &priority); + if (error) { + ctx->error = error; + return; + } } gc_name = xasprintf("%s-%s", lrp_name, chassis_name);