From patchwork Wed Sep 13 12:36:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fischetti, Antonio" X-Patchwork-Id: 813420 X-Patchwork-Delegate: dlu998@gmail.com 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=) 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 3xsh4J5Gbdz9sNr for ; Wed, 13 Sep 2017 22:36:48 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 398D3AE1; Wed, 13 Sep 2017 12:36:44 +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 ED11FAA6 for ; Wed, 13 Sep 2017 12:36:42 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 516DF124 for ; Wed, 13 Sep 2017 12:36:42 +0000 (UTC) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Sep 2017 05:36:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,387,1500966000"; d="scan'208";a="128338213" Received: from sivswdev01.ir.intel.com (HELO localhost.localdomain) ([10.237.217.45]) by orsmga004.jf.intel.com with ESMTP; 13 Sep 2017 05:36:40 -0700 From: antonio.fischetti@intel.com To: dev@openvswitch.org Date: Wed, 13 Sep 2017 13:36:03 +0100 Message-Id: <1505306164-6665-1-git-send-email-antonio.fischetti@intel.com> X-Mailer: git-send-email 1.7.0.7 X-Spam-Status: No, score=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD autolearn=disabled version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH 1/2] dpctl: manage ret value when dumping CT entries. 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 Manage error value returned by ct_dpif_dump_next. Signed-off-by: Antonio Fischetti Reviewed-by: Greg Rose --- lib/dpctl.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/lib/dpctl.c b/lib/dpctl.c index 8951d6e..86d0f90 100644 --- a/lib/dpctl.c +++ b/lib/dpctl.c @@ -1263,6 +1263,7 @@ dpctl_dump_conntrack(int argc, const char *argv[], struct dpif *dpif; char *name; int error; + int ret; if (argc > 1 && ovs_scan(argv[argc - 1], "zone=%"SCNu16, &zone)) { pzone = &zone; @@ -1286,7 +1287,7 @@ dpctl_dump_conntrack(int argc, const char *argv[], return error; } - while (!ct_dpif_dump_next(dump, &cte)) { + while (!(ret = ct_dpif_dump_next(dump, &cte))) { struct ds s = DS_EMPTY_INITIALIZER; ct_dpif_format_entry(&cte, &s, dpctl_p->verbosity, @@ -1296,6 +1297,13 @@ dpctl_dump_conntrack(int argc, const char *argv[], dpctl_print(dpctl_p, "%s\n", ds_cstr(&s)); ds_destroy(&s); } + if (ret && ret != EOF) { + dpctl_error(dpctl_p, ret, "dumping conntrack entry"); + ct_dpif_dump_done(dump); + dpif_close(dpif); + return ret; + } + ct_dpif_dump_done(dump); dpif_close(dpif); return error; @@ -1348,6 +1356,7 @@ dpctl_ct_stats_show(int argc, const char *argv[], int proto_stats[CT_STATS_MAX]; int tcp_conn_per_states[CT_DPIF_TCPS_MAX_NUM]; int error; + int ret; while (argc > 1 && lastargc != argc) { lastargc = argc; @@ -1384,7 +1393,7 @@ dpctl_ct_stats_show(int argc, const char *argv[], } int tot_conn = 0; - while (!ct_dpif_dump_next(dump, &cte)) { + while (!(ret = ct_dpif_dump_next(dump, &cte))) { ct_dpif_entry_uninit(&cte); tot_conn++; switch (cte.tuple_orig.ip_proto) { @@ -1425,6 +1434,12 @@ dpctl_ct_stats_show(int argc, const char *argv[], break; } } + if (ret && ret != EOF) { + dpctl_error(dpctl_p, ret, "dumping conntrack entry"); + ct_dpif_dump_done(dump); + dpif_close(dpif); + return ret; + } dpctl_print(dpctl_p, "Connections Stats:\n Total: %d\n", tot_conn); if (proto_stats[CT_STATS_TCP]) { @@ -1482,6 +1497,7 @@ dpctl_ct_bkts(int argc, const char *argv[], uint16_t *pzone = NULL; int tot_bkts = 0; int error; + int ret; if (argc > 1 && !strncmp(argv[argc - 1], CT_BKTS_GT, strlen(CT_BKTS_GT))) { if (ovs_scan(argv[argc - 1], CT_BKTS_GT"%"SCNu16, >)) { @@ -1521,7 +1537,7 @@ dpctl_ct_bkts(int argc, const char *argv[], int tot_conn = 0; uint32_t *conn_per_bkts = xzalloc(tot_bkts * sizeof(uint32_t)); - while (!ct_dpif_dump_next(dump, &cte)) { + while (!(ret = ct_dpif_dump_next(dump, &cte))) { ct_dpif_entry_uninit(&cte); tot_conn++; if (tot_bkts > 0) { @@ -1533,6 +1549,12 @@ dpctl_ct_bkts(int argc, const char *argv[], } } } + if (ret && ret != EOF) { + dpctl_error(dpctl_p, ret, "dumping conntrack entry"); + ct_dpif_dump_done(dump); + dpif_close(dpif); + return ret; + } dpctl_print(dpctl_p, "Current Connections: %d\n", tot_conn); dpctl_print(dpctl_p, "\n");