From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15301938257311003.9521137074418; Thu, 28 Jun 2018 06:50:25 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1D2D03078AAC; Thu, 28 Jun 2018 13:50:24 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C010B11A2AD; Thu, 28 Jun 2018 13:50:23 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 321B63F7FA; Thu, 28 Jun 2018 13:50:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDNwQM021019 for ; Thu, 28 Jun 2018 09:23:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id D6E9B300193B; Thu, 28 Jun 2018 13:23:58 +0000 (UTC) Received: from mx1.redhat.com (ext-mx18.extmail.prod.ext.phx2.redhat.com [10.5.110.47]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CFD973083323 for ; Thu, 28 Jun 2018 13:23:57 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0081.outbound.protection.outlook.com [104.47.32.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7B41130820F0 for ; Thu, 28 Jun 2018 13:23:55 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:23:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QL/SZ7kRUSnOqvc3dG+3OnHZ3NJKa8v4WtlIF4UT8Vo=; b=FqVSgjm4cbUbSBS3tBjkuXY6kAVIArfPChSXbqvqG7v6NDB/PlgRtEY+z7IhsKqne9AdBjysAAjAo+19Giv+vNMms+HHv/n9QUAs+pYp8gQuwGI9NKltiqwx27sRp1To+YIRaPcz/rc3IWsa7n72+EyWmTS4qbZKM7zLA2nEIcU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:32 +0530 Message-Id: <20180628132237.11811-2-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a15b8aef-913e-4dc7-4d9a-08d5dcfa6582 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:2YoKT2EtWRlTOqUSzvpjmxZUxdX+6Nu6uxAjcQVBccvGKGU6KbL7T9RObU4eYL/LSrmQyVcvQgBKK6m3fwS58aIb4REpvitmEzsnkdFHCTaQSUUdIEXStKggNhdAwE28fCIojKupzVb54rmr/QjYlUUZhstbvJGSWCGDiV7Ue258LT0JJQmSvzVvEtxQaWx918ydyWu33Hm3WpSbaUJ7/qlkgebXW2byLDkpPeEoI9KgNMM1N4jXxWRPS34lAxz3; 25:2lT2gGqhLr6hWGtK6YbgX/PiRb82c7vNIvUoZDr7PYXqHYLV8HXqhoGim8SU9qenF5IfLABOfocv9lY53woBVK58Z2r7vlqdPxJudFtksxDwKA9DejcvBkkMPUTqXO+lo0/YZhkdq9B32xG+RYSe3ons90knlD4VacXVttt4gyBjN5ZoUqAhcB+aE18c684ypkkmSkbmbToXuhstsZMd9OhuBZht3Wxsq2y0ZD372OnMIXWKGHwDzXwPCbdDDMfwEFZy5qnzbIyxjp2rIXjOFhoLhyvM7ARsk50XeLrRKXv/UcjjTYcblumYAyWOKyV+MVRI6Kb6FERnNLWucoFR5Q==; 31:6/z12olF4A/uLajWhFRUKvJPgFBAH82iBS//dwRI48ew9u1+kZLGG04LaWBJxGbQurDazGvEcWuVqQupsVWUtruQeEkaJaaIJbtQhLYSr31TCFOJ85w+I8KfDDeyoPnuonLqw/PYqZmGqePr7uOYqjmCeIk0cn/ogeuGF/fCNkSzlKZ9TX2SHoEr3ktelsVZkj56fzQEcc6p74dHMfqH6onFWssEFgOn6mxN3AeRfXY= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:S2YcHZBDfPo8UGF/sMSnE7IpihgfK3e2GvFH+tI454GdordcedjvHLCMUycO9GRPS++XSRNtbGnoC7qSa72U6XrFytSA2gyweOSUpdcjJQLtwU7GSBYd1WHltqq8wxu4xzJeeXwL1I1v5c8FdklCzhsAy/DlIHGBxOCqa9zkmQZy7XYbak2kSA5N9OtnQ2cEXGrUbFWbYA/QT5fG5TUuMKF3G4XSIm+yMsivxvue/vs5lhAuixu6NzrzRpshlYxqi/+ZyUUJyPR1PQoDrmsNqZSnidv5Fv2WXz2HpdGUqhbS5SbVhq8ZjdYAGGG5Z/x8dSIAlPKIlhw8LKI8UybVCGECvGbeC5ZFa79OHjugJ84MMP8hxFJOOXfCiviO4SQi8udtZI8yyoT3WavnxCJj7mPp6iJE46vp96DBHbkWHdegSiJgm+ghiEsF7AdmrxnpKxY9neYkxbzdDAeRr4/4vaIT2RrJw3jrZmfB8WVZz5B7JPj/1lY47rK2NJ8tfyZ4; 4:+xtkCja6fygWSXLZNgc5Ydmvyyc8OkHQ8JZOg3KGooc+BLgwwfywIdmicai2lMJc1DHrhJdGGhFFBIsDZwAA+XhA26CoKoZrphAhdWjCTIe1cJFPKUYRBndoBJti1N9UbfdnBDXnVL1SBm9Xol9PrXbPOdURn9yWsmMwHQK4pZeQMzYUvTMA0qrZlhTcxCylZDNvlU0uhA7ZVfSqVLpzm63XYYxF2J/c7UC7Gjlt1Hz6HalyJ/OIs3St7b8aGHT8YAAx901U1S7gyCQ6GFwuAQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(476003)(956004)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(4743002)(53416004)(50466002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:p8bFrjl98qNkZ3m6EzCbM8pgTEDfb6gxHDh630P?= =?us-ascii?Q?rOichjpXQUdSG4Q2beM8nw+Xq1eg+kxhQGooYe2Wc9mcIuTYIz5v7RWzFWP7?= =?us-ascii?Q?1TLDHAZZiX9tudlRrqDm9HdPI4bUktBTs2ABl8oX1YsXo9Qmv/5SA0x5Tpe5?= =?us-ascii?Q?97tFYzizu6Q53szEeVrE+iw7qrs+I+MFKCLe55Q6VkbdZyWF3TcQOZCaPVfG?= =?us-ascii?Q?JOS1PmMOEIxuNfON6AB9L7xaUY37RZQgcpxqTBrswcKZ9ZhGUyvsPk/XXJjX?= =?us-ascii?Q?KdmN9fc0L7FYjSAYgJS/lfYCTfTCc1lGckezQiFE4Sjw9CBgmYV/JcwKA7Zt?= =?us-ascii?Q?3F1OMrNiuuQx6NJ/fY/vzT6WR/J0SWrm7BoUwSsBWken6RnlI7L0djkcHzIi?= =?us-ascii?Q?U6nO1an9ObhNU7Fd2st+2oirguG4auy6GBCe47EBvCF/SnwWjOCcjCONxIK3?= =?us-ascii?Q?UR144u9vU6D2aBjx3YYjzCF0qB9b0e+KarFkF9mHu1yYCehvaY06KaEsuztj?= =?us-ascii?Q?ySEYkS26L9JUvJsFjy4hwHnym8VSY4aogVnutqPET3cgmEdgeY+EzbAXae9I?= =?us-ascii?Q?AIGm56zTN3fbOsVbihmlbJEjMIg1cuflZyC7nL062JvCeASCP1Viya2mqcq6?= =?us-ascii?Q?Ao4tUXcCZovcDrf2B9EW69aDQMpO0ZYXnSqrnoyLxziC0E6aSe2xm4xwYsKD?= =?us-ascii?Q?aBVS27a673lMnUu9489R8wIdwRj64eJ9NazAUscYC8To/txih9unPewjIDQK?= =?us-ascii?Q?5XiXL8QKvuzWXIs+5kdcOGip6wpBTNsvwuk0fRBL6L7sPHGah8JkMHc2d/9a?= =?us-ascii?Q?eZWPEvxveGnTFcyi/QNYpCOK1oxCWE1rW28/XqQvAwzimkFnkUlAYX7XS02j?= =?us-ascii?Q?5lWFd+yAaPibfs+x6tNLv1EPGY6Qagz+0OtMxAh+lciE3izteojfQot++Gv2?= =?us-ascii?Q?x6I1/UQdjwuS2ImT+bg07s1sxhcY4lE2bxbs7yMW3OboqjDn1Z/+cjSE1gop?= =?us-ascii?Q?coIkyBv+5nPVcCYzP3hl9PvJTuYNDy9FHkAo9aRpeaP3ldplPdogUPllNgBt?= =?us-ascii?Q?RPttma0NetMTk1naFx88wEeKVSWsy2rd0FyJZxbTNICci2NgooYw1pcaT/aV?= =?us-ascii?Q?nvkySOPS0ncx+InKQBgYlLTVxWf6lXyXkwSujNzbaTurJwqrrBWs+/1AOY0m?= =?us-ascii?Q?6LrIplkhf75ac6M8zvuPA5mzcGoZcxpWqBJuE/JiXs0mRRHbDHE8SBXFzLoP?= =?us-ascii?Q?cXR+gteMflvwY5VfaXA1bio1lcJSd63L8w0JPzquL0CYyfOzI3TMw73rR8Xc?= =?us-ascii?Q?x9f9if/jfjWDF4r2tS0X7RdYhTr5L1RxAq/IhUBzeQ0oZa53+OrAn/F0xpIr?= =?us-ascii?Q?3fTzDRDbUOvXCVP5jFGWxLe0eQPQ=3D?= X-Microsoft-Antispam-Message-Info: GckMqhIlXncUPWjAXFtOZBt+2QB+yw1EqDsx6ax6iVGo8bszU75DwHatoQw5jDlCO5VL9i8KAJF+yVchXdJ0hl5BX4gjR2ZVoaO0GeVN0Gsg6RLucSUR5YARFv76W1wKKsyDI9yVSP76rKmReeg2gug5J+KlN+1MqaCXIRh4havJmwBXZ1x8dgzT8qBlr6UhCZKFFMerA3HFkNqVC+DZTPxup/xCezBecmoRAia8CJb/RKA79J2ojCyV7nMiQOhyCxmXtCye+T/gFZmOAJaSZfEkX/S9sxxxav0yuoOxhjt10rAf7CF8+1BMXEiHKGmfrDtG90BkdCSRsnuZGUEkDKPIUvhcLJ00BxBnl4e0U/M= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:HxMvjdUP8Dy+2LvnqyVYvOMYXKXBcEORujG3s44QvXXy3S28SKNSRpqrChpBGQ5Atw5VBzcu5cKL4mPkPbAZaRSAzGb5nBXXt8bu1PFEHJGnk8DlKoRc8sdb/2qcP04SOjkEOXNTGp4mBaTkgpHRkm1dUvtrWwQRed0jMZXQR/XnJdS3fcvp0LkGTDP+LP/9PlpzVO0UFh21e0L8y7pjPVUQgmY4SYNpes+EAkEEq0tmwhx0xpXUTyiLk9LSNx7x9wpLf6HD7Y0BYmDBPAJI0aKHO9hTCSdq9Xtj1ObVqLAgvGqW+E9fBFFUEs00fWlHk5/GZnr/RafMDM8cCR5ABzwgO1H8DzAp54WUHf/sRzszFS5kJSzOO9jbJaSt4BOxXP+cgj+xAZx/3IP4s2HBQvd9OnAH5UmIVxdsJmAsp/ku6pC7kmzQKwrBtAjjes7QTxfrMc69rVhXl03fZ+Zwfw==; 5:GE+KGTTafiDNzF9JB+AQBe/C2zsg6PoVjKcvZlx0SKIc4CK9rYm7GfFXfyUUb4TjX+VXOA4rOyf9klumbethQ0AO9Gshf+UXvvDD3Fxl1lQSZ2ucVDGP5kmGRXI6sbsxWPkI2EmCxP23/Yr+x7fxIc7fQ++r36LS11PQFLv6iiM=; 24:koGcl3kxsyQJSmx1280/B+CGm71a90HF8QWMIe3z1w4QvjdLTB122hUKTHwsMKTUvARDgUYEt0tcXG/6JA/k3EPwsTa+tMHOJFAHpcEDBqo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:kv+sHweE5NqPt3gmLj67NIJ8C5zXIE6G88kE8JSsNXkql43ZEJkkyP0ga/wA1fpJQvxpqXf5cyyab4upXI1kSkyGb9PsiDAtF2vm5FtoDiU4MYVEoLg/fymTM/Yrih6oyxwwrQ0YlnPpCqGUgowL57mjWd1C2m7wti0MDVUPFfkz7l4yWbh/PA/dbdhCajKb4U6MapdaDmy9eT/tFfz24R2GF32PbGEf8gh5kbc6rHhwet4UQyfChMZDSvpzCJVv X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:23:53.2826 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a15b8aef-913e-4dc7-4d9a-08d5dcfa6582 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Thu, 28 Jun 2018 13:23:55 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Thu, 28 Jun 2018 13:23:55 +0000 (UTC) for IP:'104.47.32.81' DOMAIN:'mail-sn1nam01on0081.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.81 mail-sn1nam01on0081.outbound.protection.outlook.com 104.47.32.81 mail-sn1nam01on0081.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.84 on 10.5.110.47 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 1/6] util: Add helper function to clean extra spaces X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 28 Jun 2018 13:50:25 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch adds string manupulation helper function which takes string as input and returns string with all but one space removed between letters, numbers or words. Signed-off-by: Jai Singh Rana --- src/libvirt_private.syms | 1 + src/util/virstring.c | 36 ++++++++++++++++++++++++++++++++++++ src/util/virstring.h | 3 +++ 3 files changed, 40 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5499a368c0..272e7426dd 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2891,6 +2891,7 @@ virSkipSpacesBackwards; virStrcpy; virStrdup; virStringBufferIsPrintable; +virStringCleanExtraSpaces; virStringEncodeBase64; virStringFilterChars; virStringHasChars; diff --git a/src/util/virstring.c b/src/util/virstring.c index 15f367af7c..1f45b2b553 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -139,6 +139,42 @@ virStringSplit(const char *string, =20 =20 /** + * virCleanExtraSpacesInString: + * @src: original null terminated string + * + * Returns string with all spaces but one removed between words in @src + * string. Caller is responsible for freeing the returned string. + * Returns NULL if new string could not be allocated. + * + */ +char * +virStringCleanExtraSpaces(char *src) +{ + char *dst; + size_t dstlen; + int src_at =3D 0; + int dst_at; + + dstlen =3D strlen(src); + if (VIR_ALLOC_N(dst, dstlen) < 0) + return NULL; + + while (src[src_at] =3D=3D ' ') + src_at++; + + for (dst_at =3D 0; src[src_at] !=3D '\0'; src_at++) { + if (src[src_at + 1] =3D=3D ' ' && src[src_at] =3D=3D ' ') + continue; + dst[dst_at] =3D src[src_at]; + dst_at++; + } + dst[dst_at] =3D '\0'; + + return dst; +} + + +/** * virStringListJoin: * @strings: a NULL-terminated array of strings to join * @delim: a string to insert between each of the strings diff --git a/src/util/virstring.h b/src/util/virstring.h index 607ae66e99..0778bc45c8 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -37,6 +37,9 @@ char **virStringSplit(const char *string, size_t max_tokens) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 +char *virStringCleanExtraSpaces(char *src) + ATTRIBUTE_NONNULL(1); + char *virStringListJoin(const char **strings, const char *delim) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); --=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1530193824667211.6406898527373; Thu, 28 Jun 2018 06:50:24 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E7F793078AAD; Thu, 28 Jun 2018 13:50:22 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8ED6E11A2BB; Thu, 28 Jun 2018 13:50:22 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6DC2118037ED; Thu, 28 Jun 2018 13:50:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDO4eD021030 for ; Thu, 28 Jun 2018 09:24:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7B11219482; Thu, 28 Jun 2018 13:24:04 +0000 (UTC) Received: from mx1.redhat.com (ext-mx11.extmail.prod.ext.phx2.redhat.com [10.5.110.40]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6A6382910B for ; Thu, 28 Jun 2018 13:24:01 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0041.outbound.protection.outlook.com [104.47.32.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5855A30014B1 for ; Thu, 28 Jun 2018 13:24:00 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:23:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gyogXzzUnWUBNw4gHYK9irxWOwzXHZbLMnN1EYOxk08=; b=AEs4c1POo4eQSZliwGm41sXIvsQ5ULsEzauaeU4pxGfhdhjF52H3kfovR90SKHwfQa6bbof+VQYZqYMFP+QJhvOhggVTjRNSLLCnx0ekRofDNocC1jEgSietujSpEiYMQMuSkERWdF1Drr1ifbzhpRCUNG6w52YoXMTwlsD9qhs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:33 +0530 Message-Id: <20180628132237.11811-3-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 902bbb6f-6d01-4a6f-a52b-08d5dcfa6855 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:BywykZu27o8+PD3iF2WrAXgcXimSb2mspLoMT51bFnUR9rHEROIYBV9wBLNRxG631q4la+kNLqkdcgnCckcVTQe28EtrMtj+hA36zIkKDUnHcwIKYg7nC91bISA+R1OG70utpqnyvMxGOrXG6nC2cQAak+oz0jUbGoQNZ8J4+h+lTJaAcOTYkWwUs0z+A8/DrOTxbVmWoqP/XwxiOZpYsEsMcBASW64xYvCeXD3utDdv/cxbBv90POAPcMQ5BZe1; 25:WFthMI4osNBZgNcz+cPBEm3BOTaQucRNoen2Q80vEX7scHO1aAVDXElxwSi9SbDXIc8LfX+RfAzmlRkiLlmyMPvE4kO/q3ILF+KK7ULEIR8BnUoeg35S/1sP+9dNcJcyeH8TQTtn5wG9MLoyArVHBqSF740+/nEjhFJgMjc2GF457tm/C98wdZH1Fjd63Li8Xy0HmQlkmQOy5wshMcuPipIaP9spcXuo7aeXn9gqEaIexb1OX6rIOB9fkgEdGeuOeZqiTvzpcgk8pp6HxmXVnQUFOyfUSJoyHk/Ur0Qhtp4Vg8MdPNAATJIe+xRbxBTudUnYzqorS0WlRWBx++H+rg==; 31:uLic1UE17RVf5zCpek2TJf4o+yBeGCwiEUVij5BjWZaYEvmdLTOMTBHPwZvpPBStQqrzTcsi/PU6u2W9OXkAJO0GIp2773EJKT8GPdBFVnUAGZcV4zHhXx8wcZ/NgrZODAc561tLWj0OTiBoAGk8f9stvG517tJPgwxve/0aKOmMo7yt/i516FM7atu2rkEI3saP5c5t4L2bjJUY3IeqvXbrvkStknrJEbTEPi6X01Q= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:7N9s7OXdXwK1PNXO/D+Yt40uA27x9pWTWo8Ze4WCzEjDyhPURoVrH+YXpFCKPWxAhqKdmOFU9ep8KeByuwtrDhrhz5HkFksPTrr96zWlxacdnGZ3+0zGMU7Q+Usaia92LaVfubGb11T22D45LvO3/+M0TKwy0PZQATJwqSeKknyu8SQ6j/Es7spVt7yw9UprqoD2MKLaGHPqCxaDfE2h2g9dh6CzZKgLLDt6Pan8WtpTklo6oegSC/gZwJ9yUdc4L6FGZlPX1JP3OnzNbhc9zAKQhQabuwO/fh0Oo/O4pvTRbo5JuyZimfR6saw94SDQVz7j7R21gzJ2cYun0Er4PgAohjhh6jpqyDP4PfRkRUQyA9XQLSdjPWoqIynzsielcdevoHqTzdj1FPL55sqBmv15o76OFARWHItA/PD4stprWyFM8qY3pm3mYZWVEQswxSVP4Lec65CRX5g7sWTOsEp+kkesXluOZ8teNKK+PG+mmHPCoZ9nD3cu4XsSIKp/; 4:4zlRqmCZu5rIgs2gBC5eBzDFZ6FCjmDvNh0hVO5bYnxDdE9RZtlVPt8X2e/7qCS5RH2gJ3KjvIC7Y8xExHCTNK6BMujX0+n+w+s3evOOPU+qjWxwnPI4Nyo77kcoHXkL5t1Bzr8faAH/b73T4CY863McsrE3T5if48HXAR2RcqqJp7yZHwlnPD3X8zIWGDcCHd6McXCH3BifnxlpDm0omPtDIMaw4UYhb3GSvn4sJU89z1YmLv7clBdVHrmFjVDAID2ALZEHw2M36mYwwGCuyg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(575784001)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(476003)(956004)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(53416004)(50466002)(47776003)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:yIA8VmBP3fl6kGmt0uffQxdph4zIc4SrrxSmsBx?= =?us-ascii?Q?TGQVi1Nz1qiLcjfOA/IacBPSKs8KWuv+3XYjbcHI0P0EDWItQsGxIvcz7I+9?= =?us-ascii?Q?Z/QbEpOeLofvySXUrX/5xTHFQEeIZmDZxfieqQ6uIBAv8taywss6UzCSTHWR?= =?us-ascii?Q?ntyDYKKIB+2eN1SLf6JNGYdr5ghEYfPYgrPQQ7KAi//moTvHAtAiR55zkh5c?= =?us-ascii?Q?tlRsocvn1VCadRiZqi20xeYZnot6rsx2ablMi+3RSjpx0tcJFPCsLMSWfOKD?= =?us-ascii?Q?ZH6P+Hs1ER1qzRm93hJnSppI98LLGA+wjPkEBvwI9rb9VBuQjjNPgT4yNOpH?= =?us-ascii?Q?cZ0SJ/qm/xtVxfqx52QDNyF58AdKWnHuA3aZ/zq5aKVkllnvT0Mf9bM9x4rt?= =?us-ascii?Q?BwVJWxGHa/73x9NtKhdOqnSWVE5UQZDoqtOqdXhtbFnYfw1Iqiscx5uq1ws7?= =?us-ascii?Q?Y6BokjnA19TfjrdrtMsoPmq/IWXeNuUuXi6rjQ+Yp0yYMONMBV+COuZC1nPY?= =?us-ascii?Q?Mign5x7gPqjGUpyOewrtEby298wQ48188RpxvHBOT/Kox+0g8kEXfcy0KeHw?= =?us-ascii?Q?5fkqquf4mnvsYghJhIu6WCddFjGG6EzEhPENcgSZXivZwi4nrCMoEd2t4zjv?= =?us-ascii?Q?R8BcuPnn/IhSqqKShbyqWYK9z3p9Gekzh2SK+aYKU1PcPhwYc9u2AfsBeHfn?= =?us-ascii?Q?UflwoIqpL8TtFhumciJ/nIXCSymOzBbfA0qRYUgaIsAv0mm4yjFhgkLpe3oN?= =?us-ascii?Q?Lkh2CplTDWXWxLwXH+3WyBCPMPGdSZwSZ9/Dor2/Hc+bAqcTxMGpH2vutTj9?= =?us-ascii?Q?zuaH/V8JGlHyu2d0oUE+UEt81SBIkvgC3+IxgThKISVS2UTXbEWeHfIBtMDW?= =?us-ascii?Q?qCx2yKLCvhusCzU+CFktpYniMI/z39WM2P9AidyQ8XYNs5lDbZqEa9p4O0B3?= =?us-ascii?Q?/flqDwktd9zY/stIO/WHTi1xpRrk1/u+v4s7gb/gRfwanLxTpptrD54LUKzW?= =?us-ascii?Q?T6g7hpXatddgX8H1s76RuiR8IPWOKd5Zpv9lBpU98OpuhbtgB0WmTMW6C96W?= =?us-ascii?Q?u2yJLmXmXk8nXjmDV5PJqv74fhPnoq0ePm/CK43yScEpI3LhcLZyBX5a/UT0?= =?us-ascii?Q?bBC6/56zBdF1ZEWxE1HaYua1yJ0rt0+erGjk71TGH9MHD+DuVSXr/KplJasn?= =?us-ascii?Q?lAPtm2pPNkNFSxGC/g0B8/LvKPyv2jhCJkDus2DELdEtNagTmKVJv9+cD1lv?= =?us-ascii?Q?yOLjTolEv18YjbamAd+vJLPnclP0W+Oul6WMKb+iUAqlGhRnzWGp7HjyeYsH?= =?us-ascii?Q?gTh0+gQ33a1Qphq4w3zifbxQF8BYAd3DPfX/vfc+NV6JB2YL0tw5YPqjWies?= =?us-ascii?Q?ZADPJ2y8YSiSu8YaljDT1nVXP1Qi1c2Etc4NdFZl7uhlXX/go?= X-Microsoft-Antispam-Message-Info: A1yB0qSJWEe6X/ZEZVnLuRSCru6kJIQ5tcBzyzr7fO68zBzGdBcjjAvZ55dVN8JX9rXeyNbVpkPguBjybA+ya9dfV+4rZqAwO98OLNigArClrCoatIzI5PjPKJX0M+wfMLO4BZkX9JEEfmMICqpgqmmZ9IpsTAnjRTQ6lWhp5EOb9cqZKlc1YwLs8cVMfWMWsTTywkdmsOanObtuGhc4L/lQ9q3cgOZQsSHMl9Q25yxPXEBQ2tqu7XexZjNP15tIsK/h7C2CCLut7v9qtab+bAwwMrvE9fr/Oatpn1ha/yNAq3HyO42zTsnAonQURJnZoOFPq9vEWjVc2j2YnBgYejWgI40fsQh6P4xXlchapnQ= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:nR1Bs8MSachLJB4ASf7GVfxue8sYgQ+k4cxx/baLQvCwyIpSFAU/B9vo35sGJVEMffuXHNkXNmquLZmZm5wjk1kShtN8hazeNWLoKbxZFjflf8IzOif2ZAQvcTGxN05d3aPcY3aizBVCHW+UkC21+BgpP6luHiafoFChuOPQ2StDrbB7BuDvrfY4D6zo6XZfQN8JxkVcEXMVrqlHYf+y7IJ1dMV1ZWEB0xDGnLEmolncIFgKoggYbPK70vG5qHe3jLn3iRbQnTDOiA5KeyDeNoOqCnrrIpBGApslAM0g1KTfYwhLr7T6vfKgotP4aJsiWAPbJLPoRKhje1vVbw6+wLYgbAusM9yYDhYarNIKujOPjKcYt0pQcqOq6aUCPckiWH1k2iC8KGz2ooxvWfRH7ICSHs9zPDsvl5oFU2gsCs8v00UEWOR8PyNURtcsQukCDgASoW0LobM+TENPZIrYSg==; 5:e3Vv8bM2hNcAar3xafL3jgCbNQfmaNHlpBdHQcAD9g41t8bJxO2NIrohEzGIcifHE41tQrGwEbWnwpSZhQbFNd7OWFJ+0xNcnmDrQft2hRWpIIsPIq3mPc5LhEaDMpTPL9kXecetrVWxbeIr5oxZHVnyiSJi+ZEFvT32OiLO8SQ=; 24:Hrytbq+t1GlcLt/qcdFsmEdmBuoHyY/FFulRLQhB++HxYco6mHqZUCKhEvN29VZs2kq7n7Nc8BQplho87y5oxsRZb0+5vUlmwSVxrJlSYkI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:7xWU8XuJeP6rM3Tdq0OWHQLKl6pkM74nz4fYCU9m3OMRuGwDiec0YbGhHqbDh7YOIlr4/Yn2FsoZ6SzIF+O1P+3WPp/MR6QCjAwiXBDiXHsnf9orYqtGIvM/LjwTgp5VbliLwenNahyFjlcBJNRxvkp4x6+EXa5Jd/fnNBTNAv72hIoCyUkAEhj037jdIr0s5gjoa7/ode1EOhJIiC/fjl//m0mWFVshGELQJCAJmS4QCH9Q4YZB1sJ9ptSXCyq1 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:23:57.8980 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 902bbb6f-6d01-4a6f-a52b-08d5dcfa6855 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Thu, 28 Jun 2018 13:24:00 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Thu, 28 Jun 2018 13:24:00 +0000 (UTC) for IP:'104.47.32.41' DOMAIN:'mail-sn1nam01on0041.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.41 mail-sn1nam01on0041.outbound.protection.outlook.com 104.47.32.41 mail-sn1nam01on0041.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.84 on 10.5.110.40 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 2/6] util: Add generic API to fetch network stats from procfs X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 28 Jun 2018 13:50:23 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch introduces virNetDevGetProcNetdevStats API for linux which returns stats for the given interface from /proc/net/dev by properly mapping stats entries in probed column to column header. Tap and hostdev network devices will now be using this API. Currently function virNetDevTapInterfaceStats which earlier fetched stats for tap devies is modified to use above API accordingly. Signed-off-by: Jai Singh Rana --- src/libvirt_private.syms | 1 + src/util/virnetdev.c | 202 +++++++++++++++++++++++++++++++++++++++++++= +++- src/util/virnetdev.h | 5 ++ src/util/virnetdevtap.c | 71 +---------------- 4 files changed, 208 insertions(+), 71 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 272e7426dd..0ba8cd2a14 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2289,6 +2289,7 @@ virNetDevGetName; virNetDevGetOnline; virNetDevGetPhysicalFunction; virNetDevGetPhysPortID; +virNetDevGetProcNetdevStats; virNetDevGetPromiscuous; virNetDevGetRcvAllMulti; virNetDevGetRcvMulti; diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index b250af9e2c..69875c2e04 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -1541,6 +1541,198 @@ virNetDevGetVirtualFunctionInfo(const char *vfname,= char **pfname, return ret; } =20 + +/** + * virNetDevGetProcNetdevStats: + * @ifname: interface + * @stats: where to store statistics + * @swapped: whether to swap RX/TX fields + * + * Fetch RX/TX statistics for given named interface (@ifname) and + * store them at @stats. The returned statistics are always from + * domain POV. Because in some cases this means swapping RX/TX in + * the stats and in others this means no swapping (consider TAP + * vs macvtap) caller might choose if the returned stats should + * be @swapped or not. + * + * Returns 0 on success, -1 otherwise (with error reported). + */ + +int +virNetDevGetProcNetdevStats(const char *ifname, + virDomainInterfaceStatsPtr stats, + bool swapped) +{ + int ifname_len; + FILE *fp; + char line[256]; + size_t i; + char *hdr1 =3D NULL; + char *hdr2 =3D NULL; + char *stats_row =3D NULL; + char **components_hdr1 =3D NULL; + char **components_hdr2 =3D NULL; + char **components_stats =3D NULL; + size_t ncomponents_hdr1 =3D 0; + size_t ncomponents_hdr2 =3D 0; + size_t ncomponents_stats =3D 0; + char **rx_hdr =3D NULL; + char **tx_hdr =3D NULL; + size_t rx_nentries, tx_nentries; + int rx_bytes_index =3D 0; + int rx_packets_index =3D 0; + int rx_drop_index =3D 0; + int rx_errs_index =3D 0; + int tx_bytes_index =3D 0; + int tx_packets_index =3D 0; + int tx_drop_index =3D 0; + int tx_errs_index =3D 0; + int tx_offset =3D 0; + int rx_offset =3D 0; + int ret =3D -1; + + fp =3D fopen("/proc/net/dev", "r"); + if (!fp) { + virReportSystemError(errno, "%s", + _("Could not open /proc/net/dev")); + return ret; + } + + ifname_len =3D strlen(ifname); + + /* First two lines contains headers. + * Process headers to match with correspondings stats. + */ + if (!fgets(line, sizeof(line), fp)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Interface %s not found in /proc/net/dev"), ifnam= e); + VIR_FORCE_FCLOSE(fp); + return ret; + } + + if (!(hdr1 =3D virStringCleanExtraSpaces(line))) + goto cleanup; + + if (!(components_hdr1 =3D virStringSplitCount(hdr1, "|", 0, + &ncomponents_hdr1))) + goto cleanup; + + if (!fgets(line, sizeof(line), fp)) + goto cleanup; + + if (!(hdr2 =3D virStringCleanExtraSpaces(line))) + goto cleanup; + + if (!(components_hdr2 =3D virStringSplitCount(hdr2, "|", 0, + &ncomponents_hdr2))) + goto cleanup; + + if (!(rx_hdr =3D virStringSplitCount(components_hdr2[1], " ", 0, + &rx_nentries))) + goto cleanup; + + if (!(tx_hdr =3D virStringSplitCount(components_hdr2[2], " ", 0, + &tx_nentries))) + goto cleanup; + + if (STREQ(components_hdr1[1], "Receive")) { + rx_offset =3D 0; + tx_offset =3D rx_nentries; + } else { + rx_offset =3D tx_nentries; + tx_offset =3D 0; + } + + for (i =3D 0; i < rx_nentries; i++) { + if (STREQ(rx_hdr[i], "bytes")) + rx_bytes_index =3D i + rx_offset; + else if (STREQ(rx_hdr[i], "packets")) + rx_packets_index =3D i + rx_offset; + else if (STREQ(rx_hdr[i], "errs")) + rx_errs_index =3D i + rx_offset; + else if (STREQ(rx_hdr[i], "drop")) + rx_drop_index =3D i + rx_offset; + } + + for (i =3D 0; i < tx_nentries; i++) { + if (STREQ(tx_hdr[i], "bytes")) + tx_bytes_index =3D i + tx_offset; + else if (STREQ(tx_hdr[i], "packets")) + tx_packets_index =3D i + tx_offset; + else if (STREQ(tx_hdr[i], "errs")) + tx_errs_index =3D i + tx_offset; + else if (STREQ(tx_hdr[i], "drop")) + tx_drop_index =3D i + tx_offset; + } + + while (fgets(line, sizeof(line), fp)) { + long long *stats_entries; + + /* The stats line looks like: + * "eth0:..." + */ + + VIR_FREE(stats_row); + if (!(stats_row =3D virStringCleanExtraSpaces(line))) + goto cleanup; + + virStringListFree(components_stats); + if (!(components_stats =3D virStringSplitCount(stats_row, " ", 0, + &ncomponents_stats))) + goto cleanup; + + if (STREQLEN(components_stats[0], ifname, ifname_len)) { + if (VIR_ALLOC_N(stats_entries, rx_nentries + tx_nentries) < 0) + goto cleanup; + + for (i =3D 1; i < (rx_nentries + tx_nentries); i++) { + if (virStrToLong_ll(components_stats[i], NULL, 10, + (stats_entries + i -1)) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Cannot parse %s stat position at '%= zu'"), + components_stats[i], i); + goto cleanup; + } + } + + if (swapped) { + stats->rx_bytes =3D stats_entries[tx_bytes_index]; + stats->rx_packets =3D stats_entries[tx_packets_index]; + stats->rx_errs =3D stats_entries[tx_errs_index]; + stats->rx_drop =3D stats_entries[tx_drop_index]; + stats->tx_bytes =3D stats_entries[rx_bytes_index]; + stats->tx_packets =3D stats_entries[rx_packets_index]; + stats->tx_errs =3D stats_entries[rx_errs_index]; + stats->tx_drop =3D stats_entries[rx_drop_index]; + } else { + stats->rx_bytes =3D stats_entries[rx_bytes_index]; + stats->rx_packets =3D stats_entries[rx_packets_index]; + stats->rx_errs =3D stats_entries[rx_errs_index]; + stats->rx_drop =3D stats_entries[rx_drop_index]; + stats->tx_bytes =3D stats_entries[tx_bytes_index]; + stats->tx_packets =3D stats_entries[tx_packets_index]; + stats->tx_errs =3D stats_entries[tx_errs_index]; + stats->tx_drop =3D stats_entries[tx_drop_index]; + } + VIR_FREE(stats_entries); + ret =3D 0; + break; + } + } + cleanup: + VIR_FORCE_FCLOSE(fp); + VIR_FREE(hdr1); + VIR_FREE(hdr2); + VIR_FREE(stats_row); + virStringListFree(components_hdr1); + virStringListFree(components_hdr2); + virStringListFree(components_stats); + virStringListFree(rx_hdr); + virStringListFree(tx_hdr); + + return ret; +} + #else /* !__linux__ */ int virNetDevGetPhysPortID(const char *ifname ATTRIBUTE_UNUSED, @@ -1622,7 +1814,15 @@ virNetDevSysfsFile(char **pf_sysfs_device_link ATTRI= BUTE_UNUSED, return -1; } =20 - +int +virNetDevGetProcNetdevStats(const char *ifname ATTRIBUTE_UNUSED, + virDomainInterfaceStatsPtr stats ATTRIBUTE_UNUS= ED, + bool swapped ATTRIBUTE_UNUSED) +{ + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("interface stats not implemented on this platform")); + return -1; +} #endif /* !__linux__ */ #if defined(__linux__) && defined(HAVE_LIBNL) && defined(IFLA_VF_MAX) =20 diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index 71eaf45e30..4fb22562bb 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -266,6 +266,11 @@ int virNetDevGetVirtualFunctionInfo(const char *vfname= , char **pfname, int *vf) ATTRIBUTE_NONNULL(1); =20 +int virNetDevGetProcNetdevStats(const char *ifname, + virDomainInterfaceStatsPtr stats, + bool swapped) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; + int virNetDevGetFeatures(const char *ifname, virBitmapPtr *out) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c index bd0710ad2e..f0bce5ed34 100644 --- a/src/util/virnetdevtap.c +++ b/src/util/virnetdevtap.c @@ -687,76 +687,7 @@ virNetDevTapInterfaceStats(const char *ifname, virDomainInterfaceStatsPtr stats, bool swapped) { - int ifname_len; - FILE *fp; - char line[256], *colon; - - fp =3D fopen("/proc/net/dev", "r"); - if (!fp) { - virReportSystemError(errno, "%s", - _("Could not open /proc/net/dev")); - return -1; - } - - ifname_len =3D strlen(ifname); - - while (fgets(line, sizeof(line), fp)) { - long long dummy; - long long rx_bytes; - long long rx_packets; - long long rx_errs; - long long rx_drop; - long long tx_bytes; - long long tx_packets; - long long tx_errs; - long long tx_drop; - - /* The line looks like: - * " eth0:..." - * Split it at the colon. - */ - colon =3D strchr(line, ':'); - if (!colon) continue; - *colon =3D '\0'; - if (colon-ifname_len >=3D line && - STREQ(colon-ifname_len, ifname)) { - if (sscanf(colon+1, - "%lld %lld %lld %lld %lld %lld %lld %lld %lld %lld = %lld %lld %lld %lld %lld %lld", - &rx_bytes, &rx_packets, &rx_errs, &rx_drop, - &dummy, &dummy, &dummy, &dummy, - &tx_bytes, &tx_packets, &tx_errs, &tx_drop, - &dummy, &dummy, &dummy, &dummy) !=3D 16) - continue; - - if (swapped) { - stats->rx_bytes =3D tx_bytes; - stats->rx_packets =3D tx_packets; - stats->rx_errs =3D tx_errs; - stats->rx_drop =3D tx_drop; - stats->tx_bytes =3D rx_bytes; - stats->tx_packets =3D rx_packets; - stats->tx_errs =3D rx_errs; - stats->tx_drop =3D rx_drop; - } else { - stats->rx_bytes =3D rx_bytes; - stats->rx_packets =3D rx_packets; - stats->rx_errs =3D rx_errs; - stats->rx_drop =3D rx_drop; - stats->tx_bytes =3D tx_bytes; - stats->tx_packets =3D tx_packets; - stats->tx_errs =3D tx_errs; - stats->tx_drop =3D tx_drop; - } - - VIR_FORCE_FCLOSE(fp); - return 0; - } - } - VIR_FORCE_FCLOSE(fp); - - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("/proc/net/dev: Interface not found")); - return -1; + return virNetDevGetProcNetdevStats(ifname, stats, swapped); } #elif defined(HAVE_GETIFADDRS) && defined(AF_LINK) int --=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1530193832955369.3502095372495; Thu, 28 Jun 2018 06:50:32 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 28E023082153; Thu, 28 Jun 2018 13:50:31 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C55098A8AE; Thu, 28 Jun 2018 13:50:30 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 667CB18037F0; Thu, 28 Jun 2018 13:50:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDOCdK021039 for ; Thu, 28 Jun 2018 09:24:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id 62F2D308BDB8; Thu, 28 Jun 2018 13:24:12 +0000 (UTC) Received: from mx1.redhat.com (ext-mx06.extmail.prod.ext.phx2.redhat.com [10.5.110.30]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 55DB4308BDB9 for ; Thu, 28 Jun 2018 13:24:06 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0056.outbound.protection.outlook.com [104.47.32.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5B34C356DF for ; Thu, 28 Jun 2018 13:24:04 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:24:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fYiWJRln54UL0au3i8mFnCzOM1ciQtIUck6kH5FdEGo=; b=OVwKW9pL1bhRCV3RyA4KdmE/3aIDTJAOz4kxovBzBZ0rEN4OHq10BjgqQZzE7bsxJPjAJ0D1baBRMyYr7ZTCGSs+oGV2XTnhmfKvtmrT4c2HrWscdtukltIhUkrLf5m/rggtK48g/PRG41I5+3w/AbRy9YuKBCdcZ0of6FMJLsM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:34 +0530 Message-Id: <20180628132237.11811-4-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 31815f10-3284-4dc9-21e3-08d5dcfa6aaf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:TQFdTV5hPImpWMcFQKoXZLGCcD/rqSvgFI8iHyOlOe1bq/Qsr11DCfBgVDw0ygzdDBoQ3Kh8OfNO+0k+zrJhavmEKSJ4o8EI3RFkhBcmGLJOr44TCs4MmiOFRF7zPpG2+j0mtGYztuzvJW8bJ25LjPd/1VQR9kIZ5ylxKnMxwxSRPpqbp+k2EwODdN9TOdNiQd3YgLENpqBSGUSgmGMt1aeoaAMY0P7wmsKmR1jFMki/zYaEEM/0kRt7YopDpfXv; 25:d/8D04iYAnKpq4HASX276ApMBwNupl1h/5Lskqr1rfBtSyhL6q6DFBs8c/3f2voYs7OPcHATeWoMnefuiQDLGsVpnuBErjvsVRnoZskn+BdcXD6gkv22uAd4u2I8pEM0aPYCY3ri+OC56/LSC0tBw0FqJ4U8xpZdVd6Lv1Vl4P16ou4o0f9p6g5zte7xNwLU1L1PSJnX+dGJP2CmwRUL/Qyz1mws7V1bBPXYyj2E8XvIsRUuzxPVMYy5JkipvB05AyaOi0SaPQv3ytBzMscRtYv058Ra8G5Ef/S+E4zyUWsPtGUq31Q1T5bu/ASAGMVNba1fxTcllzVx+BsAJO+huA==; 31:Zt4BH3/NMLmOcMrQewDRHktfIcpo8nbgSWHQ2ADXqHxNFoTzvGDb6K54J9Ej+0pBblxAKH0soJ8IE1LQj2hVp43qtKaq/KkmOLqG65x6PjZzNuL1cce2rJ8IJirWp9HnuA/J/1dRc6IGi4lR2cDus99YYaleaNXFAFjqxFqWJuOrr0Sltc5iaxZUxunr9hUfELWgua1jFNOMLrusY6X6omIIywbWwlAw1j9sqjDPZ4s= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:1/TeZZWqy859LODFdpW2J9tEzzFNCNsJfhaoUgu7wM7iaf6zrp68rVFEbmbkfGR9cWn/UjxG1zy6mJDbfEtasqq1WL8gV0yZQfJuC8EqKEKMyw0U65iv30U6ehOVKAFMhoj7H0Xn8MCaPrpgXS8yOAx1ZJRIw4TK4eBn3GP6yL20b4j2N4Dk1NjyDavvku4qOjfO8SomhYUJRjBYTN0eopf9oY4ZVI75CR4K6G9CNb0+cesMxdeIdbusIE+1fdqRK2ZCrLxtEfz3hHXefLE/NAxZVLGWFJhVY6BdGIUwGJYM+/um08HFK/8/e8m/YsoQZ0eWPp8QBWn7TAMSq8p7dpDpIAhAQ6o1yeHvtgEhBfWfTT+DykK7T1f7QRWXdB8QsKTCgQ0/Pg/v4f33hutSp8UxlJqTc8CxfIfge57seDb+ZrZ+5Y0fubXWKtqD9Gx6PmXC1s4vbF/ecJQeCx+HdNMxqL1XgZXR0ZsawKK49DGIP6UdCFu6/xhSx+HOP12v; 4:cVEXc5SFzXE0yPgrpI0RNDhDH9ir/wjjOmsb372wEF4ECYFtuozBcaAUsP/uHJZtQ9PeCIOOBTYhttBjpSZNdNG0ocDV4SVMcjDN6NKvQz0bYj1jNeWHI554CXkpaRHggawDB1+sh0l4V+3OCbzJaIcaDxyDCtifpC3tiySPV9Gfxmchiad/w6EJYPyVc4H21wESvfenifdHI3iSpLUv9T0x79SoxPmCx3stnrVDanVohezcPi04+tMxUPOUjhQMUiaJ2RapYnug5JovLxfg0TzlBvYtlIUaTzRYZZrd8F995in+gAeI6Ua/w2msDoETqYHwVGebqrU2RPBa4pF5G3KGBHAZ6GkxVMHpJO3wLxA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(10710500007)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(2420400007)(6306002)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(14444005)(476003)(956004)(7110500001)(15650500001)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(53416004)(50466002)(47776003)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:3mnnxc4Z25DV2ZP6oPRbVzw9NHtUnGIVEgcruhu?= =?us-ascii?Q?gxHkcsgQzfVOSrmcZQMMKWPhHyt4CFIRs714ALfBLWR+f2mU6EZSJhoTJUC4?= =?us-ascii?Q?yzX8fOKZABOZ7aaCkOGp+ktF3A52Lvw8OHNePomCf0Fm23GiMfqAELU1eUfX?= =?us-ascii?Q?u8Dzoqp3aBJNw6tlFdH6UR2IZH53ZYWrkJLOa5LS7Zf4qghVzkT4ka6KsDFQ?= =?us-ascii?Q?HtwUjVSPrmZo3mfakpO8IaTXYANCJmMoTdcvtn1UvKATdfkTnrj5YKIvk5uJ?= =?us-ascii?Q?5gxOnpwJtlYBtEXT3PGJJvvRy1a3vNY16C5GMzz6XVnl17tZ+XJ2cUMNZS1U?= =?us-ascii?Q?F3X9vBH7w3qE9hXmZ4RWKvCYoBJ2jmZSy5PX0ExYveCb451ivclFhxBm0vQj?= =?us-ascii?Q?HKjboiF/bfA0yZ96v+9Z2XZfLcSbbyYwl5i4V/vtazjAg0l9L7QvH48n/H1I?= =?us-ascii?Q?UKSObiCedZPh1LURD+SEA9xbQRuluZeY7/lt1K6X2tEwUCZdHcELLI9zVa3t?= =?us-ascii?Q?7NR9GP9Ycwgb710RwNzATtPgJWsaFFQH30E0X5Aquue1wiMDL5JaHflbfF19?= =?us-ascii?Q?6DbqSIwFXgq060gJEmKCNT5UU8897eMoe3h2p8eaWJbRi1ZUYd8lsoRskWe5?= =?us-ascii?Q?621VYi1gx0Lsw59LQ8k616ZwoqIpVEtX25KxipoxBvYMkIpqOtbx6iET/fQT?= =?us-ascii?Q?1gg3wR1+N4tEWPYZpoA4hpONlawq8OfE1TrQ7k0ROTC9gAgQnqX+9lABx4A0?= =?us-ascii?Q?x/Qkdq+a7glnbR19kxPiS1OvTw83WevfDLegGF010rWI6kL5rUQolNfeJ/Fe?= =?us-ascii?Q?PqFoEuIKY6pKFmGRRcImu8TS/amLMlKF4DKL+4rQncK0KxfsJ+Q1jKhmBIxe?= =?us-ascii?Q?KgsOKjxXupVtbBnXFjueMssOwjSDyiKUp5GYgWojrk3SicP1/pQIbjETSFck?= =?us-ascii?Q?Y6GX8X67zAPRrMtOw2hqzHZa+Y6SdQGUFb7jQ803JChuxQdEbgAUz4kn4GOA?= =?us-ascii?Q?xOc8DdDKGU8Tu3bm+8jTcOQl5h9VrpkpB2KtszTsSs/J2BMgNYgFBJK5YMFm?= =?us-ascii?Q?6yk6WDdf25zIJZvS/+9/rQvXTgzkNQPpMLt9G/Yq2o5ySTDqKaTzGoRgQHBT?= =?us-ascii?Q?wyjcV1hqg7SISt1CAzlwImaawNu9jEFy968Ej/9yXOIjdiy2oAOZ9lR+5A1D?= =?us-ascii?Q?TNvO7hmE/S+IzTqluQEtyCSbIeupq6g3GQzP6UxNAA3dfvViM8kZxkW74WOW?= =?us-ascii?Q?LFy1WqicqxIIhm4omBMzJbd3E3Gga9PMv6+OXe0oKe9f0BVNNyOhaKx9Nvz3?= =?us-ascii?Q?92J2SFQMZmhQwiGuv4uT6ZQckyAuIe4fj0IE5Q03C+tnxxIm+aoyjJSmnaxI?= =?us-ascii?Q?yduluDMXhyHuflUuX7s+v4Drax9iqfk4zdbDo3Eugr53Dlj3NUyAR3zAfCgj?= =?us-ascii?Q?PLF76UqEyTNytqJ5wtkiGtWN4aUrboQ/aA9NbybaY5ULq68Ps7RyxAmapYTc?= =?us-ascii?Q?1fkh4a6UetDifygPjs01ekz/TB+7roNHJSXboN664jj9QA1mJpR65nORE?= X-Microsoft-Antispam-Message-Info: SfHUrq496l4u9ZE99p2k2uRsuEiZ8IPu+35iFoXORWKyEIzSKjLcCrtJlw475SR/1pIvIfSxHJTUqLrepKNs8WFENbjLetnLkC+4TY/OLfkIvahGRv8H5IOU+Nomi52/jvRc2mdSVQFkaNM5v/Q01o2haCJrBDfqy0sQoi8//t2SCzHjGfIR0i+eoHFBEZDSV7Fq0En6bEa+7ngzBjVLxIsv9ObtlMwBJ9IF3TDurP0Kfr2xLYawPmzPJsX3qSkHaJGtEkpD0BLDWtUikJlnHgmzfj4vMSkAJcawctLEIi5Pwqd+NaDTxs2ihUOU1moSCfkb9zxCvRFUkDl0BlhYJ2VRjmnp02hKhIELupGNqzc= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:qz+m22jMadfegmDlgMdFa/YAaVWmP8aNE3T/x/nOah5Aiq432SKZ5UrMQmbRudwIjGKvC+Wkfo8366E2SbtX3hnRqnUOy3vFuQaIiZQCLs1kPfwJnBy8pe0ykoJoB3JrNQpjoQCI68gKzLgVgKm0QV+Xg18ijO0+9kWLRkGc7RtTGMLYZeS1jUB0qMGLtGN4v2VqjO5ugSbcMmMB0DlZRcwvCj1xTcu6aT7/j6fwNbuHPqkwgm+waUnTtzcjS/SkrCopLwEf9cb+1pyZuRWHNuLK74zDGbHfl+em7PQyTdg9+v4OZ5yHni3+8Hvu+Ynq/q7gpPlZzaO9T4YAg1nqgmvHw8HXK9bk4nQXxjLVGOZX7lF1mS3UaxmtRtpX8JMZNDuC3I5SV/Fc1LPV2/6AeGJrbGrDa3mnp0p37qTiugWw6JuvfdcBZHPYlAAojINA/xgDiddZ9NcRxQ26FpFJJA==; 5:/8EewpzTADF/ClH4GmvOEFRA1LYUiDtNAyHHumpl5hpapTvqbGCSwRyEFUUxePS8NpShLqTnH8dZx3EOYz6Jsg4Gb4hnX5MHiV+ExDChcfnhIRB1EpwCLG2VN8mxKzWJQgk5XLQlAzVC9CqQ6ohRm0zUM/FIvTtX0n1QIS+Mn+g=; 24:auEntALvvDHyiTEvVgmD8QZPMo7H+6MC62bM9vcBLZaEA4GHpDgEBwCt+nhT13r/qULegqyrNeNF2JytZWMtSuzffoFHwKe0qkKyiGkQSFc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:IQQUZH4JnQ2jQDu1qDFqQOfcy3p8ubVUblsiZyiaZdGVF3S48mEe6j6XGg0kOSaKXoApo9ygqAZH0E72WrfQFucxZYQTACZmSaahab0bXSgSddrcIpRFjlFjzBDcuUgUh1fi0U2Mx52vRB16yMx2PpKhjVwKob3EpQvVa1NnX89iG10T/tyoENC32UwgIxmkAjRh7/037pS+w8rTWWeG3xgBEjOzMzu0tJ0VQW7RRwWldJhsjYVs4wwMy41PV3dO X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:24:01.9300 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31815f10-3284-4dc9-21e3-08d5dcfa6aaf X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 28 Jun 2018 13:24:04 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 28 Jun 2018 13:24:04 +0000 (UTC) for IP:'104.47.32.56' DOMAIN:'mail-sn1nam01on0056.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.56 mail-sn1nam01on0056.outbound.protection.outlook.com 104.47.32.56 mail-sn1nam01on0056.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.30 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.24 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 3/6] util: Add helper APIs to get/verify VF Representor name X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 28 Jun 2018 13:50:32 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Introduce new APIs virNetdevHostdevGetVFRIfName and virNetdevHostdevCheckVFRIfName to fetch/verify VF Representor name according to switch model for network devices in linux. Switchdev VF representor interface name on host is queried based on Bus:Device:Function information of pci SR-IOV device in Domain's hostdev def and subsequently verifying the required net sysfs directory and file entries of VF representor. Signed-off-by: Jai Singh Rana --- po/POTFILES | 1 + src/libvirt_private.syms | 7 ++ src/util/Makefile.inc.am | 2 + src/util/virhostdev.c | 2 +- src/util/virhostdev.h | 8 ++ src/util/virnetdevhostdev.c | 300 ++++++++++++++++++++++++++++++++++++++++= ++++ src/util/virnetdevhostdev.h | 34 +++++ 7 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 src/util/virnetdevhostdev.c create mode 100644 src/util/virnetdevhostdev.h diff --git a/po/POTFILES b/po/POTFILES index be2874487c..3f8731f342 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -235,6 +235,7 @@ src/util/virmdev.c src/util/virnetdev.c src/util/virnetdevbandwidth.c src/util/virnetdevbridge.c +src/util/virnetdevhostdev.c src/util/virnetdevip.c src/util/virnetdevmacvlan.c src/util/virnetdevmidonet.c diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0ba8cd2a14..5aa8f7ed64 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1968,6 +1968,7 @@ virHostdevFindUSBDevice; virHostdevIsMdevDevice; virHostdevIsSCSIDevice; virHostdevManagerGetDefault; +virHostdevNetDevice; virHostdevPCINodeDeviceDetach; virHostdevPCINodeDeviceReAttach; virHostdevPCINodeDeviceReset; @@ -2356,6 +2357,12 @@ virNetDevBridgeSetSTPDelay; virNetDevBridgeSetVlanFiltering; =20 =20 +# util/virnetdevhostdev.h +virNetdevHostdevCheckVFRIfName; +virNetdevHostdevGetVFRIfName; +virNetdevHostdevVFRIfStats; + + # util/virnetdevip.h virNetDevIPAddrAdd; virNetDevIPAddrDel; diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am index a22265606c..0846a8e025 100644 --- a/src/util/Makefile.inc.am +++ b/src/util/Makefile.inc.am @@ -108,6 +108,8 @@ UTIL_SOURCES =3D \ util/virnetdevbandwidth.h \ util/virnetdevbridge.c \ util/virnetdevbridge.h \ + util/virnetdevhostdev.c \ + util/virnetdevhostdev.h \ util/virnetdevip.c \ util/virnetdevip.h \ util/virnetdevmacvlan.c \ diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c index f4bd19df64..c6ee725860 100644 --- a/src/util/virhostdev.c +++ b/src/util/virhostdev.c @@ -303,7 +303,7 @@ virHostdevIsVirtualFunction(virDomainHostdevDefPtr host= dev) } =20 =20 -static int +int virHostdevNetDevice(virDomainHostdevDefPtr hostdev, int pfNetDevIdx, char **linkdev, diff --git a/src/util/virhostdev.h b/src/util/virhostdev.h index 8f77c00221..7412a20aa9 100644 --- a/src/util/virhostdev.h +++ b/src/util/virhostdev.h @@ -60,6 +60,14 @@ struct _virHostdevManager { }; =20 virHostdevManagerPtr virHostdevManagerGetDefault(void); + +int +virHostdevNetDevice(virDomainHostdevDefPtr hostdev, + int pfNetDevIdx, + char **linkdev, + int *vf) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4); + int virHostdevPreparePCIDevices(virHostdevManagerPtr hostdev_mgr, const char *drv_name, diff --git a/src/util/virnetdevhostdev.c b/src/util/virnetdevhostdev.c new file mode 100644 index 0000000000..2d3e46c81f --- /dev/null +++ b/src/util/virnetdevhostdev.c @@ -0,0 +1,300 @@ +/* + * virnetdevhostdev.c: utilities to get/verify Switchdev VF Representor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#include + +#include +#include +#include +#include + +#include "virhostdev.h" +#include "virnetdev.h" +#include "virnetdevhostdev.h" +#include "viralloc.h" +#include "virstring.h" +#include "virfile.h" +#include "virerror.h" +#include "virlog.h" +#include "c-ctype.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +VIR_LOG_INIT("util.netdevhostdev"); + +#ifndef IFNAMSIZ +# define IFNAMSIZ 16 +#endif + +#define IFSWITCHIDSIZ 20 + +#ifdef __linux__ +/** + * virNetdevHostdevNetSysfsPath + * + * @pf_name: netdev name of the physical function (PF) + * @vf: virtual function (VF) number for the device of interest + * @vf_ifname: name of the VF representor interface + * + * Finds the VF representor name of VF# @vf of SRIOV PF @pfname, + * and puts it in @vf_ifname. The caller must free @vf_ifname + * when it's finished with it + * + * Returns 1 on success, 0 for no switchdev support for @pfname device + */ +static int +virNetdevHostdevNetSysfsPath(char *pf_name, + int vf, + char **vf_ifname) +{ + size_t i; + char *pf_switch_id =3D NULL; + char *pf_switch_id_file =3D NULL; + char *pf_subsystem_device_file =3D NULL; + char *pf_subsystem_device_switch_id =3D NULL; + char *pf_subsystem_device_port_name_file =3D NULL; + char *pf_subsystem_dir =3D NULL; + char *vf_rep_ifname =3D NULL; + int vf_rep_num; + const char *vf_num_str; + DIR *dirp =3D NULL; + struct dirent *dp; + int ret =3D 0; + + if (virAsprintf(&pf_switch_id_file, SYSFS_NET_DIR "%s/phys_switch_id", + pf_name) < 0) + goto cleanup; + + if (!virFileExists(pf_switch_id_file)) + goto cleanup; + + /* If file exists, failure to read or if it's an empty file just means + * that driver doesn't support phys_switch_id, therefore ignoring the = error + * from virFileReadAllQuiet(). + */ + if (virFileReadAllQuiet(pf_switch_id_file, IFSWITCHIDSIZ, + &pf_switch_id) <=3D 0) + goto cleanup; + + if (virAsprintf(&pf_subsystem_dir, SYSFS_NET_DIR "%s/subsystem", + pf_name) < 0) + goto cleanup; + + if (virDirOpen(&dirp, pf_subsystem_dir) < 0) + goto cleanup; + + /* Iterate over the PFs subsystem devices to find entry with matching + * switch_id with that of PF. + */ + while (virDirRead(dirp, &dp, pf_subsystem_dir) > 0) { + if (STREQ(dp->d_name, pf_name)) + continue; + + VIR_FREE(pf_subsystem_device_file); + if (virAsprintf(&pf_subsystem_device_file, "%s/%s/phys_switch_id", + pf_subsystem_dir, dp->d_name) < 0) + goto cleanup; + + if (!virFileExists(pf_subsystem_device_file)) + goto cleanup; + + /* If file exists, failure to read or if it's an empty file just m= eans + * the driver doesn't support the entry being probed for current + * device in subsystem dir, therefore ignoring the error in the + * following calls to virFileReadAllQuiet() and continue the loop + * to find device which supports this and is a match. + */ + VIR_FREE(pf_subsystem_device_switch_id); + if (virFileReadAllQuiet(pf_subsystem_device_file, IFSWITCHIDSIZ, + &pf_subsystem_device_switch_id) > 0) { + if (STRNEQ(pf_switch_id, pf_subsystem_device_switch_id)) + continue; + } + else + continue; + + VIR_FREE(pf_subsystem_device_port_name_file); + if (virAsprintf(&pf_subsystem_device_port_name_file, + "%s/%s/phys_port_name", pf_subsystem_dir, + dp->d_name) < 0) + goto cleanup; + + if (!virFileExists(pf_subsystem_device_port_name_file)) + goto cleanup; + + VIR_FREE(vf_rep_ifname); + if (virFileReadAllQuiet + (pf_subsystem_device_port_name_file, IFNAMSIZ, + &vf_rep_ifname) <=3D 0) + continue; + + /* phys_port_name may contain just VF number or string in format + * as pf'X'vf'Y' or vf'Y', where X and Y are PF and VF numbers. + * As at this point, we are already with correct PF, just need + * to verify VF number which is always at the end. + */ + + /* vf_rep_ifname read from file may contain new line,replace with = '\0' + for string comparison below */ + i =3D strlen(vf_rep_ifname); + if (c_isspace(vf_rep_ifname[i-1])) { + vf_rep_ifname[i-1] =3D '\0'; + i -=3D 1; + } + + /* Locating the start of numeric portion of VF in the string */ + while (c_isdigit(vf_rep_ifname[i-1])) + i -=3D 1; + + vf_num_str =3D vf_rep_ifname + i; + vf_rep_num =3D virParseNumber(&vf_num_str); + + if (vf_rep_num =3D=3D vf) { + if (VIR_STRDUP(*vf_ifname, dp->d_name) < 0) + goto cleanup; + ret =3D 1; + break; + } + } + + cleanup: + VIR_DIR_CLOSE(dirp); + VIR_FREE(pf_switch_id); + VIR_FREE(pf_switch_id_file); + VIR_FREE(pf_subsystem_dir); + VIR_FREE(pf_subsystem_device_file); + VIR_FREE(pf_subsystem_device_switch_id); + VIR_FREE(pf_subsystem_device_port_name_file); + VIR_FREE(vf_rep_ifname); + return ret; +} + + +/** + * virNetdevHostdevGetVFRepIFName + * + * @hostdev: host device to check + * + * Returns VF string with VF representor name upon success else NULL + */ +char * +virNetdevHostdevGetVFRIfName(virDomainHostdevDefPtr hostdev) +{ + char *linkdev =3D NULL; + char *ifname =3D NULL; + char *vf_ifname =3D NULL; + int vf =3D -1; + + if (virHostdevNetDevice(hostdev, -1, &linkdev, &vf) < 0) + goto cleanup; + + if (!virNetdevHostdevNetSysfsPath(linkdev, vf, &vf_ifname)) { + virResetLastError(); + goto cleanup; + } + + ignore_value(VIR_STRDUP(ifname, vf_ifname)); + + cleanup: + VIR_FREE(linkdev); + VIR_FREE(vf_ifname); + return ifname; +} + + +/** + * virNetdevHostdevCheckVFRepIFName + * + * @hostdev: host device to check + * @ifname : VF representor name to verify + * + * Returns true on success, false on failure + */ +bool +virNetdevHostdevCheckVFRIfName(virDomainHostdevDefPtr hostdev, + const char *ifname) +{ + char *linkdev =3D NULL; + char *vf_ifname =3D NULL; + int vf =3D -1; + bool ret =3D false; + + if (virHostdevNetDevice(hostdev, -1, &linkdev, &vf) < 0) + goto cleanup; + + if (!virNetdevHostdevNetSysfsPath(linkdev, vf, &vf_ifname)) { + virResetLastError(); + goto cleanup; + } + + if (STREQ(ifname, vf_ifname)) + ret =3D true; + + cleanup: + VIR_FREE(linkdev); + VIR_FREE(vf_ifname); + return ret; +} + + +/** + * virNetdevHostdevVFRepInterfaceStats: + * @ifname: interface + * @stats: where to store statistics + * @swapped: whether to swap RX/TX fields + * + * Returns 0 on success, -1 otherwise (with error reported). + */ +int +virNetdevHostdevVFRIfStats(const char *ifname, + virDomainInterfaceStatsPtr stats, + bool swapped) +{ + return virNetDevGetProcNetdevStats(ifname, stats, swapped); +} +#else +static const char *unsupported =3D N_("not supported on non-linux platform= s"); + + +char * +virNetdevHostdevGetVFRIfName(virDomainHostdevDefPtr hostdev ATTRIBUTE_UNUS= ED) +{ + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); + return NULL; +} + + +bool +virNetdevHostdevCheckVFRIfName(virDomainHostdevDefPtr hostdev ATTRIBUTE_UN= USED, + const char *ifname ATTRIBUTE_UNUSED) +{ + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported)); + return false; +} + + +int +virNetdevHostdevVFRIfStats(const char *ifname ATTRIBUTE_UNUSED, + virDomainInterfaceStatsPtr stats ATTRIBUTE_UNUS= ED, + bool swapped ATTRIBUTE_UNUSED) +{ + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("interface stats not implemented on this platform")); + return -1; +} +#endif diff --git a/src/util/virnetdevhostdev.h b/src/util/virnetdevhostdev.h new file mode 100644 index 0000000000..5fb846fad5 --- /dev/null +++ b/src/util/virnetdevhostdev.h @@ -0,0 +1,34 @@ +/* + * virnetdevhostdev.h: utilities to get/verify Switchdev VF Representor + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#ifndef __VIR_NETDEV_HOSTDEV_H__ +# define __VIR_NETDEV_HOSTDEV_H__ + +char * virNetdevHostdevGetVFRIfName(virDomainHostdevDefPtr hostdev) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; + +bool virNetdevHostdevCheckVFRIfName(virDomainHostdevDefPtr hostdev, + const char *ifname) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + +int virNetdevHostdevVFRIfStats(const char *ifname, + virDomainInterfaceStatsPtr stats, + bool swapped) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; +#endif /* __VIR_NETDEV_HOSTDEV_H__ */ --=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1530193831974104.17356700544349; Thu, 28 Jun 2018 06:50:31 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4C3BD30014B9; Thu, 28 Jun 2018 13:50:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EAFCA8CCEA; Thu, 28 Jun 2018 13:50:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 70DFE3F7D2; Thu, 28 Jun 2018 13:50:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDOCQE021044 for ; Thu, 28 Jun 2018 09:24:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id C356D8E798; Thu, 28 Jun 2018 13:24:12 +0000 (UTC) Received: from mx1.redhat.com (ext-mx13.extmail.prod.ext.phx2.redhat.com [10.5.110.42]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B943A8E791 for ; Thu, 28 Jun 2018 13:24:09 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0086.outbound.protection.outlook.com [104.47.32.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DE2683082148 for ; Thu, 28 Jun 2018 13:24:07 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:24:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NBzGxAHvcPacFUq+I3qBqAHcCkmoJsGuGrw8gVC6yu4=; b=PVcwBpvFqF5juAVxafSxvwXpOBUFNxui744CjIsJKFYqhJsiy0c8RWxz8TatxPyDlW4V5heDpjwp5EO33cf9R3UaMERhNvA+neErNPoVE5xkON+uragAHZX10ZDxd1ne6aSaBBt8OuKGzVJQyJCK171UeTD/ZZ6HL2Yu9pvHWww= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:35 +0530 Message-Id: <20180628132237.11811-5-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 75dfdfba-8284-4d2b-9947-08d5dcfa6cc3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:r8vTRm7KxzM8CeBrb94fMF2gy23is5maHLyZ0DY2+Zimp7d4UqgUVk5EeulztJD76BRC7alV8j7FiKZvHzxHSd8fBNBjChzcUiclkKqyB3ZbSaPD7Ab/yl+KVRdjjYZQ5ML0lgKG/Uu+IjiEokaTz58oh+bAAc5v1Qq0PM5o6A6/xRvEt0NzweMIR1p1t9+Yd2G+fpCRxqUMoQg8zGpEkMIRO7N7r31AQkuegwZFCT6dZjd3LQzkXT1f/uG7TYTr; 25:j7oVDBMO7Bfvm4rO6TazT+iyAaZWMi3IFNDSmhdNEO46WR0IlZOlNbTrp8TCvUzxtN9+hkoxRhmsSg7+Je4O7LN6vdkiPxRFMiEomFXZtIjQqjCb+nh57//2lRinQHu8I0vUV5Ml/1lBM/rja1z+FHVektpoORnoCv6QjgCWCyZr7smmLhUmN8Y3TWDpqSu6Xvlz90A0bB6jjpJSmMPheXr1rJKgxSbxs1E8q+qqcE0WfVOYSPVJ4uhkrvORkTm9TpAXmpO54mkL4HFQW6fuve+6bc5NJ4/V6pP8nhwLQ9YdjgsNJx8jWrZ/RM9p4ReLLEdK/a/zC4jf1FKJHci89g==; 31:5S3edIZSMiUW4pF57O/wFzoj2QFfRUgsqcHwwgN4/EW0Fpsl9pgWzSkmr75RrcPnOwXQ3BzuIXbDzZp/KQaIsolgSHOCO0hMk8kG5lUU+RfGioBMNeX8BSJmIp9PcJgLAPy8XNXtw/bmkwZ1YCj0ZnqRcD1oVhzsitVYhlur162KldoWBKSq9kdf5+4uadUveV6nyxC3U5toA06P57AW4YbjDwxMJYOCBHPvfSCfewo= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:Lx8kI6INSqK8nMnijOwzeIpTE7KMUAurg4dDkLtkfN91iWX5s6InHLn7xf9Pf1lE/R/HJVvDVcMeECqMXQ75E7u7xxnA8pss9Ts2/rF1rYzwncnm8lrsUuxXO7mHGyxGGMBf0V1U8jkslrsj9UOJmurcWI3/k8WVQoiw3NX1NWWPHxx/+rjM+G0kxTosfXAqiKjSNaGGjiew8LiwYwl2dOAZh3JbOkzWgHeWWX1IgjoS1McI/lqxTwqBebI8WL76lJTf8KnhF7t0HSkTALxnzQE6OlVo0L6kDI3KIb0LKsSLLtbjr+/CrwmNeVPS2mpJ7/02a/MJ4ntK+xFn+E99Dwjy0VOBwZVHKH19Z9ctqFBp+3LUhgEipWIM6rIFYTmVLZ7DKXUYhpLEwe2hh+px5AP8FM2QqJ3f7ma2ljXGAkN5Fs83mRco/okt7rgNveqf/VXnsyqCZWAluMYYzNA+K+p0bt6iyY40DLj0FPHre53Y+29+WlpaN+qmgrSI+uJi; 4:5Oyb0hX9GFSg6OehRByq1mYg0wlCn0r727fne2wmQ6DKRM1awjxYVaPQJ8h+7SRv+RblDsVCFoeGWXIogZvFuPnXIKG+uDluo+SmlfMGZI5ZgOVZtLzZ4BqrdVqeoekEi70G5z+G4qXl6zOSDFvqIiM/K1k58Ekyj1m7tCE1Vl55kUP2yhnXd3TvMCvkWOvEyPRxJmIB6+OIJYFhdj2CORNb1Q6/FDD7tXyfQXzxQYpo6scLxnY4rI37ktknaY1RyxRlMWMkaiwKvaVNeaMwrw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(14444005)(476003)(956004)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(53416004)(50466002)(47776003)(37363001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:WyrYHElEaxSsKbJLU4ipiSC8NrcPbPrCe4ztxjm?= =?us-ascii?Q?aV+56QrxQDdZNmO9OzNKR4e87fJ6nFeYTb6CcwzZdQqBwUh8l6aTS6zC0NgS?= =?us-ascii?Q?NNrN5RcCKhslM5KXclUZ0Qyu3Ld8uiRfsY5N6tgR/czVoW7W+C8mP4I8/Z62?= =?us-ascii?Q?Dl78cPMIXp7n+liTMll2W7Ckz7mj5JzvzQEUuN9Lia+zelB6eHvnoffDXBwW?= =?us-ascii?Q?nW89HsNPa/11L9y0rRgVZ/IN0ZNQgdkw75WtDDxZ0mIb8JorfyMt2yxG1x70?= =?us-ascii?Q?8b1DWH7dWpMleKyFYy9Mwg5C4wMsZEXFolOc3OETiIaORS0G68z+21RRekv5?= =?us-ascii?Q?OaTBlsrbKHoKjm9W9yh85K2gAhZP3eBb39nghW4SEf9M4zFaWu6ERojXJp2N?= =?us-ascii?Q?BRSJqzR081FJQQC6oTWne09AmkhGdDan1FCqxHRpexhPtq3klwaY8RdcXtqY?= =?us-ascii?Q?u91qetSLZmV0TAF4BgxLV0v4JHe4MK4FUtX8BEKYYVwBAVjj0G1Aj5YwhSSE?= =?us-ascii?Q?1NOTwDiT5+buM/u81HjKsIsgCCbelw9i/1n0ki+Xbt+3NGaMWbJG+qO1PfsP?= =?us-ascii?Q?IRoVVgKaM4xQrEj7XcDDGsBRKLwjXTY12R86oOmU8uz+zBRQCO2GuiexIMaR?= =?us-ascii?Q?CTWAIyplZ3dUDWRN4sF2cx0nQ1ifuLUThT7fiVVcnfRmmF0bxmscC1R0jJ0c?= =?us-ascii?Q?HI0EMndlMVTZ04tXfIYlhX10i3gnEkgyK1JP/oaoL3rsUH30lezNlSLUR3jX?= =?us-ascii?Q?IVFHkBpoI9xdwt0awrdfMWTV8Xfkil4yHAnVDCGjDMR1mbS/b+JQYuofOdq/?= =?us-ascii?Q?VFjv1dVXxeqgsSUgWG5OQ8t5DjR85+L4al18qrHIdF+Z8vsBX1ArdI7MOcmM?= =?us-ascii?Q?JFVN8ONEG2aQ/6GNZmysl4hr26I6BWAXgNHLZiaSQFwkr54EzZGEKCjEw+xy?= =?us-ascii?Q?B/qQ/Z0aH47Z4auiGhUx5vhFaMGEOYzMUtyHbNsemNcO+WYBcMM1IddKXpTz?= =?us-ascii?Q?G5DHA/nhBDdL0s+qFHdSbcYCR/EMFeV3NU3LFiqZChCgXluli7FE4Ky2owSm?= =?us-ascii?Q?LSircAqu/udxJiNFMgjYyxUQTHCPAhiB6dpdiLN6L2q1Td098BcLfh1t2lSY?= =?us-ascii?Q?02jqvOqaD1NrjH4RxUKYhkm91WTMBEnynWlt0Bqh27J+chriKAxGkcEqnfrw?= =?us-ascii?Q?JSRiURDN33Bs/RXOsSpdiFCbOdliwJqa46tNl4qQV3nYL6Jhto8cH/UX3Rd+?= =?us-ascii?Q?3p0LQRNqjMHedq5x746NdMJwn4URAQWt+tNaiPao6fCsrXt9t4nIZ/1dCi1f?= =?us-ascii?Q?5mmQnnVUOUdM1yHGVxr+8KhmhKttJhZBSEtxrVARxGIEE/xSSFxlgj1QBL1I?= =?us-ascii?Q?3jE2toEWD4AJIFKCrFQtqESZEJTQ7Mg7EoEooRNik44Bw++bO?= X-Microsoft-Antispam-Message-Info: mIaQ26XPemHdJFipZGdHlrvsZrkjtznx93oTKiw2hm3cNDIwvjNkdD9t8UR5lHFCGWwVw/la4N7wQrITQ9CvhXpDS2deLYW5pilMQ/+GPntHPWM0vr+r8uLYxtTdlNnN0CbgX9JCg7Rl21gjRKqp20XIxq9z0IswFSWf3r8MZ4nI/P8koQB3B1GQkLndGy8H9aD2Ph9gfKGgc3eqnQiZxIpw8KnSuBN51X+9c2rN1wyzlVoKBgyKMMYYXGVh0b/bmfxwUOA27AJRCBmd4HLGp0UTZnX+5xq4Ff5Vo5IWtCdrQQLzyVBWFf6HAiYcJXiUNLJSwQWS1/I7cJpcPKNBrf7J9XBsxaIkm0EfBhAkyVg= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:rlq0BI+1ZDi1L+mJFT5LpRbsvIlp9NVRcrkjjHlfQMOZlV+ZqWAjXOFZW+tOjCjWYCeieLBY+ou4G9wQhO8UJNPfzud1az1qcFfhqxyzV4ocwI8dJamLe1jzaclKJMD1yPi3c48cpKwC6p01A5OAui8dqeeAHdccq3Z7xJ6sTdtw5RI+CWKHnsx4lwm+Tt7DzztH6MjeBEpY85tO3U9Cxuy73G0z8ZQcMfBZok/9cEaaAJHfxGrcKpiDnGONlc/IkQ55bhSKiptsQpgHjIQuOaW+ltMxrR2ieagzTTYy8MFKgrnGxUIJpI/FPFDgOhx3miynT5s6oskRp6RY7gf1w3sQrcgCKBfVUGUy6pVqh+wNnAXkHlylG6CUDGpATqu9xYT2vn3hcS+Ja0cIT8lzAB9W6HFktKbBx9XJlo1rDeKMl2mDyT1Cl/h3MGnTkUqRxZd0dCS2ew4DC5RB8eZByw==; 5:SRp4hQvhSK+bHFku8pdbLFQHoE1+tBJhoOi0SwyKan0p2aPbe4fV07ZA51xWJrhGzpG17mbQjnTN+tGX0U/8QLr+yshmmhdCETSLxktqO3XedU/lmMzd8Ol0iHgEA869+S2KclY8dg4wGXj82s0dnAjRjavFi8t6Pr80WTFRC2U=; 24:0CH/IqZhcucWuQli7WXfpWarjmZNlt8/H3pXfuVK+yhHxWz5Dj+KsAwtDZscUy1y2wgH3ge3b7uAP9B7vTyn7NKpwGdjNlq2Wn35kzsYDl0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:KkP16PtbF4gQLY8b0COHr7eG+Fnfk/Y/CG/uO7O+HRLxF+NzGsx02+AXkKz2QjT0kiFVSvSewLlTdJZl+6C56C7AoTv7ws5f/iJBWYcD8SS3p4RAXNPfDJID4sbiMTb4Obz7lJ0N/UsHd2whvfs4rU6d7heh+PBo2OL5Ms+P3DaagQDLtihHbhs2uM7LiF792b5MG1gMtepH4mkRVRQm/oPNe06Bq0Jux3ijoyZOnBl6ZhjGC94W5sKmqtHU+8my X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:24:05.5066 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 75dfdfba-8284-4d2b-9947-08d5dcfa6cc3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 28 Jun 2018 13:24:08 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 28 Jun 2018 13:24:08 +0000 (UTC) for IP:'104.47.32.86' DOMAIN:'mail-sn1nam01on0086.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.86 mail-sn1nam01on0086.outbound.protection.outlook.com 104.47.32.86 mail-sn1nam01on0086.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.84 on 10.5.110.42 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 4/6] conf: util: Add API to find net def given its domain's hostdev X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Thu, 28 Jun 2018 13:50:31 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Introduce API virDomainNetFindByHostdev which retrieves net def in given domain for the given hostdev def. This API will now be used by virDomainNetFind to further probe net for hostdev network devices. Signed-off-by: Jai Singh Rana --- src/conf/domain_conf.c | 43 +++++++++++++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 2 ++ src/libvirt_private.syms | 2 ++ src/util/virhostdev.c | 2 +- src/util/virhostdev.h | 3 +++ 5 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d8cb7f37f3..8432215d19 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -56,6 +56,7 @@ #include "virsecret.h" #include "virstring.h" #include "virnetdev.h" +#include "virnetdevhostdev.h" #include "virnetdevmacvlan.h" #include "virhostdev.h" #include "virmdev.h" @@ -29064,6 +29065,37 @@ virDomainNetFind(virDomainDefPtr def, const char *= device) =20 =20 /** + * virDomainNetFindByHostdev: + * @def: domain's def + * @hostdev: hostdev whose net def if exists to be retrieved + * + * Finds net def in domain given the domain's hostdev. + * + * Returns a pointer to the net def or NULL if not found. + */ +virDomainNetDefPtr +virDomainNetFindByHostdev(virDomainDefPtr def, + virDomainHostdevDefPtr hostdev) +{ + size_t i; + virDomainNetType actualType; + virDomainHostdevDefPtr hostdef =3D NULL; + + for (i =3D 0; i < def->nnets; i++) { + actualType =3D virDomainNetGetActualType(def->nets[i]); + if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_HOSTDEV) + hostdef =3D virDomainNetGetActualHostdev(def->nets[i]); + else + continue; + if (!memcmp(hostdev, hostdef, sizeof(virDomainHostdevDef))) + return def->nets[i]; + } + + return NULL; +} + + +/** * virDomainNetFindByName: * @def: domain's def * @ifname: interface name @@ -29077,12 +29109,23 @@ virDomainNetFindByName(virDomainDefPtr def, const char *ifname) { size_t i; + virDomainNetDefPtr net =3D NULL; =20 for (i =3D 0; i < def->nnets; i++) { if (STREQ_NULLABLE(ifname, def->nets[i]->ifname)) return def->nets[i]; } =20 + /* Give a try to hostdev if its a switchdev network device*/ + for (i =3D 0; i < def->nhostdevs; i++) { + if (!virHostdevIsPCINetDevice(def->hostdevs[i])) + continue; + if (virNetdevHostdevCheckVFRIfName(def->hostdevs[i], ifname)) { + if ((net =3D virDomainNetFindByHostdev(def, def->hostdevs[i])= )) + return net; + } + } + return NULL; } =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 0924fc4f3c..ccec74e51d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3146,6 +3146,8 @@ int virDomainDiskSourceParse(xmlNodePtr node, =20 int virDomainNetFindIdx(virDomainDefPtr def, virDomainNetDefPtr net); virDomainNetDefPtr virDomainNetFind(virDomainDefPtr def, const char *devic= e); +virDomainNetDefPtr virDomainNetFindByHostdev(virDomainDefPtr def, + virDomainHostdevDefPtr hostde= v); virDomainNetDefPtr virDomainNetFindByName(virDomainDefPtr def, const char = *ifname); bool virDomainHasNet(virDomainDefPtr def, virDomainNetDefPtr net); int virDomainNetInsert(virDomainDefPtr def, virDomainNetDefPtr net); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 5aa8f7ed64..e4d8583d41 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -449,6 +449,7 @@ virDomainNetDefClear; virDomainNetDefFormat; virDomainNetDefFree; virDomainNetFind; +virDomainNetFindByHostdev; virDomainNetFindByName; virDomainNetFindIdx; virDomainNetGenerateMAC; @@ -1966,6 +1967,7 @@ virHostCPUStatsAssign; # util/virhostdev.h virHostdevFindUSBDevice; virHostdevIsMdevDevice; +virHostdevIsPCINetDevice; virHostdevIsSCSIDevice; virHostdevManagerGetDefault; virHostdevNetDevice; diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c index c6ee725860..2b8ecb9649 100644 --- a/src/util/virhostdev.c +++ b/src/util/virhostdev.c @@ -348,7 +348,7 @@ virHostdevNetDevice(virDomainHostdevDefPtr hostdev, } =20 =20 -static bool +bool virHostdevIsPCINetDevice(virDomainHostdevDefPtr hostdev) { return hostdev->mode =3D=3D VIR_DOMAIN_HOSTDEV_MODE_SUBSYS && diff --git a/src/util/virhostdev.h b/src/util/virhostdev.h index 7412a20aa9..71faaf4e7a 100644 --- a/src/util/virhostdev.h +++ b/src/util/virhostdev.h @@ -197,6 +197,9 @@ virHostdevReAttachDomainDevices(virHostdevManagerPtr mg= r, const char *oldStateDir) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); bool +virHostdevIsPCINetDevice(virDomainHostdevDefPtr hostdev) + ATTRIBUTE_NONNULL(1); +bool virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev) ATTRIBUTE_NONNULL(1); bool --=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1530193831407895.2415313952665; Thu, 28 Jun 2018 06:50:31 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3EC8C30832D0; Thu, 28 Jun 2018 13:50:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E1DBA86B41; Thu, 28 Jun 2018 13:50:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 75F023F646; Thu, 28 Jun 2018 13:50:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDOLjj021056 for ; Thu, 28 Jun 2018 09:24:21 -0400 Received: by smtp.corp.redhat.com (Postfix) id 6A11066A14; Thu, 28 Jun 2018 13:24:21 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5C2B080943 for ; Thu, 28 Jun 2018 13:24:16 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0048.outbound.protection.outlook.com [104.47.32.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0C73F81DF1 for ; Thu, 28 Jun 2018 13:24:11 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:24:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3YikT9gl8+AV/sk69lMztm7RXr2JUCB+6dXfL5Ziby8=; b=ATpJjOohvWO83zbQ9TlrfzsbikLMbEpUyDP92wQgMLJLo1FDxu0O23+0tP4dNB2w8nEIIk2xzKmmyCtDoyLkAp2rkmKsVpgUBu0qSk+9r7l1fK4qn80nRt3THll7rX4m56PGwQSpB92iXDmyCZD+HRgWiM+xVbPH47xnohNNppI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:36 +0530 Message-Id: <20180628132237.11811-6-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a045af9d-f106-4941-eb06-08d5dcfa6ecc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:dQqSVdGhg1W8uOsSODi07uLHqMhzMerayKqCyAT0ajp4zDmV2/Sr4zOj3MtuZQKuUGVVY/wIr63Qgfhd3XLhNtroaW5PjMWSg81OXbPPsJkQ4MeA+EZJq0hcdOuVwg72PsMacSgnUWVdP027kRFESNvYjYrL5fS8tKZ0b6qg5kfR6S2ETtBeiuTVEYYFQ0Tko+GDKCErK2nAa/YwicKseiPF4iuPRodTzQh6xTEL54A+0kiId/Gmsw/zTP0ROSPQ; 25:GHWIHWbpAAnw+Hl4hCli1LVm03IDWe5hPqdxXVGWSN8bcNPYDnM/y2pbpYR6K3NJkakihRLrpCz6updtQHR9RHElJ0NAJ01eyQjPNpoz6q/lBAnfQLzhLiQ96YnKhjDjfiKDDYKX28Qq4N10QosKA+5bzvq0dy4cLwziF9rHIHCWFS5z8+F8mNa+rVZH380TxIDh6iNGc/HYnzaufOH+DFKGPIHq6V5e1kg2nknwgLKfSY+t2kKng9NoJJP7GugFeikYBmchuwB6a7PyAWldcedtzNGRcIOjE7ku5Jta4jMSpGBx23cLgfHeq54XjJT4K4BDbYPZlCc21nT79aX0kQ==; 31:ZYi29+q2IRvs4sSfgHHYgxFGiC8F15B0ZOJjtI8a58vS18/nI0IW0Zf2b3JqFCGt0ucnj/PNhJIXF4E2FJH5FYcgitV9A64/3x4b15bJaR3Mq7ovIYZyNW9w/KlLvhJMrsgwXXU6r5YtrCUND4ygf2kS6VRWpYTOmkuEAsi9sgbFjvDiR5HnrKjF+oF6a3f/Bi7YP/ELQ3HXaqIqfnIS+MKXeW8XBJVrpDvqij2E3Wc= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:kKK30Ah9PpFG05msPbwO8IA+6Eqq2naGejGpdAH0pRUeKSoTG5hrlbzh86cw8AOVFqQZeyVSNFVo5Q1Ym0VIBJRz98qkkOUzmmHu5zhfE4/qhYt1/sgnT59I3zWj1DH+xqqz9KAKOQbBlgFENpH1x5SmCIP2Ip96Ft8V2WXIXOpkwdyGsAWwHb65R6vOL6Fdiv8JctmSk8KIz1l6ksCFEfPTlpfkcCP2CiphHhYIBPPvHFjeVTHmnKF+Yd8KPJLePCO3jTSIS9/K2riAA9oxbufHkgCPD+L14dMAyNFx+ZMQhcEBf3yz9jH+RcZEJkSi7L4L4f1XgvXl37YLt3YoKxMwQPsNYCpTzxCzUoydyBKf8C24yz84Jynw19aXNMmuAtHUHflU8xShjQ0wjGj2tLA30lYSFf/dcGbuvsrMxVSoWt/W4Ig7YOxUS+NVNClnkr+BveKp2ynsjUCSu0046N3WGXjJdBZcdUDOAjyqxOg+4ycMcDGwfWeTzbQtx+kG; 4:kHPqOomIZDDP75+4zeT7Y9h4Gf4WTK+TvDiMy3oBhoTzKsP/tcOGsTJubkLajsTrx3PfaO395+ph9n1YEkZwUD0l+k8+235bFMBzKstaftofTBmq18/H3KMrOhqKNzMqmQaZx6e23Y49LdhMoG0rIt8MXMa4McXg/8/LAwDcEf+n/kgJ8DIIDcfK40MyYFctiA9aViAM69T/WR8TwVNz+P6nkqY+PQvATMTD/T6Zq/Hxgo4b0xwBsaB/uB2YLEv9dK0+Mge89Co/rSerMjqwWg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(476003)(956004)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(53416004)(50466002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:+TLVGlsGKL2SPm0CMecawSZiA5r5HOKwfSM+GnB?= =?us-ascii?Q?RFH1AvDgzgtIIKa7as7AK7wI2vqmIClUQmpe5t8cM0AOiWzzIvLUkhwRNSS+?= =?us-ascii?Q?0Fx1W1qcaCy6o2OsAqm5WF3OU+Q6nDRrpC50gAVgxh7lrjBKBYqU0H7FvlsS?= =?us-ascii?Q?GMv97FlSrp9SN5yANFizOuFzL8FsqnKojI6qam7qsTp2H8xBLn41K9TkbU07?= =?us-ascii?Q?1Y8fA8Sjcw7M25R2WnpAA9w0J0E9o8wGfntF5wflQn9/b8aOjleQdwJJuayE?= =?us-ascii?Q?PiweOMIKYHfaOoVHnIBs2wV6J1UwQf0GEeRwJ6nRfziUVndhAF8F3Wsejncc?= =?us-ascii?Q?kOCgoEzfOSTMiy2oV9uZQRh9/iFWnzwSwSNWgeiNKnkdlnotvAnFA3C3HdpN?= =?us-ascii?Q?4clU5xZyzRVJz7JZsAcNJVT2a14C1Qiy+r/Ui/5C+xKZzl5fAHKJLef0VTLq?= =?us-ascii?Q?19bF+8MMI0AiTHgbqifCRKQbyhpoWrNU6fGkuBNW/GWL63q+PhWW2CaBJn3z?= =?us-ascii?Q?Yy6YPJjy23ukqIEQh3xhqHycQFdwLH3N/jGpwxqeWh4obG/M8USe5vV3NWBG?= =?us-ascii?Q?S/Zu/BqIf8+R/ukK9e80reFOSVGup/n1NhgUmjuOUwdF3p+UrkOkI83vHanM?= =?us-ascii?Q?A2dchNpb0rUYIGC3142SYwmpvvg5N6uG7X422GwjuMSiy2J1PR0OtTtXBNuj?= =?us-ascii?Q?RCnJ7g33jOJOxr1yIuCFx42L8S/nINMSeTJGcr6sXTPPXvGsSxwnKx38vEzN?= =?us-ascii?Q?zCWGUB28AVCLlycmRZCGoF5E6G3WTVxhJDNMQpE43xC+2xlFverdJXrTihjH?= =?us-ascii?Q?ZLWCAJ0lUIPAYv1w7dXq7TZ5cF3p6XwNHoJIobcaC87yAgsB0wlLnd7jNf6U?= =?us-ascii?Q?19aDQN3/Mq5DXVlDkNneeqXViwmQuGxamNH1FXPx0YdtuqP4ZkEUY0AAQ6Yr?= =?us-ascii?Q?JYC8Da2sIRK+rPgcH1OIigBmVxAwqshhNEtiOSGzOclv2rE+t12wZmhuzemz?= =?us-ascii?Q?zbs666p/LMqdUBhrJ7W9/HThG7bPO5viDZcK730fSxvYB9l36X4fm3JxpSre?= =?us-ascii?Q?KHf4WB/jvQQXACqkWETFe3hb91bdd8ZBQGFwCfyWhCVpMcxqOboCxAmY+7nc?= =?us-ascii?Q?ibUhxRINARCtxn1n26HdUohmyVGilhnELQjUoy3qhfF3OBPowEXfhQ70LGFp?= =?us-ascii?Q?dU5no47W3DTzgUVUVgMt0R+Lw5r/nozUckBuE+KpM0aHAHIRb1Xs14/OpPmn?= =?us-ascii?Q?SwexkNvSj7fQ8Ns/k2dR2A3mTSQpvaD1fT+Ru0dETjeLoFxyLtREWBJ/vz0C?= =?us-ascii?Q?ZT4ntS6KzaG3yFxsQXBmDN2Gy4ZaDOB6OPAlK7I82IW2Pfl551nRmzK0LVAb?= =?us-ascii?Q?uwCA9IQ=3D=3D?= X-Microsoft-Antispam-Message-Info: pZp0qV1PTJDVGPGQd6CKcc48+x622NDfCHDp3Vk3Hfvp32/sGa0FbQNUB4uWSSFyYitcH7EiDjPxaPc4WH54V+tDRsALgZv8R9bsb+n/Hppld1yDVZUrYp9R2jyc1vwyHtetAMpMjlHm8TyRQt70dryEerVjDsJ8MMLuBdpAPfQL095/hE2bK8CF+qBrJtiNNuW60GrRpWdgnE11EBMqa5Ktmb+aX6ngUdIJ75nPPinhh5Pzmx2JlFDZhQXMsWlrhBjUy6xfmLX9zu/ycRiUy+dNQYuz7PycXySahCcvukjFHcoloB+eGxg5LmgzZDdGoUPmpbCFFva2no4ZfzQyRe5739nIHUwVNP6tLkBmexA= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:yktQiPMPJFjdZaqLek7hyXv4GzpzhzLRF8fdk2zuGgdGqVDw3bxXj4RrwMQJBuZr8lg+xn1Xz02ud1URh7ICKuJWSiIbFlWTBKCr/qCCdRMa5tjEfbkTQ1y8J6x7SxdpJ+zo6h/M1MvRDEJbOrFs5M5bWCULykBn1YJoFOo9025sSyt4P+u1/625FrZ6iTwoii1e/LWR//lWHn6uUHGJi6aKhDeWBYxuJaFD/YuxvPUtGG/LhetfrMNjN5ZCDN51rxEI4pK9JCq6CKHlj0UbDAiQJTtfrPkMOC2JEojhB/WxcSKl8zJIxr4e/QcfMwPm04yrAqtgWtakFvjqpC47dwKKILqoplp1rmbK65R049omOFXGJLaTjwzSvddPHNEKELMAeK+CBUeCqFqtYUVgqKmwvdRoy/kDUCIxx7TWZN47wvv2gZA9MakPbsaC9dGNd3nFAK+15IoByWlD82msSA==; 5:Az/dYCR9BVfoHTn8hIbsx/yUSBRAKMsa7Wy7Epv7gaLq/GTdwRQvS1kMN2VFpC1zVux4vAf23gDSfu24rDMNKMkfdHR8TNygB5NSObTkA1qjh1kEfkZmid+fnzYGqLbTVTxBgNplNjRLz/Bs5hgZ5SXtEwNUn9j/nQxRSznsIPE=; 24:iNQkdtjyBosqcyQE+SEMeFDDihi/Cby6Rp4QsZ80vJwPM3/U2wDkcZ6VB86N4kINvnC8COLGZCckXGmdoxMgH7+QLE1SkPAnIdZVJMBBc9o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:5mfmWuE6byqkc4nzi+ICve2Y7B1T+6mxhq/ekfk43JrQ9QUuJ0ltVh07I/eCeTa0zFQYGlyy2FZME+k0MxPoFldbrRQVSLpD47z8ZyDuRv5h70axm7Gqh+13ltC/WuGirkszVlIojLMlb7pexit4D8vzmjSJtqJmm4BRQuu7T0euuCvKqGF24gl/U+d7h6rBzd3rRYoz+bGMj0LwUYvwIeUM9Pbj97DNotdiOwugq+FL3IbfIbl1ywetACq51iIL X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:24:08.9061 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a045af9d-f106-4941-eb06-08d5dcfa6ecc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 28 Jun 2018 13:24:11 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 28 Jun 2018 13:24:11 +0000 (UTC) for IP:'104.47.32.48' DOMAIN:'mail-sn1nam01on0048.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.48 mail-sn1nam01on0048.outbound.protection.outlook.com 104.47.32.48 mail-sn1nam01on0048.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 5/6] qemu: Network stats support for VF Representor X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Thu, 28 Jun 2018 13:50:30 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In case of pci SR-IOV device with interface_type as 'hostdev', return network stats if it has a VF Representor interface enabled on host for pci SR-IOV device according to switchdev model. Signed-off-by: Jai Singh Rana --- src/qemu/qemu_driver.c | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 4e94b4f095..167807704b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -67,6 +67,7 @@ #include "virbuffer.h" #include "virhostcpu.h" #include "virhostmem.h" +#include "virnetdevhostdev.h" #include "virnetdevtap.h" #include "virnetdevopenvswitch.h" #include "capabilities.h" @@ -11258,6 +11259,10 @@ qemuDomainInterfaceStats(virDomainPtr dom, if (virDomainNetGetActualType(net) =3D=3D VIR_DOMAIN_NET_TYPE_VHOSTUSE= R) { if (virNetDevOpenvswitchInterfaceStats(net->ifname, stats) < 0) goto cleanup; + } else if (virDomainNetGetActualType(net) =3D=3D VIR_DOMAIN_NET_TYPE_H= OSTDEV) { + bool swapped =3D virDomainNetTypeSharesHostView(net); + if (virNetdevHostdevVFRIfStats(device, stats, !swapped) < 0) + goto cleanup; } else { if (virNetDevTapInterfaceStats(net->ifname, stats, !virDomainNetTypeSharesHostView(net= )) < 0) @@ -19935,6 +19940,7 @@ qemuDomainGetStatsInterface(virQEMUDriverPtr driver= ATTRIBUTE_UNUSED, { size_t i; struct _virDomainInterfaceStats tmp; + char *vf_ifname =3D NULL; int ret =3D -1; =20 if (!virDomainObjIsActive(dom)) @@ -19947,21 +19953,41 @@ qemuDomainGetStatsInterface(virQEMUDriverPtr driv= er ATTRIBUTE_UNUSED, virDomainNetDefPtr net =3D dom->def->nets[i]; virDomainNetType actualType; =20 - if (!net->ifname) + actualType =3D virDomainNetGetActualType(net); + + if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_HOSTDEV) { + vf_ifname =3D virNetdevHostdevGetVFRIfName(dom->def->hostdevs[= i]); + if (!vf_ifname) + continue; + } + else if (!net->ifname) continue; =20 memset(&tmp, 0, sizeof(tmp)); =20 - actualType =3D virDomainNetGetActualType(net); =20 - QEMU_ADD_NAME_PARAM(record, maxparams, - "net", "name", i, net->ifname); + if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_HOSTDEV) + QEMU_ADD_NAME_PARAM(record, maxparams, + "net", "name", i, vf_ifname); + else + QEMU_ADD_NAME_PARAM(record, maxparams, + "net", "name", i, net->ifname); =20 if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_VHOSTUSER) { if (virNetDevOpenvswitchInterfaceStats(net->ifname, &tmp) < 0)= { virResetLastError(); continue; } + } else if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_HOSTDEV) { + int rc; + bool swapped =3D virDomainNetTypeSharesHostView(net); + + rc =3D virNetdevHostdevVFRIfStats(vf_ifname, &tmp, !swapped); + VIR_FREE(vf_ifname); + if (rc < 0) { + virResetLastError(); + continue; + } } else { if (virNetDevTapInterfaceStats(net->ifname, &tmp, !virDomainNetTypeSharesHostView= (net)) < 0) { --=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 10 19:59:30 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1530193838901485.183105392951; Thu, 28 Jun 2018 06:50:38 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7D8D33003073; Thu, 28 Jun 2018 13:50:37 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2FBE08094E; Thu, 28 Jun 2018 13:50:37 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C586E18037F6; Thu, 28 Jun 2018 13:50:36 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5SDOMxc021062 for ; Thu, 28 Jun 2018 09:24:22 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5CE2989D31; Thu, 28 Jun 2018 13:24:22 +0000 (UTC) Received: from mx1.redhat.com (ext-mx01.extmail.prod.ext.phx2.redhat.com [10.5.110.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 463728CCDA for ; Thu, 28 Jun 2018 13:24:17 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0048.outbound.protection.outlook.com [104.47.32.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D3FD08124D for ; Thu, 28 Jun 2018 13:24:16 +0000 (UTC) Received: from hyd1jrana-dt.caveonetworks.com (115.113.156.2) by CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.906.23; Thu, 28 Jun 2018 13:24:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hA+GXTn4Y26OJ4O7kixhkS9Ib9x4RoG1pgQM2JHihww=; b=VXIPPZL9DNONFHPbVW8+Ykhfnsx2wgBilqjIqTAPIPqdExty109/kM73lnadA1+TtkemDz1mfUmHppScTleHfD5DnxOztYhLoSsJkWy9moCIhcvfD6TGNy8RNtnqHkX4yjZFvFay1yC3NoRqMR12fYw4lEKFFrR4iyLDo2TRLAs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=JaiSingh.Rana@cavium.com; From: Jai Singh Rana To: libvir-list@redhat.com Date: Thu, 28 Jun 2018 18:52:37 +0530 Message-Id: <20180628132237.11811-7-JaiSingh.Rana@cavium.com> In-Reply-To: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> References: <20180628132237.11811-1-JaiSingh.Rana@cavium.com> MIME-Version: 1.0 X-Originating-IP: [115.113.156.2] X-ClientProxiedBy: MA1PR0101CA0066.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::28) To CY4PR0701MB3747.namprd07.prod.outlook.com (2603:10b6:910:94::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 853cfdf3-42d5-4297-c3c3-08d5dcfa717b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3747; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 3:TcsxAennUvMWpdybpCSvOdlHulnHHvs2ogZww6AorGLluYkoiQus0BIXPvs7J1R4lR9u3KxTaEWHiwrn8NZlQidjkXnXX6d/TfYE6x4k7syBM8qrTAzhsI4eQPno+22UI3UGw9VwaSC8PtgWzvp0lrUyt/5aaj/t6k9zsQORMCUKrihtS2jHTKXqns6lA10SNvGzrxRZsfTYEaQpJ+I3yY27C2p1k9SdOmiC1vzie4ovpF04x/kUDxhe/fNOG2MF; 25:BvadQNo9YpC2sdc7JOs5bFie4z01+nQBwo8BmAhtRwh5mzYjrUwtniRvSqAEF33R7H9bhEJnVxyXg5equAf3Dw9Rok2bBINxOCOt32Di4Bf9NVQGsF3SQFSTNv4LOKRY65m2Nt5NatUJ6CuQ6oy/DnPBn1fTcg+PE5CKdXSDd69XCi3Uo+G80URQCBtS8y1tARxhNrwgV+anXDLXOpYqKiNL+5gfE6yzJrvmSuo7ALnEOr/Hl8NarbYosL6HCAecWLfkH0w6t7O4a9vxn39bO/80jq3Ire0Ex1Od1uotiJFOWdPqJFlG8hLkD7Kx4z2kbJtlbyt68rOOxB/gZ1ZFaw==; 31:LYbAxyhQ/i4Q+YCus2YYWbHHIYCooGbcYObTXsq/PI0R8hF+dVIc+kRC+2MBbt0QqiSCEwb/VIotu3WMFgh40BzX3H/nE7WJKrl80IADzguP2qvjYsUT2v4mKy8vC+BOrsoEDbtCdFFghrbJ6tMagN6F2nw1POp7LpxDCU81AvVTEh3xlTn8yfeJOHBCkaGHDzp8xAJUYTOqcHBAeXvm/ZLXe1aRtNjQxuSMt6XwLf0= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3747: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 20:WsUWXyEaBHVOpXqVK6fToRRVlPQHkCcRZEQQ3Ny/0CvaPHLtuhdrv6bGCZazRqSr6kM7ydBC9vuRI+j08cR0mLMbevWYZgYMAdJk22NOYDcFk2TeiU2MZnbSnR8BEWZAtC2NKWNaUu1NxXS0lf6RkTK/KDLFyZ4PYULaDuZIzWbQUZbGqdGu6Wcjvg/S+poEgDe8GlRgMd7pQBd3zpiRtfd48qhS6pI72ZhkUR+iXnYwF19GdWdLrsjRRMBJTq+ncOqnLdpe5eeMh0MyIm9vFBk19mowA88x4gqNh62kjQ26po0uu2AShyaXLzHH/YZhqCB1oe4PjIzx4XZ/y4On9pbLo92ORdMJqfLRmAxTOm5Zpdwk4whQZfVrk7a74X3rPSI2LRsSb5F7T9BNUDXiokSa8Beux8uksDaozN3jmEFsDfjbxANFDuOlHTo9MZwLyP2oIlOUO+TZFQ8gFDz1CXrfQYx77dWgAOp0I56uS2OBAVcK87NRF1D+LJm2604O; 4:7hEFspqrGFq9aD62qfcztAoyxxmwKM0csEcEw8qQaGgki5TCN3wW+hwq6WYFMasdRKPAiinb74cyon8UNyaDbOT/87W5KchiM8tJzaTxRBtDCI90ExcLZsNkUM4p+LWjKPdc9DypgK37NDcIEGI00Bu2FSrBHlB4QGw/h2lj7SKG2YXJ6DZka30HqreO6npNRhESW8tctIiEeMPfsvamnuIGP2hpdHgubxj+QR1o4g0iyFTxXaiNqeMw7FyQJDEHVzkT96jFA07Qcz5GbR5vuQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3747; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3747; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(376002)(136003)(366004)(396003)(39860400002)(189003)(199004)(26005)(16526019)(6506007)(446003)(386003)(5660300001)(39060400002)(316002)(486006)(50226002)(3846002)(186003)(2351001)(11346002)(76176011)(51416003)(52116002)(6116002)(6512007)(25786009)(6666003)(6916009)(81166006)(2906002)(575784001)(81156014)(16586007)(8676002)(86362001)(305945005)(55236004)(7736002)(68736007)(476003)(956004)(2616005)(4326008)(8936002)(53936002)(105586002)(106356001)(107886003)(6486002)(36756003)(2361001)(97736004)(72206003)(478600001)(66066001)(48376002)(69596002)(1076002)(53416004)(50466002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3747; H:hyd1jrana-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3747; 23:41v5IDPzGEmofgBdo/vHg5L4nvfq5MLBriFOjAu?= =?us-ascii?Q?Sej8oTNEtvOvZMAjAoa2Pal8biW0mhxPNygqgJKUFk5eJgJn/Dflh71Ixh6q?= =?us-ascii?Q?xDCEVcft+5a3jHfMgpUiUpcuiHc89Q3pNOoX19ODRjxz8/B/9AR+fT7cwd+b?= =?us-ascii?Q?Rr45UGsLZ2aUwpgiY00WPT9CjRujoj/8Foj21Z4ArGdFFZbv6YoqJwVIVbcX?= =?us-ascii?Q?1da2qQft3mj3ilRDHHRa3TDQvFbxr/SccqxQRq0Bs2SfeTWG5hC/wfTnq/6V?= =?us-ascii?Q?5X9V3x2OHkHi0gXBQmFCGydHVEtkvJaUpV9eWw48fL/boyf3h5D1kbeUU8jp?= =?us-ascii?Q?YPTyfI8AbW/rQdhCGjjlw4lfO4/1A4HOeMyi9Sct0dreUMnHjSuQk2MAq9uY?= =?us-ascii?Q?vlmsq0o1NUNEhhZJdrcDAn+hpTbFo39qa5dzFfOhOTs2TKLpqpZ5B2UYuQyg?= =?us-ascii?Q?oGxRv74sASfHH1j++nL0JrZJ7GeAUCNFXqqk7w6ge8ZRHxsSw7QGwMgdVgy4?= =?us-ascii?Q?ektuQKPExZHEqAa2dCD7XmyjMIxluce9dlI5Wbnu+FlfMKvVnJWjdTklyMPI?= =?us-ascii?Q?TwaPT+RoyKCZMOX698aUu0MDFHNQ8vhnpCAglWnmYtFoWmE44if4amkKG66o?= =?us-ascii?Q?rOdA3Ydehp7fwKe0S26v69yvBrbZgM9UxRDnIrhuF9u4jUAJaqPjyXHGI1az?= =?us-ascii?Q?/afWW7dT1F/QWuXQpRMrmDKJ46yiV/fqndBbK7XYkkXSkbN/IQ5EtlmA3rUK?= =?us-ascii?Q?5A8QsLX4eF+9v0MfbXAouyxz8yFXofh4QusF/mj45X6PwJdYo/sdadZ10SkL?= =?us-ascii?Q?nPsm/EshS5Cb0LzArQAj9uaBt9RHzOAYv+aMhCd0e1lXNxijb8/nwq2W6yWX?= =?us-ascii?Q?wEqET6tv3LvSyVhUCPAtlV5kpOjTDLywEaNexhnj957ijffBznTWpCmd+gIB?= =?us-ascii?Q?vbGwTos6YS8wo4hUQl+2KMyQ3nAEJjgobpMWNY5p8xzVMfqfxoJl0iioyz8E?= =?us-ascii?Q?agwbaewcZKj69pe/Th0/OsiiDc4UZteT2CxOKZAn+Tl9pvdDJyw+8rHg2EM5?= =?us-ascii?Q?HHBL8pY6nDSwM5HUArcHxxZYaC+S4+8PZq7y2pFXC/k9ZuKi8+Um/oRA/5O0?= =?us-ascii?Q?Y3fqiIp+Ju43xEac2OmuTXyEAcwaXYFpagrPmTCsVid2K7l4cTZNquRt0Q0B?= =?us-ascii?Q?KBVMNX3kRIOWbcy8OKZvG/7oLkMlgJxZfKSDHNxo/kzxuLzm8IntI+1ktCOF?= =?us-ascii?Q?fGuOFZ1a/4LFGTT0W5L87NufyDNNw7nh9Lbpdhp1rCEfipeV4SKjbhHTHXjQ?= =?us-ascii?Q?bhSZwb2mYQnPravzJ3Qes5YRrej2K4l+nYkNHTy6BIRULhnmmPPwRO27r8cs?= =?us-ascii?Q?1d7SeoP/33SrMAxOD5VRrQjnSSnk=3D?= X-Microsoft-Antispam-Message-Info: 04fEuwSdmZ4DbM2qql6IxZ8/hLRDFHb4xMHUo7L3Rbc4GQ9kIP6ne1pz6mzWbzaONgkmirUuQMDjdjbWmDq13LotgXw1SIf21/HMQ4p1RcP1ttadozoxnUkcpvJobX87St8ynOKJu01HHQsS+vyrQbibvuQ5NO2IPTpt6NSOD0kgCVdxph/rLlpqzgTa8XViL+CY/K6EcPoqReXvjcYbx+NECPJaL07yG4eh3bJjYUiLbm4WWiVTkDflBW6mbnBeSlka8dYFoPbzcnvdxDRsvYfARVsHgrxGR/Hk2Pqp2xn0/E83XsvHsn0cXemLXDy+RJKStFbmVylCGdgOmNQ+8M6Q0yyg4DcvTFGYQQaqaDA= X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 6:LWC0ydnlg+IjdzZWutM18zRuLiXBCvaEba1FRSzAZjCyY7ozx7jxf7YbSi+7wHn5DcrdsP/EVWZS+xjPqOLtoU2EPVCP8p7pxeSaWmM0etXn3cWXSJdACygH3GM/vzQQgbLvPXS1xOCJ5I3Ln7L/bIYZnjSTVPvJK+z+okEaQc/97FuIREFII2Odx6fiw34zyuao5lQu/zCgoAIaIWGggToNwNtnQg7HYF4l9qo2NAiM+ZdqoNrOiHbj+/VkasAop7HoYy7y9OdL02ZQ4eGpwuGOB6GXkk6RxNNQtlYM9Bny3KNOFpjd8Z56XfrH6+h3ENcQ25Wh4ryEicF0Li49ZemsFXWQktyjR8prPIj6IsG64VNT1W/eYZ0cNsJ7a/mLxadXtGnPPMQyJ3ztItEsDiImhFXlh2i+PkZeqOXqs17O40Q2xCAB5S1TravL0NKTdp84YKWruzNo7iDMMxs6nw==; 5:6cLKOxmk7lqenyFR1I9SyLlyEBDIjmuVz7vnXTlXIwKCk2GxDpc2cR62kwMS9RegpVM3F6OePRiche4FpuvtCuMHe3aTikaUJS1oij6Zeq4pH+BKqSvDw+cf+4mNO09sNggyd5cI4lmaUUAePnGgy/SZnrayen6JyiSSKYHCLnE=; 24:Gtotbj4DegLLWAFVwxOib8uX88vzLR59LbUw3rCfNYQnyaMhM+lkhywojgKt3oTmEXXpvUUwd0FU1Es/2Q83q3oH+AV3buyN6+d7Qd4ES5g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3747; 7:VRcreZlD1ktagBn9r3QIG1DlNOVC6gtlZBVy8InW21uDitI+YZ5dZ9fjIxJ78azl/Ln8cGbUKfvaraxVgJXifEB7c1Xy/7TTzhDg0nGSRprviScitqAlLzBh3JkM4eMqbDF84mgNM1Y63J2OEi2+JPnHtbMZsCfXBZv6gorVu32h0wfxeviNYuOpfbulXc8D4sb4NY4iTUWjPZI1a154WUTqKX7Zd3ywVHCf3OI2fbio1MgifrmanrQs6SwbGMDM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 13:24:13.4265 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 853cfdf3-42d5-4297-c3c3-08d5dcfa717b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3747 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 207 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 28 Jun 2018 13:24:17 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Thu, 28 Jun 2018 13:24:17 +0000 (UTC) for IP:'104.47.32.48' DOMAIN:'mail-sn1nam01on0048.outbound.protection.outlook.com' HELO:'NAM01-SN1-obe.outbound.protection.outlook.com' FROM:'JaiSingh.Rana@cavium.com' RCPT:'' X-RedHat-Spam-Score: -0.022 (DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, T_DKIMWL_WL_MED) 104.47.32.48 mail-sn1nam01on0048.outbound.protection.outlook.com 104.47.32.48 mail-sn1nam01on0048.outbound.protection.outlook.com X-Scanned-By: MIMEDefang 2.83 on 10.5.110.25 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Thu, 28 Jun 2018 09:50:20 -0400 Cc: jai.rana@gmail.com, Jai Singh Rana Subject: [libvirt] [PATCH v4 6/6] docs: Update news about Network stats support for VF Representor X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Thu, 28 Jun 2018 13:50:38 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jai Singh Rana --- docs/news.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 468d34093a..c6394a8f0f 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -130,6 +130,15 @@ or virStorageVolCreateXMLFrom. + + + qemu: Support interface network stats for VF Representors + + + Interface network stats are supported now for SR-IOV device(host= dev) + if this interface has VF representor on host in switchdev mode. + +
--=20 2.13.7 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list