From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317610996500.477841755691; Tue, 9 May 2017 01:13:30 -0700 (PDT) Received: from localhost ([::1]:35658 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Gv-0005hs-Lb for importer@patchew.org; Tue, 09 May 2017 04:13:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AX-00083Q-OT for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AS-0007VI-6B for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42392) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AR-0007TW-Vx for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:48 -0400 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 0CA503D942 for ; Tue, 9 May 2017 08:06:47 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C78987836D; Tue, 9 May 2017 08:06:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 43AA4113864C; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0CA503D942 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0CA503D942 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:18 +0200 Message-Id: <1494317205-2211-2-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.30]); Tue, 09 May 2017 08:06:47 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 01/28] tests/check-qdict: Fix missing brackets X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: "Dr. David Alan Gilbert" Gcc 7 (on Fedora 26) spotted odd use of integers instead of a boolean; it's got a point. Signed-off-by: Dr. David Alan Gilbert Message-Id: <20170406154107.9178-1-dgilbert@redhat.com> Reviewed-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Markus Armbruster Signed-off-by: Markus Armbruster --- tests/check-qdict.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/check-qdict.c b/tests/check-qdict.c index 81162ee..6f3fbcf 100644 --- a/tests/check-qdict.c +++ b/tests/check-qdict.c @@ -559,7 +559,7 @@ static void qdict_join_test(void) g_assert(qdict_size(dict1) =3D=3D 2); g_assert(qdict_size(dict2) =3D=3D !overwrite); =20 - g_assert(qdict_get_int(dict1, "foo") =3D=3D overwrite ? 84 : 42); + g_assert(qdict_get_int(dict1, "foo") =3D=3D (overwrite ? 84 : 42)); g_assert(qdict_get_int(dict1, "bar") =3D=3D 23); =20 if (!overwrite) { --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317754849933.2644047346771; Tue, 9 May 2017 01:15:54 -0700 (PDT) Received: from localhost ([::1]:35673 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80JF-0008GN-Cr for importer@patchew.org; Tue, 09 May 2017 04:15:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Aa-00084o-7w for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AU-0007XB-1o for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40372) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007WE-S2 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:49 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DF9C380C0E for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C993A7E91C; Tue, 9 May 2017 08:06:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 45CAE11386CB; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DF9C380C0E Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DF9C380C0E From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:19 +0200 Message-Id: <1494317205-2211-3-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 09 May 2017 08:06:49 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 02/28] test-keyval: fix leaks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Spotted by ASAN. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170503223846.6559-2-marcandre.lureau@redhat.com> Reviewed-by: Eric blake Signed-off-by: Markus Armbruster --- tests/test-keyval.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test-keyval.c b/tests/test-keyval.c index ba19560..c556b1b 100644 --- a/tests/test-keyval.c +++ b/tests/test-keyval.c @@ -628,6 +628,7 @@ static void test_keyval_visit_alternate(void) visit_type_AltNumStr(v, "a", &ans, &error_abort); g_assert_cmpint(ans->type, =3D=3D, QTYPE_QSTRING); g_assert_cmpstr(ans->u.s, =3D=3D, "1"); + qapi_free_AltNumStr(ans); visit_type_AltNumInt(v, "a", &ani, &err); error_free_or_abort(&err); visit_end_struct(v, NULL); @@ -651,9 +652,12 @@ static void test_keyval_visit_any(void) g_assert(qlist); qstr =3D qobject_to_qstring(qlist_pop(qlist)); g_assert_cmpstr(qstring_get_str(qstr), =3D=3D, "null"); + QDECREF(qstr); qstr =3D qobject_to_qstring(qlist_pop(qlist)); g_assert_cmpstr(qstring_get_str(qstr), =3D=3D, "1"); g_assert(qlist_empty(qlist)); + QDECREF(qstr); + qobject_decref(any); visit_check_struct(v, &error_abort); visit_end_struct(v, NULL); visit_free(v); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317918128177.71568021600604; Tue, 9 May 2017 01:18:38 -0700 (PDT) Received: from localhost ([::1]:35682 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ls-0002AK-QE for importer@patchew.org; Tue, 09 May 2017 04:18:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44071) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AY-00083x-MR for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AS-0007VY-CY for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39336) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AS-0007Tv-3c for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:48 -0400 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 305C9C04B316 for ; Tue, 9 May 2017 08:06:47 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C99F188202; Tue, 9 May 2017 08:06:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 4906A11385E2; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 305C9C04B316 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 305C9C04B316 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:20 +0200 Message-Id: <1494317205-2211-4-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.31]); Tue, 09 May 2017 08:06:47 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 03/28] pci: Use struct instead of QDict to pass back parameters X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake It's simpler to just use a C struct than it is to bundle things into a QDict in one function just to pull them back out in the caller. Plus, doing this gets rid of one more user of dynamic JSON through qobject_from_jsonf(), as well as a memory leak of the QDict. While cleaning the code, fix things to report all errors (the code was previously silently ignoring a failure of pcie_aer_inject_error(), at a distance). Signed-off-by: Eric Blake Reviewed-by: Michael S. Tsirkin Reviewed-by: Marcel Apfelbaum Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-2-eblake@redhat.com> Signed-off-by: Markus Armbruster --- hw/pci/pcie_aer.c | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c index a8c1820..653af86 100644 --- a/hw/pci/pcie_aer.c +++ b/hw/pci/pcie_aer.c @@ -44,6 +44,13 @@ #define PCI_ERR_SRC_COR_OFFS 0 #define PCI_ERR_SRC_UNCOR_OFFS 2 =20 +typedef struct PCIEErrorDetails { + const char *id; + const char *root_bus; + int bus; + int devfn; +} PCIEErrorDetails; + /* From 6.2.7 Error Listing and Rules. Table 6-2, 6-3 and 6-4 */ static uint32_t pcie_aer_uncor_default_severity(uint32_t status) { @@ -942,8 +949,14 @@ static int pcie_aer_parse_error_string(const char *err= or_name, return -EINVAL; } =20 +/* + * Inject an error described by @qdict. + * On success, set @details to show where error was sent. + * Return negative errno if injection failed and a message was emitted. + */ static int do_pcie_aer_inject_error(Monitor *mon, - const QDict *qdict, QObject **ret_data) + const QDict *qdict, + PCIEErrorDetails *details) { const char *id =3D qdict_get_str(qdict, "id"); const char *error_name; @@ -1005,33 +1018,28 @@ static int do_pcie_aer_inject_error(Monitor *mon, err.prefix[3] =3D qdict_get_try_int(qdict, "prefix3", 0); =20 ret =3D pcie_aer_inject_error(dev, &err); - *ret_data =3D qobject_from_jsonf("{'id': %s, " - "'root_bus': %s, 'bus': %d, 'devfn': %d= , " - "'ret': %d}", - id, pci_root_bus_path(dev), - pci_bus_num(dev->bus), dev->devfn, - ret); - assert(*ret_data); + if (ret < 0) { + monitor_printf(mon, "failed to inject error: %s\n", + strerror(-ret)); + return ret; + } + details->id =3D id; + details->root_bus =3D pci_root_bus_path(dev); + details->bus =3D pci_bus_num(dev->bus); + details->devfn =3D dev->devfn; =20 return 0; } =20 void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict) { - QObject *data; - int devfn; + PCIEErrorDetails data; =20 if (do_pcie_aer_inject_error(mon, qdict, &data) < 0) { return; } =20 - qdict =3D qobject_to_qdict(data); - assert(qdict); - - devfn =3D (int)qdict_get_int(qdict, "devfn"); monitor_printf(mon, "OK id: %s root bus: %s, bus: %x devfn: %x.%x\n", - qdict_get_str(qdict, "id"), - qdict_get_str(qdict, "root_bus"), - (int) qdict_get_int(qdict, "bus"), - PCI_SLOT(devfn), PCI_FUNC(devfn)); + data.id, data.root_bus, data.bus, + PCI_SLOT(data.devfn), PCI_FUNC(data.devfn)); } --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317331684581.4182774578748; Tue, 9 May 2017 01:08:51 -0700 (PDT) Received: from localhost ([::1]:35638 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80CQ-0001U0-7F for importer@patchew.org; Tue, 09 May 2017 04:08:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AX-000835-6r for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AS-0007VD-5H for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35060) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AR-0007TV-V0 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:48 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0B75D804E0 for ; Tue, 9 May 2017 08:06:47 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CB80560466; Tue, 9 May 2017 08:06:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 4BD1611385EF; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0B75D804E0 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0B75D804E0 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:21 +0200 Message-Id: <1494317205-2211-5-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 09 May 2017 08:06:47 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 04/28] pci: Reduce scope of error injection X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Eric Blake No one outside of pcie_aer.h was using error injection; mark them static for internal use. Signed-off-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Reviewed-by: Marcel Apfelbaum Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-3-eblake@redhat.com> Signed-off-by: Markus Armbruster --- hw/pci/pcie_aer.c | 4 ++-- include/hw/pci/pcie_aer.h | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c index 653af86..828052b 100644 --- a/hw/pci/pcie_aer.c +++ b/hw/pci/pcie_aer.c @@ -376,7 +376,7 @@ static void pcie_aer_msg_root_port(PCIDevice *dev, cons= t PCIEAERMsg *msg) * * Walk up the bus tree from the device, propagate the error message. */ -void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg) +static void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg) { uint8_t type; =20 @@ -631,7 +631,7 @@ static bool pcie_aer_inject_uncor_error(PCIEAERInject *= inj, bool is_fatal) * Figure 6-2: Flowchart Showing Sequence of Device Error Signaling and Lo= gging * Operations */ -int pcie_aer_inject_error(PCIDevice *dev, const PCIEAERErr *err) +static int pcie_aer_inject_error(PCIDevice *dev, const PCIEAERErr *err) { uint8_t *aer_cap =3D NULL; uint16_t devctl =3D 0; diff --git a/include/hw/pci/pcie_aer.h b/include/hw/pci/pcie_aer.h index 526802b..729a943 100644 --- a/include/hw/pci/pcie_aer.h +++ b/include/hw/pci/pcie_aer.h @@ -100,8 +100,4 @@ void pcie_aer_root_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, int len, uint32_t root_cmd_prev); =20 -/* error injection */ -int pcie_aer_inject_error(PCIDevice *dev, const PCIEAERErr *err); -void pcie_aer_msg(PCIDevice *dev, const PCIEAERMsg *msg); - #endif /* QEMU_PCIE_AER_H */ --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317325912799.9515275396841; Tue, 9 May 2017 01:08:45 -0700 (PDT) Received: from localhost ([::1]:35637 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80CI-0001NT-IP for importer@patchew.org; Tue, 09 May 2017 04:08:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44079) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AZ-00084d-VA for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AT-0007Wl-Rm for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35110) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007Vz-Lo for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:49 -0400 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 B26E2804E2 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5664B53C35; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 4EA381138606; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B26E2804E2 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B26E2804E2 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:22 +0200 Message-Id: <1494317205-2211-6-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.27]); Tue, 09 May 2017 08:06:48 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 05/28] coccinelle: Add script to remove useless QObject casts X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake We have macros in place to make it less verbose to add a subtype of QObject to both QDict and QList. While we have made cleanups like this in the past (see commit fcfcd8ffc, for example), having it be automated by Coccinelle makes it easier to maintain. The script is separate from the cleanups, for ease of review and backporting. A later patch will then add further possible cleanups. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-4-eblake@redhat.com> Signed-off-by: Markus Armbruster --- MAINTAINERS | 1 + scripts/coccinelle/qobject.cocci | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 scripts/coccinelle/qobject.cocci diff --git a/MAINTAINERS b/MAINTAINERS index efdec47..66c9734 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1393,6 +1393,7 @@ S: Supported F: qobject/ F: include/qapi/qmp/ X: include/qapi/qmp/dispatch.h +F: scripts/coccinelle/qobject.cocci F: tests/check-qdict.c F: tests/check-qfloat.c F: tests/check-qint.c diff --git a/scripts/coccinelle/qobject.cocci b/scripts/coccinelle/qobject.= cocci new file mode 100644 index 0000000..aa899e2 --- /dev/null +++ b/scripts/coccinelle/qobject.cocci @@ -0,0 +1,13 @@ +// Use QDict macros where they make sense +@@ +expression Obj, Key, E; +@@ +- qdict_put_obj(Obj, Key, QOBJECT(E)); ++ qdict_put(Obj, Key, E); + +// Use QList macros where they make sense +@@ +expression Obj, E; +@@ +- qlist_append_obj(Obj, QOBJECT(E)); ++ qlist_append(Obj, E); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317914689964.3566961619026; Tue, 9 May 2017 01:18:34 -0700 (PDT) Received: from localhost ([::1]:35681 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Lp-00026B-97 for importer@patchew.org; Tue, 09 May 2017 04:18:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44097) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Aa-000856-QV for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AU-0007XP-4c for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42118) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007WF-Rg for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:50 -0400 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 DF0E461D15 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 56764173C6; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 51A3C1138609; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DF0E461D15 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DF0E461D15 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:23 +0200 Message-Id: <1494317205-2211-7-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.39]); Tue, 09 May 2017 08:06:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 06/28] qobject: Drop useless QObject casts X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake We have macros in place to make it less verbose to add a subtype of QObject to both QDict and QList. While we have made cleanups like this in the past (see commit fcfcd8ffc, for example), having it be automated by Coccinelle makes it easier to maintain. Patch created mechanically via: spatch --sp-file scripts/coccinelle/qobject.cocci \ --macro-file scripts/cocci-macro-file.h --dir . --in-place then I verified that no manual touchups were required. Signed-off-by: Eric Blake Reviewed-by: Stefan Hajnoczi Reviewed-by: Alberto Garcia Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-5-eblake@redhat.com> Signed-off-by: Markus Armbruster --- block.c | 12 ++++-------- block/blkdebug.c | 4 ++-- block/blkverify.c | 7 +++---- block/file-posix.c | 6 +++--- block/file-win32.c | 4 ++-- block/quorum.c | 16 ++++++---------- tests/check-qdict.c | 20 ++++++++++---------- tests/test-qmp-commands.c | 24 ++++++++++++------------ 8 files changed, 42 insertions(+), 51 deletions(-) diff --git a/block.c b/block.c index 6c6bb3e..cb5856b 100644 --- a/block.c +++ b/block.c @@ -4712,11 +4712,9 @@ void bdrv_refresh_filename(BlockDriverState *bs) * contain a representation of the filename, therefore the followi= ng * suffices without querying the (exact_)filename of this BDS. */ if (bs->file->bs->full_open_options) { - qdict_put_obj(opts, "driver", - QOBJECT(qstring_from_str(drv->format_name))); + qdict_put(opts, "driver", qstring_from_str(drv->format_name)); QINCREF(bs->file->bs->full_open_options); - qdict_put_obj(opts, "file", - QOBJECT(bs->file->bs->full_open_options)); + qdict_put(opts, "file", bs->file->bs->full_open_options); =20 bs->full_open_options =3D opts; } else { @@ -4732,8 +4730,7 @@ void bdrv_refresh_filename(BlockDriverState *bs) =20 opts =3D qdict_new(); append_open_options(opts, bs); - qdict_put_obj(opts, "driver", - QOBJECT(qstring_from_str(drv->format_name))); + qdict_put(opts, "driver", qstring_from_str(drv->format_name)); =20 if (bs->exact_filename[0]) { /* This may not work for all block protocol drivers (some may @@ -4743,8 +4740,7 @@ void bdrv_refresh_filename(BlockDriverState *bs) * needs some special format of the options QDict, it needs to * implement the driver-specific bdrv_refresh_filename() funct= ion. */ - qdict_put_obj(opts, "filename", - QOBJECT(qstring_from_str(bs->exact_filename))); + qdict_put(opts, "filename", qstring_from_str(bs->exact_filenam= e)); } =20 bs->full_open_options =3D opts; diff --git a/block/blkdebug.c b/block/blkdebug.c index d2a7561..16322d8 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -693,10 +693,10 @@ static void blkdebug_refresh_filename(BlockDriverStat= e *bs, QDict *options) } =20 opts =3D qdict_new(); - qdict_put_obj(opts, "driver", QOBJECT(qstring_from_str("blkdebug"))); + qdict_put(opts, "driver", qstring_from_str("blkdebug")); =20 QINCREF(bs->file->bs->full_open_options); - qdict_put_obj(opts, "image", QOBJECT(bs->file->bs->full_open_options)); + qdict_put(opts, "image", bs->file->bs->full_open_options); =20 for (e =3D qdict_first(options); e; e =3D qdict_next(options, e)) { if (strcmp(qdict_entry_key(e), "x-image")) { diff --git a/block/blkverify.c b/block/blkverify.c index af23281..cc29cd2 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -288,13 +288,12 @@ static void blkverify_refresh_filename(BlockDriverSta= te *bs, QDict *options) && s->test_file->bs->full_open_options) { QDict *opts =3D qdict_new(); - qdict_put_obj(opts, "driver", QOBJECT(qstring_from_str("blkverify"= ))); + qdict_put(opts, "driver", qstring_from_str("blkverify")); =20 QINCREF(bs->file->bs->full_open_options); - qdict_put_obj(opts, "raw", QOBJECT(bs->file->bs->full_open_options= )); + qdict_put(opts, "raw", bs->file->bs->full_open_options); QINCREF(s->test_file->bs->full_open_options); - qdict_put_obj(opts, "test", - QOBJECT(s->test_file->bs->full_open_options)); + qdict_put(opts, "test", s->test_file->bs->full_open_options); =20 bs->full_open_options =3D opts; } diff --git a/block/file-posix.c b/block/file-posix.c index 1941fb6..fc4b052 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -375,7 +375,7 @@ static void raw_parse_filename(const char *filename, QD= ict *options, * function call can be ignored. */ strstart(filename, "file:", &filename); =20 - qdict_put_obj(options, "filename", QOBJECT(qstring_from_str(filename))= ); + qdict_put(options, "filename", qstring_from_str(filename)); } =20 static QemuOptsList raw_runtime_opts =3D { @@ -2155,7 +2155,7 @@ static void hdev_parse_filename(const char *filename,= QDict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_device:", &filename); =20 - qdict_put_obj(options, "filename", QOBJECT(qstring_from_str(filename))= ); + qdict_put(options, "filename", qstring_from_str(filename)); } =20 static bool hdev_is_sg(BlockDriverState *bs) @@ -2454,7 +2454,7 @@ static void cdrom_parse_filename(const char *filename= , QDict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_cdrom:", &filename); =20 - qdict_put_obj(options, "filename", QOBJECT(qstring_from_str(filename))= ); + qdict_put(options, "filename", qstring_from_str(filename)); } #endif =20 diff --git a/block/file-win32.c b/block/file-win32.c index 7872e00..c4a6be7 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -281,7 +281,7 @@ static void raw_parse_filename(const char *filename, QD= ict *options, * function call can be ignored. */ strstart(filename, "file:", &filename); =20 - qdict_put_obj(options, "filename", QOBJECT(qstring_from_str(filename))= ); + qdict_put(options, "filename", qstring_from_str(filename)); } =20 static QemuOptsList raw_runtime_opts =3D { @@ -668,7 +668,7 @@ static void hdev_parse_filename(const char *filename, Q= Dict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_device:", &filename); =20 - qdict_put_obj(options, "filename", QOBJECT(qstring_from_str(filename))= ); + qdict_put(options, "filename", qstring_from_str(filename)); } =20 static int hdev_open(BlockDriverState *bs, QDict *options, int flags, diff --git a/block/quorum.c b/block/quorum.c index 40205fb..f7949e2 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -1096,19 +1096,15 @@ static void quorum_refresh_filename(BlockDriverStat= e *bs, QDict *options) children =3D qlist_new(); for (i =3D 0; i < s->num_children; i++) { QINCREF(s->children[i]->bs->full_open_options); - qlist_append_obj(children, - QOBJECT(s->children[i]->bs->full_open_options)); + qlist_append(children, s->children[i]->bs->full_open_options); } =20 opts =3D qdict_new(); - qdict_put_obj(opts, "driver", QOBJECT(qstring_from_str("quorum"))); - qdict_put_obj(opts, QUORUM_OPT_VOTE_THRESHOLD, - QOBJECT(qint_from_int(s->threshold))); - qdict_put_obj(opts, QUORUM_OPT_BLKVERIFY, - QOBJECT(qbool_from_bool(s->is_blkverify))); - qdict_put_obj(opts, QUORUM_OPT_REWRITE, - QOBJECT(qbool_from_bool(s->rewrite_corrupted))); - qdict_put_obj(opts, "children", QOBJECT(children)); + qdict_put(opts, "driver", qstring_from_str("quorum")); + qdict_put(opts, QUORUM_OPT_VOTE_THRESHOLD, qint_from_int(s->threshold)= ); + qdict_put(opts, QUORUM_OPT_BLKVERIFY, qbool_from_bool(s->is_blkverify)= ); + qdict_put(opts, QUORUM_OPT_REWRITE, qbool_from_bool(s->rewrite_corrupt= ed)); + qdict_put(opts, "children", children); =20 bs->full_open_options =3D opts; } diff --git a/tests/check-qdict.c b/tests/check-qdict.c index 6f3fbcf..3cb72fb 100644 --- a/tests/check-qdict.c +++ b/tests/check-qdict.c @@ -47,7 +47,7 @@ static void qdict_put_obj_test(void) qdict =3D qdict_new(); =20 // key "" will have tdb hash 12345 - qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num))); + qdict_put(qdict, "", qint_from_int(num)); =20 g_assert(qdict_size(qdict) =3D=3D 1); ent =3D QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]); @@ -66,8 +66,8 @@ static void qdict_destroy_simple_test(void) QDict *qdict; =20 qdict =3D qdict_new(); - qdict_put_obj(qdict, "num", QOBJECT(qint_from_int(0))); - qdict_put_obj(qdict, "str", QOBJECT(qstring_from_str("foo"))); + qdict_put(qdict, "num", qint_from_int(0)); + qdict_put(qdict, "str", qstring_from_str("foo")); =20 QDECREF(qdict); } @@ -297,16 +297,16 @@ static void qdict_flatten_test(void) qdict_put(dict1, "a", qint_from_int(0)); qdict_put(dict1, "b", qint_from_int(1)); =20 - qlist_append_obj(list1, QOBJECT(qint_from_int(23))); - qlist_append_obj(list1, QOBJECT(qint_from_int(66))); - qlist_append_obj(list1, QOBJECT(dict1)); - qlist_append_obj(list2, QOBJECT(qint_from_int(42))); - qlist_append_obj(list2, QOBJECT(list1)); + qlist_append(list1, qint_from_int(23)); + qlist_append(list1, qint_from_int(66)); + qlist_append(list1, dict1); + qlist_append(list2, qint_from_int(42)); + qlist_append(list2, list1); =20 qdict_put(dict2, "c", qint_from_int(2)); qdict_put(dict2, "d", qint_from_int(3)); - qdict_put_obj(dict3, "e", QOBJECT(list2)); - qdict_put_obj(dict3, "f", QOBJECT(dict2)); + qdict_put(dict3, "e", list2); + qdict_put(dict3, "f", dict2); qdict_put(dict3, "g", qint_from_int(4)); =20 qdict_flatten(dict3); diff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c index 0f81a98..ac3fd03 100644 --- a/tests/test-qmp-commands.c +++ b/tests/test-qmp-commands.c @@ -94,7 +94,7 @@ static void test_dispatch_cmd(void) QDict *req =3D qdict_new(); QObject *resp; =20 - qdict_put_obj(req, "execute", QOBJECT(qstring_from_str("user_def_cmd")= )); + qdict_put(req, "execute", qstring_from_str("user_def_cmd")); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -111,7 +111,7 @@ static void test_dispatch_cmd_failure(void) QDict *args =3D qdict_new(); QObject *resp; =20 - qdict_put_obj(req, "execute", QOBJECT(qstring_from_str("user_def_cmd2"= ))); + qdict_put(req, "execute", qstring_from_str("user_def_cmd2")); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -125,7 +125,7 @@ static void test_dispatch_cmd_failure(void) qdict_put(args, "a", qint_from_int(66)); qdict_put(req, "arguments", args); =20 - qdict_put_obj(req, "execute", QOBJECT(qstring_from_str("user_def_cmd")= )); + qdict_put(req, "execute", qstring_from_str("user_def_cmd")); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -164,14 +164,14 @@ static void test_dispatch_cmd_io(void) QDict *ret_dict_dict2, *ret_dict_dict2_userdef; QInt *ret3; =20 - qdict_put_obj(ud1a, "integer", QOBJECT(qint_from_int(42))); - qdict_put_obj(ud1a, "string", QOBJECT(qstring_from_str("hello"))); - qdict_put_obj(ud1b, "integer", QOBJECT(qint_from_int(422))); - qdict_put_obj(ud1b, "string", QOBJECT(qstring_from_str("hello2"))); - qdict_put_obj(args, "ud1a", QOBJECT(ud1a)); - qdict_put_obj(args, "ud1b", QOBJECT(ud1b)); - qdict_put_obj(req, "arguments", QOBJECT(args)); - qdict_put_obj(req, "execute", QOBJECT(qstring_from_str("user_def_cmd2"= ))); + qdict_put(ud1a, "integer", qint_from_int(42)); + qdict_put(ud1a, "string", qstring_from_str("hello")); + qdict_put(ud1b, "integer", qint_from_int(422)); + qdict_put(ud1b, "string", qstring_from_str("hello2")); + qdict_put(args, "ud1a", ud1a); + qdict_put(args, "ud1b", ud1b); + qdict_put(req, "arguments", args); + qdict_put(req, "execute", qstring_from_str("user_def_cmd2")); =20 ret =3D qobject_to_qdict(test_qmp_dispatch(req)); =20 @@ -244,7 +244,7 @@ static void test_dealloc_partial(void) Visitor *v; =20 ud2_dict =3D qdict_new(); - qdict_put_obj(ud2_dict, "string0", QOBJECT(qstring_from_str(text))= ); + qdict_put(ud2_dict, "string0", qstring_from_str(text)); =20 v =3D qobject_input_visitor_new(QOBJECT(ud2_dict)); visit_type_UserDefTwo(v, NULL, &ud2, &err); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317466373897.8840952229887; Tue, 9 May 2017 01:11:06 -0700 (PDT) Received: from localhost ([::1]:35649 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Eb-0003Uh-1x for importer@patchew.org; Tue, 09 May 2017 04:11:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085I-0M for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AU-0007Xa-8S for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48836) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007WO-Vp for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:50 -0400 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 0078F80460 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 578FE782DE; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 54BBD1138612; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0078F80460 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0078F80460 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:24 +0200 Message-Id: <1494317205-2211-8-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.28]); Tue, 09 May 2017 08:06:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 07/28] qobject: Add helper macros for common scalar insertions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake Rather than making lots of callers wrap a scalar in a QInt, QString, or QBool, provide helper macros that do the wrapping automatically. Update the Coccinelle script to make mass conversions easy, although the conversion itself will be done as a separate patches to ease review and backport efforts. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-6-eblake@redhat.com> Signed-off-by: Markus Armbruster --- include/qapi/qmp/qdict.h | 8 ++++++++ include/qapi/qmp/qlist.h | 8 ++++++++ scripts/coccinelle/qobject.cocci | 22 ++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/include/qapi/qmp/qdict.h b/include/qapi/qmp/qdict.h index fe9a4c5..188440a 100644 --- a/include/qapi/qmp/qdict.h +++ b/include/qapi/qmp/qdict.h @@ -52,6 +52,14 @@ void qdict_destroy_obj(QObject *obj); #define qdict_put(qdict, key, obj) \ qdict_put_obj(qdict, key, QOBJECT(obj)) =20 +/* Helpers for int, bool, and string */ +#define qdict_put_int(qdict, key, value) \ + qdict_put(qdict, key, qint_from_int(value)) +#define qdict_put_bool(qdict, key, value) \ + qdict_put(qdict, key, qbool_from_bool(value)) +#define qdict_put_str(qdict, key, value) \ + qdict_put(qdict, key, qstring_from_str(value)) + /* High level helpers */ double qdict_get_double(const QDict *qdict, const char *key); int64_t qdict_get_int(const QDict *qdict, const char *key); diff --git a/include/qapi/qmp/qlist.h b/include/qapi/qmp/qlist.h index a84117e..5dc4ed9 100644 --- a/include/qapi/qmp/qlist.h +++ b/include/qapi/qmp/qlist.h @@ -29,6 +29,14 @@ typedef struct QList { #define qlist_append(qlist, obj) \ qlist_append_obj(qlist, QOBJECT(obj)) =20 +/* Helpers for int, bool, and string */ +#define qlist_append_int(qlist, value) \ + qlist_append(qlist, qint_from_int(value)) +#define qlist_append_bool(qlist, value) \ + qlist_append(qlist, qbool_from_bool(value)) +#define qlist_append_str(qlist, value) \ + qlist_append(qlist, qstring_from_str(value)) + #define QLIST_FOREACH_ENTRY(qlist, var) \ for ((var) =3D ((qlist)->head.tqh_first); \ (var); \ diff --git a/scripts/coccinelle/qobject.cocci b/scripts/coccinelle/qobject.= cocci index aa899e2..97703a4 100644 --- a/scripts/coccinelle/qobject.cocci +++ b/scripts/coccinelle/qobject.cocci @@ -2,12 +2,34 @@ @@ expression Obj, Key, E; @@ +( - qdict_put_obj(Obj, Key, QOBJECT(E)); + qdict_put(Obj, Key, E); +| +- qdict_put(Obj, Key, qint_from_int(E)); ++ qdict_put_int(Obj, Key, E); +| +- qdict_put(Obj, Key, qbool_from_bool(E)); ++ qdict_put_bool(Obj, Key, E); +| +- qdict_put(Obj, Key, qstring_from_str(E)); ++ qdict_put_str(Obj, Key, E); +) =20 // Use QList macros where they make sense @@ expression Obj, E; @@ +( - qlist_append_obj(Obj, QOBJECT(E)); + qlist_append(Obj, E); +| +- qlist_append(Obj, qint_from_int(E)); ++ qlist_append_int(Obj, E); +| +- qlist_append(Obj, qbool_from_bool(E)); ++ qlist_append_bool(Obj, E); +| +- qlist_append(Obj, qstring_from_str(E)); ++ qlist_append_str(Obj, E); +) --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317770557232.9344258636628; Tue, 9 May 2017 01:16:10 -0700 (PDT) Received: from localhost ([::1]:35674 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80JU-0008Sj-RR for importer@patchew.org; Tue, 09 May 2017 04:16:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44148) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ac-000865-3l for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AU-0007YF-RY for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50372) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AU-0007Wc-AM for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:50 -0400 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 60143C059724 for ; Tue, 9 May 2017 08:06:49 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 58F2E782C6; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 57C50113861A; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 60143C059724 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 60143C059724 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:25 +0200 Message-Id: <1494317205-2211-9-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.32]); Tue, 09 May 2017 08:06:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 08/28] qobject: Use simpler QDict/QList scalar insertion macros X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake We now have macros in place to make it less verbose to add a scalar to QDict and QList, so use them. Patch created mechanically via: spatch --sp-file scripts/coccinelle/qobject.cocci \ --macro-file scripts/cocci-macro-file.h --dir . --in-place then touched up manually to fix a couple of '?:' back to original spacing, as well as avoiding a long line in monitor.c. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-7-eblake@redhat.com> Reviewed-by: Stefan Hajnoczi Reviewed-by: Alberto Garcia Signed-off-by: Markus Armbruster --- block.c | 45 +++++------- block/blkdebug.c | 6 +- block/blkverify.c | 6 +- block/curl.c | 2 +- block/file-posix.c | 8 +-- block/file-win32.c | 4 +- block/nbd.c | 41 ++++++----- block/nfs.c | 43 +++++------- block/null.c | 2 +- block/qcow2.c | 4 +- block/quorum.c | 8 +-- block/rbd.c | 16 ++--- block/snapshot.c | 2 +- block/ssh.c | 16 ++--- block/vvfat.c | 10 +-- block/vxhs.c | 6 +- blockdev.c | 30 ++++---- hw/block/xen_disk.c | 2 +- hw/usb/xen-usb.c | 12 ++-- monitor.c | 23 +++---- qapi/qmp-event.c | 2 +- qemu-img.c | 6 +- qemu-io.c | 2 +- qemu-nbd.c | 2 +- qobject/qdict.c | 2 +- target/s390x/cpu_models.c | 4 +- tests/check-qdict.c | 134 ++++++++++++++++++--------------= ---- tests/check-qlist.c | 4 +- tests/device-introspect-test.c | 4 +- tests/test-qemu-opts.c | 4 +- tests/test-qmp-commands.c | 24 +++---- tests/test-qmp-event.c | 30 ++++---- tests/test-qobject-output-visitor.c | 6 +- util/qemu-option.c | 2 +- 34 files changed, 244 insertions(+), 268 deletions(-) diff --git a/block.c b/block.c index cb5856b..aae8f7e 100644 --- a/block.c +++ b/block.c @@ -974,16 +974,14 @@ static void update_flags_from_options(int *flags, Qem= uOpts *opts) static void update_options_from_flags(QDict *options, int flags) { if (!qdict_haskey(options, BDRV_OPT_CACHE_DIRECT)) { - qdict_put(options, BDRV_OPT_CACHE_DIRECT, - qbool_from_bool(flags & BDRV_O_NOCACHE)); + qdict_put_bool(options, BDRV_OPT_CACHE_DIRECT, flags & BDRV_O_NOCA= CHE); } if (!qdict_haskey(options, BDRV_OPT_CACHE_NO_FLUSH)) { - qdict_put(options, BDRV_OPT_CACHE_NO_FLUSH, - qbool_from_bool(flags & BDRV_O_NO_FLUSH)); + qdict_put_bool(options, BDRV_OPT_CACHE_NO_FLUSH, + flags & BDRV_O_NO_FLUSH); } if (!qdict_haskey(options, BDRV_OPT_READ_ONLY)) { - qdict_put(options, BDRV_OPT_READ_ONLY, - qbool_from_bool(!(flags & BDRV_O_RDWR))); + qdict_put_bool(options, BDRV_OPT_READ_ONLY, !(flags & BDRV_O_RDWR)= ); } } =20 @@ -1399,7 +1397,7 @@ static int bdrv_fill_options(QDict **options, const c= har *filename, /* Fetch the file name from the options QDict if necessary */ if (protocol && filename) { if (!qdict_haskey(*options, "filename")) { - qdict_put(*options, "filename", qstring_from_str(filename)); + qdict_put_str(*options, "filename", filename); parse_filename =3D true; } else { error_setg(errp, "Can't specify 'file' and 'filename' options = at " @@ -1420,7 +1418,7 @@ static int bdrv_fill_options(QDict **options, const c= har *filename, } =20 drvname =3D drv->format_name; - qdict_put(*options, "driver", qstring_from_str(drvname)); + qdict_put_str(*options, "driver", drvname); } else { error_setg(errp, "Must specify either driver or file"); return -EINVAL; @@ -2075,7 +2073,7 @@ int bdrv_open_backing_file(BlockDriverState *bs, QDic= t *parent_options, } =20 if (bs->backing_format[0] !=3D '\0' && !qdict_haskey(options, "driver"= )) { - qdict_put(options, "driver", qstring_from_str(bs->backing_format)); + qdict_put_str(options, "driver", bs->backing_format); } =20 backing_hd =3D bdrv_open_inherit(*backing_filename ? backing_filename = : NULL, @@ -2230,12 +2228,9 @@ static BlockDriverState *bdrv_append_temp_snapshot(B= lockDriverState *bs, } =20 /* Prepare options QDict for the temporary file */ - qdict_put(snapshot_options, "file.driver", - qstring_from_str("file")); - qdict_put(snapshot_options, "file.filename", - qstring_from_str(tmp_filename)); - qdict_put(snapshot_options, "driver", - qstring_from_str("qcow2")); + qdict_put_str(snapshot_options, "file.driver", "file"); + qdict_put_str(snapshot_options, "file.filename", tmp_filename); + qdict_put_str(snapshot_options, "driver", "qcow2"); =20 bs_snapshot =3D bdrv_open(NULL, NULL, snapshot_options, flags, errp); snapshot_options =3D NULL; @@ -2410,8 +2405,7 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, goto fail; } =20 - qdict_put(options, "file", - qstring_from_str(bdrv_get_node_name(file_bs))); + qdict_put_str(options, "file", bdrv_get_node_name(file_bs)); } } =20 @@ -2433,8 +2427,8 @@ static BlockDriverState *bdrv_open_inherit(const char= *filename, * sure to update both bs->options (which has the full effective * options for bs) and options (which has file.* already removed). */ - qdict_put(bs->options, "driver", qstring_from_str(drv->format_name= )); - qdict_put(options, "driver", qstring_from_str(drv->format_name)); + qdict_put_str(bs->options, "driver", drv->format_name); + qdict_put_str(options, "driver", drv->format_name); } else if (!drv) { error_setg(errp, "Must specify either driver or file"); goto fail; @@ -2810,12 +2804,12 @@ int bdrv_reopen_prepare(BDRVReopenState *reopen_sta= te, BlockReopenQueue *queue, * that they are checked at the end of this function. */ value =3D qemu_opt_get(opts, "node-name"); if (value) { - qdict_put(reopen_state->options, "node-name", qstring_from_str(val= ue)); + qdict_put_str(reopen_state->options, "node-name", value); } =20 value =3D qemu_opt_get(opts, "driver"); if (value) { - qdict_put(reopen_state->options, "driver", qstring_from_str(value)= ); + qdict_put_str(reopen_state->options, "driver", value); } =20 /* If we are to stay read-only, do not allow permission change @@ -4306,8 +4300,7 @@ void bdrv_img_create(const char *filename, const char= *fmt, =20 if (backing_fmt) { backing_options =3D qdict_new(); - qdict_put(backing_options, "driver", - qstring_from_str(backing_fmt)); + qdict_put_str(backing_options, "driver", backing_fmt); } =20 bs =3D bdrv_open(full_backing, NULL, backing_options, back_fla= gs, @@ -4712,7 +4705,7 @@ void bdrv_refresh_filename(BlockDriverState *bs) * contain a representation of the filename, therefore the followi= ng * suffices without querying the (exact_)filename of this BDS. */ if (bs->file->bs->full_open_options) { - qdict_put(opts, "driver", qstring_from_str(drv->format_name)); + qdict_put_str(opts, "driver", drv->format_name); QINCREF(bs->file->bs->full_open_options); qdict_put(opts, "file", bs->file->bs->full_open_options); =20 @@ -4730,7 +4723,7 @@ void bdrv_refresh_filename(BlockDriverState *bs) =20 opts =3D qdict_new(); append_open_options(opts, bs); - qdict_put(opts, "driver", qstring_from_str(drv->format_name)); + qdict_put_str(opts, "driver", drv->format_name); =20 if (bs->exact_filename[0]) { /* This may not work for all block protocol drivers (some may @@ -4740,7 +4733,7 @@ void bdrv_refresh_filename(BlockDriverState *bs) * needs some special format of the options QDict, it needs to * implement the driver-specific bdrv_refresh_filename() funct= ion. */ - qdict_put(opts, "filename", qstring_from_str(bs->exact_filenam= e)); + qdict_put_str(opts, "filename", bs->exact_filename); } =20 bs->full_open_options =3D opts; diff --git a/block/blkdebug.c b/block/blkdebug.c index 16322d8..3c08893 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -301,7 +301,7 @@ static void blkdebug_parse_filename(const char *filenam= e, QDict *options, if (!strstart(filename, "blkdebug:", &filename)) { /* There was no prefix; therefore, all options have to be already present in the QDict (except for the filename) */ - qdict_put(options, "x-image", qstring_from_str(filename)); + qdict_put_str(options, "x-image", filename); return; } =20 @@ -320,7 +320,7 @@ static void blkdebug_parse_filename(const char *filenam= e, QDict *options, =20 /* TODO Allow multi-level nesting and set file.filename here */ filename =3D c + 1; - qdict_put(options, "x-image", qstring_from_str(filename)); + qdict_put_str(options, "x-image", filename); } =20 static QemuOptsList runtime_opts =3D { @@ -693,7 +693,7 @@ static void blkdebug_refresh_filename(BlockDriverState = *bs, QDict *options) } =20 opts =3D qdict_new(); - qdict_put(opts, "driver", qstring_from_str("blkdebug")); + qdict_put_str(opts, "driver", "blkdebug"); =20 QINCREF(bs->file->bs->full_open_options); qdict_put(opts, "image", bs->file->bs->full_open_options); diff --git a/block/blkverify.c b/block/blkverify.c index cc29cd2..6b0a603 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -67,7 +67,7 @@ static void blkverify_parse_filename(const char *filename= , QDict *options, if (!strstart(filename, "blkverify:", &filename)) { /* There was no prefix; therefore, all options have to be already present in the QDict (except for the filename) */ - qdict_put(options, "x-image", qstring_from_str(filename)); + qdict_put_str(options, "x-image", filename); return; } =20 @@ -84,7 +84,7 @@ static void blkverify_parse_filename(const char *filename= , QDict *options, =20 /* TODO Allow multi-level nesting and set file.filename here */ filename =3D c + 1; - qdict_put(options, "x-image", qstring_from_str(filename)); + qdict_put_str(options, "x-image", filename); } =20 static QemuOptsList runtime_opts =3D { @@ -288,7 +288,7 @@ static void blkverify_refresh_filename(BlockDriverState= *bs, QDict *options) && s->test_file->bs->full_open_options) { QDict *opts =3D qdict_new(); - qdict_put(opts, "driver", qstring_from_str("blkverify")); + qdict_put_str(opts, "driver", "blkverify"); =20 QINCREF(bs->file->bs->full_open_options); qdict_put(opts, "raw", bs->file->bs->full_open_options); diff --git a/block/curl.c b/block/curl.c index 2708d57..aa6e8cc 100644 --- a/block/curl.c +++ b/block/curl.c @@ -548,7 +548,7 @@ static void curl_clean_state(CURLState *s) static void curl_parse_filename(const char *filename, QDict *options, Error **errp) { - qdict_put(options, CURL_BLOCK_OPT_URL, qstring_from_str(filename)); + qdict_put_str(options, CURL_BLOCK_OPT_URL, filename); } =20 static void curl_detach_aio_context(BlockDriverState *bs) diff --git a/block/file-posix.c b/block/file-posix.c index fc4b052..19c48a0 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -375,7 +375,7 @@ static void raw_parse_filename(const char *filename, QD= ict *options, * function call can be ignored. */ strstart(filename, "file:", &filename); =20 - qdict_put(options, "filename", qstring_from_str(filename)); + qdict_put_str(options, "filename", filename); } =20 static QemuOptsList raw_runtime_opts =3D { @@ -2155,7 +2155,7 @@ static void hdev_parse_filename(const char *filename,= QDict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_device:", &filename); =20 - qdict_put(options, "filename", qstring_from_str(filename)); + qdict_put_str(options, "filename", filename); } =20 static bool hdev_is_sg(BlockDriverState *bs) @@ -2244,7 +2244,7 @@ static int hdev_open(BlockDriverState *bs, QDict *opt= ions, int flags, goto hdev_open_Mac_error; } =20 - qdict_put(options, "filename", qstring_from_str(bsd_path)); + qdict_put_str(options, "filename", bsd_path); =20 hdev_open_Mac_error: g_free(mediaType); @@ -2454,7 +2454,7 @@ static void cdrom_parse_filename(const char *filename= , QDict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_cdrom:", &filename); =20 - qdict_put(options, "filename", qstring_from_str(filename)); + qdict_put_str(options, "filename", filename); } #endif =20 diff --git a/block/file-win32.c b/block/file-win32.c index c4a6be7..d1eb0a1 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -281,7 +281,7 @@ static void raw_parse_filename(const char *filename, QD= ict *options, * function call can be ignored. */ strstart(filename, "file:", &filename); =20 - qdict_put(options, "filename", qstring_from_str(filename)); + qdict_put_str(options, "filename", filename); } =20 static QemuOptsList raw_runtime_opts =3D { @@ -668,7 +668,7 @@ static void hdev_parse_filename(const char *filename, Q= Dict *options, /* The prefix is optional, just as for "file". */ strstart(filename, "host_device:", &filename); =20 - qdict_put(options, "filename", qstring_from_str(filename)); + qdict_put_str(options, "filename", filename); } =20 static int hdev_open(BlockDriverState *bs, QDict *options, int flags, diff --git a/block/nbd.c b/block/nbd.c index 814ab26d..b3545f5 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -79,7 +79,7 @@ static int nbd_parse_uri(const char *filename, QDict *opt= ions) p =3D uri->path ? uri->path : "/"; p +=3D strspn(p, "/"); if (p[0]) { - qdict_put(options, "export", qstring_from_str(p)); + qdict_put_str(options, "export", p); } =20 qp =3D query_params_parse(uri->query); @@ -94,9 +94,8 @@ static int nbd_parse_uri(const char *filename, QDict *opt= ions) ret =3D -EINVAL; goto out; } - qdict_put(options, "server.type", qstring_from_str("unix")); - qdict_put(options, "server.path", - qstring_from_str(qp->p[0].value)); + qdict_put_str(options, "server.type", "unix"); + qdict_put_str(options, "server.path", qp->p[0].value); } else { QString *host; char *port_str; @@ -115,11 +114,11 @@ static int nbd_parse_uri(const char *filename, QDict = *options) host =3D qstring_from_str(uri->server); } =20 - qdict_put(options, "server.type", qstring_from_str("inet")); + qdict_put_str(options, "server.type", "inet"); qdict_put(options, "server.host", host); =20 port_str =3D g_strdup_printf("%d", uri->port ?: NBD_DEFAULT_PORT); - qdict_put(options, "server.port", qstring_from_str(port_str)); + qdict_put_str(options, "server.port", port_str); g_free(port_str); } =20 @@ -181,7 +180,7 @@ static void nbd_parse_filename(const char *filename, QD= ict *options, export_name[0] =3D 0; /* truncate 'file' */ export_name +=3D strlen(EN_OPTSTR); =20 - qdict_put(options, "export", qstring_from_str(export_name)); + qdict_put_str(options, "export", export_name); } =20 /* extract the host_spec - fail if it's not nbd:... */ @@ -196,8 +195,8 @@ static void nbd_parse_filename(const char *filename, QD= ict *options, =20 /* are we a UNIX or TCP socket? */ if (strstart(host_spec, "unix:", &unixpath)) { - qdict_put(options, "server.type", qstring_from_str("unix")); - qdict_put(options, "server.path", qstring_from_str(unixpath)); + qdict_put_str(options, "server.type", "unix"); + qdict_put_str(options, "server.path", unixpath); } else { InetSocketAddress *addr =3D NULL; =20 @@ -206,9 +205,9 @@ static void nbd_parse_filename(const char *filename, QD= ict *options, goto out; } =20 - qdict_put(options, "server.type", qstring_from_str("inet")); - qdict_put(options, "server.host", qstring_from_str(addr->host)); - qdict_put(options, "server.port", qstring_from_str(addr->port)); + qdict_put_str(options, "server.type", "inet"); + qdict_put_str(options, "server.host", addr->host); + qdict_put_str(options, "server.port", addr->port); qapi_free_InetSocketAddress(addr); } =20 @@ -247,13 +246,13 @@ static bool nbd_process_legacy_socket_options(QDict *= output_options, return false; } =20 - qdict_put(output_options, "server.type", qstring_from_str("unix")); - qdict_put(output_options, "server.path", qstring_from_str(path)); + qdict_put_str(output_options, "server.type", "unix"); + qdict_put_str(output_options, "server.path", path); } else if (host) { - qdict_put(output_options, "server.type", qstring_from_str("inet")); - qdict_put(output_options, "server.host", qstring_from_str(host)); - qdict_put(output_options, "server.port", - qstring_from_str(port ?: stringify(NBD_DEFAULT_PORT))); + qdict_put_str(output_options, "server.type", "inet"); + qdict_put_str(output_options, "server.host", host); + qdict_put_str(output_options, "server.port", + port ?: stringify(NBD_DEFAULT_PORT)); } =20 return true; @@ -528,7 +527,7 @@ static void nbd_refresh_filename(BlockDriverState *bs, = QDict *options) path =3D s->saddr->u.q_unix.path; } /* else can't represent as pseudo-filename */ =20 - qdict_put(opts, "driver", qstring_from_str("nbd")); + qdict_put_str(opts, "driver", "nbd"); =20 if (path && s->export) { snprintf(bs->exact_filename, sizeof(bs->exact_filename), @@ -551,10 +550,10 @@ static void nbd_refresh_filename(BlockDriverState *bs= , QDict *options) qdict_put_obj(opts, "server", saddr_qdict); =20 if (s->export) { - qdict_put(opts, "export", qstring_from_str(s->export)); + qdict_put_str(opts, "export", s->export); } if (s->tlscredsid) { - qdict_put(opts, "tls-creds", qstring_from_str(s->tlscredsid)); + qdict_put_str(opts, "tls-creds", s->tlscredsid); } =20 qdict_flatten(opts); diff --git a/block/nfs.c b/block/nfs.c index 76572ae..848b2c0 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -104,9 +104,9 @@ static int nfs_parse_uri(const char *filename, QDict *o= ptions, Error **errp) goto out; } =20 - qdict_put(options, "server.host", qstring_from_str(uri->server)); - qdict_put(options, "server.type", qstring_from_str("inet")); - qdict_put(options, "path", qstring_from_str(uri->path)); + qdict_put_str(options, "server.host", uri->server); + qdict_put_str(options, "server.type", "inet"); + qdict_put_str(options, "path", uri->path); =20 for (i =3D 0; i < qp->n; i++) { unsigned long long val; @@ -121,23 +121,17 @@ static int nfs_parse_uri(const char *filename, QDict = *options, Error **errp) goto out; } if (!strcmp(qp->p[i].name, "uid")) { - qdict_put(options, "user", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "user", qp->p[i].value); } else if (!strcmp(qp->p[i].name, "gid")) { - qdict_put(options, "group", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "group", qp->p[i].value); } else if (!strcmp(qp->p[i].name, "tcp-syncnt")) { - qdict_put(options, "tcp-syn-count", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "tcp-syn-count", qp->p[i].value); } else if (!strcmp(qp->p[i].name, "readahead")) { - qdict_put(options, "readahead-size", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "readahead-size", qp->p[i].value); } else if (!strcmp(qp->p[i].name, "pagecache")) { - qdict_put(options, "page-cache-size", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "page-cache-size", qp->p[i].value); } else if (!strcmp(qp->p[i].name, "debug")) { - qdict_put(options, "debug", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "debug", qp->p[i].value); } else { error_setg(errp, "Unknown NFS parameter name: %s", qp->p[i].name); @@ -819,7 +813,7 @@ static void nfs_refresh_filename(BlockDriverState *bs, = QDict *options) QObject *server_qdict; Visitor *ov; =20 - qdict_put(opts, "driver", qstring_from_str("nfs")); + qdict_put_str(opts, "driver", "nfs"); =20 if (client->uid && !client->gid) { snprintf(bs->exact_filename, sizeof(bs->exact_filename), @@ -842,28 +836,25 @@ static void nfs_refresh_filename(BlockDriverState *bs= , QDict *options) visit_type_NFSServer(ov, NULL, &client->server, &error_abort); visit_complete(ov, &server_qdict); qdict_put_obj(opts, "server", server_qdict); - qdict_put(opts, "path", qstring_from_str(client->path)); + qdict_put_str(opts, "path", client->path); =20 if (client->uid) { - qdict_put(opts, "user", qint_from_int(client->uid)); + qdict_put_int(opts, "user", client->uid); } if (client->gid) { - qdict_put(opts, "group", qint_from_int(client->gid)); + qdict_put_int(opts, "group", client->gid); } if (client->tcp_syncnt) { - qdict_put(opts, "tcp-syn-cnt", - qint_from_int(client->tcp_syncnt)); + qdict_put_int(opts, "tcp-syn-cnt", client->tcp_syncnt); } if (client->readahead) { - qdict_put(opts, "readahead-size", - qint_from_int(client->readahead)); + qdict_put_int(opts, "readahead-size", client->readahead); } if (client->pagecache) { - qdict_put(opts, "page-cache-size", - qint_from_int(client->pagecache)); + qdict_put_int(opts, "page-cache-size", client->pagecache); } if (client->debug) { - qdict_put(opts, "debug", qint_from_int(client->debug)); + qdict_put_int(opts, "debug", client->debug); } =20 visit_free(ov); diff --git a/block/null.c b/block/null.c index b300390..876f909 100644 --- a/block/null.c +++ b/block/null.c @@ -232,7 +232,7 @@ static void null_refresh_filename(BlockDriverState *bs,= QDict *opts) bs->drv->format_name); } =20 - qdict_put(opts, "driver", qstring_from_str(bs->drv->format_name)); + qdict_put_str(opts, "driver", bs->drv->format_name); bs->full_open_options =3D opts; } =20 diff --git a/block/qcow2.c b/block/qcow2.c index 5c1573c..1c26977 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2265,7 +2265,7 @@ static int qcow2_create2(const char *filename, int64_= t total_size, * table) */ options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str("qcow2")); + qdict_put_str(options, "driver", "qcow2"); blk =3D blk_new_open(filename, NULL, options, BDRV_O_RDWR | BDRV_O_RESIZE | BDRV_O_NO_FLUSH, &local_err); @@ -2327,7 +2327,7 @@ static int qcow2_create2(const char *filename, int64_= t total_size, =20 /* Reopen the image without BDRV_O_NO_FLUSH to flush it before returni= ng */ options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str("qcow2")); + qdict_put_str(options, "driver", "qcow2"); blk =3D blk_new_open(filename, NULL, options, BDRV_O_RDWR | BDRV_O_NO_BACKING, &local_err); if (blk =3D=3D NULL) { diff --git a/block/quorum.c b/block/quorum.c index f7949e2..1b2a8c3 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -1100,10 +1100,10 @@ static void quorum_refresh_filename(BlockDriverStat= e *bs, QDict *options) } =20 opts =3D qdict_new(); - qdict_put(opts, "driver", qstring_from_str("quorum")); - qdict_put(opts, QUORUM_OPT_VOTE_THRESHOLD, qint_from_int(s->threshold)= ); - qdict_put(opts, QUORUM_OPT_BLKVERIFY, qbool_from_bool(s->is_blkverify)= ); - qdict_put(opts, QUORUM_OPT_REWRITE, qbool_from_bool(s->rewrite_corrupt= ed)); + qdict_put_str(opts, "driver", "quorum"); + qdict_put_int(opts, QUORUM_OPT_VOTE_THRESHOLD, s->threshold); + qdict_put_bool(opts, QUORUM_OPT_BLKVERIFY, s->is_blkverify); + qdict_put_bool(opts, QUORUM_OPT_REWRITE, s->rewrite_corrupted); qdict_put(opts, "children", children); =20 bs->full_open_options =3D opts; diff --git a/block/rbd.c b/block/rbd.c index fbf3059..e551639 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -154,20 +154,20 @@ static void qemu_rbd_parse_filename(const char *filen= ame, QDict *options, goto done; } qemu_rbd_unescape(found_str); - qdict_put(options, "pool", qstring_from_str(found_str)); + qdict_put_str(options, "pool", found_str); =20 if (strchr(p, '@')) { found_str =3D qemu_rbd_next_tok(p, '@', &p); qemu_rbd_unescape(found_str); - qdict_put(options, "image", qstring_from_str(found_str)); + qdict_put_str(options, "image", found_str); =20 found_str =3D qemu_rbd_next_tok(p, ':', &p); qemu_rbd_unescape(found_str); - qdict_put(options, "snapshot", qstring_from_str(found_str)); + qdict_put_str(options, "snapshot", found_str); } else { found_str =3D qemu_rbd_next_tok(p, ':', &p); qemu_rbd_unescape(found_str); - qdict_put(options, "image", qstring_from_str(found_str)); + qdict_put_str(options, "image", found_str); } if (!p) { goto done; @@ -189,9 +189,9 @@ static void qemu_rbd_parse_filename(const char *filenam= e, QDict *options, qemu_rbd_unescape(value); =20 if (!strcmp(name, "conf")) { - qdict_put(options, "conf", qstring_from_str(value)); + qdict_put_str(options, "conf", value); } else if (!strcmp(name, "id")) { - qdict_put(options, "user" , qstring_from_str(value)); + qdict_put_str(options, "user", value); } else { /* * We pass these internally to qemu_rbd_set_keypairs(), so @@ -204,8 +204,8 @@ static void qemu_rbd_parse_filename(const char *filenam= e, QDict *options, if (!keypairs) { keypairs =3D qlist_new(); } - qlist_append(keypairs, qstring_from_str(name)); - qlist_append(keypairs, qstring_from_str(value)); + qlist_append_str(keypairs, name); + qlist_append_str(keypairs, value); } } =20 diff --git a/block/snapshot.c b/block/snapshot.c index 06b1185..a46564e 100644 --- a/block/snapshot.c +++ b/block/snapshot.c @@ -200,7 +200,7 @@ int bdrv_snapshot_goto(BlockDriverState *bs, =20 qdict_extract_subqdict(options, &file_options, "file."); QDECREF(file_options); - qdict_put(options, "file", qstring_from_str(bdrv_get_node_name(fil= e))); + qdict_put_str(options, "file", bdrv_get_node_name(file)); =20 drv->bdrv_close(bs); bdrv_unref_child(bs, bs->file); diff --git a/block/ssh.c b/block/ssh.c index df09f6c..11203fc 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -227,24 +227,23 @@ static int parse_uri(const char *filename, QDict *opt= ions, Error **errp) } =20 if(uri->user && strcmp(uri->user, "") !=3D 0) { - qdict_put(options, "user", qstring_from_str(uri->user)); + qdict_put_str(options, "user", uri->user); } =20 - qdict_put(options, "server.host", qstring_from_str(uri->server)); + qdict_put_str(options, "server.host", uri->server); =20 port_str =3D g_strdup_printf("%d", uri->port ?: 22); - qdict_put(options, "server.port", qstring_from_str(port_str)); + qdict_put_str(options, "server.port", port_str); g_free(port_str); =20 - qdict_put(options, "path", qstring_from_str(uri->path)); + qdict_put_str(options, "path", uri->path); =20 /* Pick out any query parameters that we understand, and ignore * the rest. */ for (i =3D 0; i < qp->n; ++i) { if (strcmp(qp->p[i].name, "host_key_check") =3D=3D 0) { - qdict_put(options, "host_key_check", - qstring_from_str(qp->p[i].value)); + qdict_put_str(options, "host_key_check", qp->p[i].value); } } =20 @@ -574,9 +573,8 @@ static bool ssh_process_legacy_socket_options(QDict *ou= tput_opts, } =20 if (host) { - qdict_put(output_opts, "server.host", qstring_from_str(host)); - qdict_put(output_opts, "server.port", - qstring_from_str(port ?: stringify(22))); + qdict_put_str(output_opts, "server.host", host); + qdict_put_str(output_opts, "server.port", port ?: stringify(22)); } =20 return true; diff --git a/block/vvfat.c b/block/vvfat.c index b509d55..9c82371 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -1057,10 +1057,10 @@ static void vvfat_parse_filename(const char *filena= me, QDict *options, } =20 /* Fill in the options QDict */ - qdict_put(options, "dir", qstring_from_str(filename)); - qdict_put(options, "fat-type", qint_from_int(fat_type)); - qdict_put(options, "floppy", qbool_from_bool(floppy)); - qdict_put(options, "rw", qbool_from_bool(rw)); + qdict_put_str(options, "dir", filename); + qdict_put_int(options, "fat-type", fat_type); + qdict_put_bool(options, "floppy", floppy); + qdict_put_bool(options, "rw", rw); } =20 static int vvfat_open(BlockDriverState *bs, QDict *options, int flags, @@ -3051,7 +3051,7 @@ static int enable_write_target(BlockDriverState *bs, = Error **errp) } =20 options =3D qdict_new(); - qdict_put(options, "write-target.driver", qstring_from_str("qcow")); + qdict_put_str(options, "write-target.driver", "qcow"); s->qcow =3D bdrv_open_child(s->qcow_filename, options, "write-target",= bs, &child_vvfat_qcow, false, errp); QDECREF(options); diff --git a/block/vxhs.c b/block/vxhs.c index 9ffe9d3..75cc6c8 100644 --- a/block/vxhs.c +++ b/block/vxhs.c @@ -182,15 +182,15 @@ static int vxhs_parse_uri(const char *filename, QDict= *options) return -EINVAL; } =20 - qdict_put(options, VXHS_OPT_SERVER".host", qstring_from_str(uri->serve= r)); + qdict_put_str(options, VXHS_OPT_SERVER ".host", uri->server); =20 if (uri->port) { port =3D g_strdup_printf("%d", uri->port); - qdict_put(options, VXHS_OPT_SERVER".port", qstring_from_str(port)); + qdict_put_str(options, VXHS_OPT_SERVER ".port", port); g_free(port); } =20 - qdict_put(options, "vdisk-id", qstring_from_str(uri->path)); + qdict_put_str(options, "vdisk-id", uri->path); =20 trace_vxhs_parse_uri_hostinfo(uri->server, uri->port); uri_free(uri); diff --git a/blockdev.c b/blockdev.c index 4d8cded..0b38c3d 100644 --- a/blockdev.c +++ b/blockdev.c @@ -527,7 +527,7 @@ static BlockBackend *blockdev_init(const char *file, QD= ict *bs_opts, error_setg(errp, "Cannot specify both 'driver' and 'format'"); goto early_err; } - qdict_put(bs_opts, "driver", qstring_from_str(buf)); + qdict_put_str(bs_opts, "driver", buf); } =20 on_write_error =3D BLOCKDEV_ON_ERROR_ENOSPC; @@ -903,10 +903,8 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfac= eType block_default_type) copy_on_read =3D false; } =20 - qdict_put(bs_opts, BDRV_OPT_READ_ONLY, - qstring_from_str(read_only ? "on" : "off")); - qdict_put(bs_opts, "copy-on-read", - qstring_from_str(copy_on_read ? "on" :"off")); + qdict_put_str(bs_opts, BDRV_OPT_READ_ONLY, read_only ? "on" : "off"); + qdict_put_str(bs_opts, "copy-on-read", copy_on_read ? "on" : "off"); =20 /* Controller type */ value =3D qemu_opt_get(legacy_opts, "if"); @@ -1030,7 +1028,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfa= ceType block_default_type) new_id =3D g_strdup_printf("%s%s%i", if_name[type], mediastr, unit_id); } - qdict_put(bs_opts, "id", qstring_from_str(new_id)); + qdict_put_str(bs_opts, "id", new_id); g_free(new_id); } =20 @@ -1067,7 +1065,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfa= ceType block_default_type) error_report("werror is not supported by this bus type"); goto fail; } - qdict_put(bs_opts, "werror", qstring_from_str(werror)); + qdict_put_str(bs_opts, "werror", werror); } =20 rerror =3D qemu_opt_get(legacy_opts, "rerror"); @@ -1077,7 +1075,7 @@ DriveInfo *drive_new(QemuOpts *all_opts, BlockInterfa= ceType block_default_type) error_report("rerror is not supported by this bus type"); goto fail; } - qdict_put(bs_opts, "rerror", qstring_from_str(rerror)); + qdict_put_str(bs_opts, "rerror", rerror); } =20 /* Actual block device init: Functionality shared with blockdev-add */ @@ -1737,10 +1735,9 @@ static void external_snapshot_prepare(BlkActionState= *common, =20 options =3D qdict_new(); if (s->has_snapshot_node_name) { - qdict_put(options, "node-name", - qstring_from_str(snapshot_node_name)); + qdict_put_str(options, "node-name", snapshot_node_name); } - qdict_put(options, "driver", qstring_from_str(format)); + qdict_put_str(options, "driver", format); =20 flags |=3D BDRV_O_NO_BACKING; } @@ -2579,11 +2576,10 @@ void qmp_blockdev_change_medium(bool has_device, co= nst char *device, =20 options =3D qdict_new(); detect_zeroes =3D blk_get_detect_zeroes_from_root_state(blk); - qdict_put(options, "detect-zeroes", - qstring_from_str(detect_zeroes ? "on" : "off")); + qdict_put_str(options, "detect-zeroes", detect_zeroes ? "on" : "off"); =20 if (has_format) { - qdict_put(options, "driver", qstring_from_str(format)); + qdict_put_str(options, "driver", format); } =20 medium_bs =3D bdrv_open(filename, NULL, options, bdrv_flags, errp); @@ -3232,7 +3228,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup,= BlockJobTxn *txn, =20 if (backup->format) { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(backup->format)); + qdict_put_str(options, "driver", backup->format); } =20 target_bs =3D bdrv_open(backup->target, NULL, options, flags, errp); @@ -3536,10 +3532,10 @@ void qmp_drive_mirror(DriveMirror *arg, Error **err= p) =20 options =3D qdict_new(); if (arg->has_node_name) { - qdict_put(options, "node-name", qstring_from_str(arg->node_name)); + qdict_put_str(options, "node-name", arg->node_name); } if (format) { - qdict_put(options, "driver", qstring_from_str(format)); + qdict_put_str(options, "driver", format); } =20 /* Mirroring takes care of copy-on-write using the source's backing diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c index 27df048..3a22805 100644 --- a/hw/block/xen_disk.c +++ b/hw/block/xen_disk.c @@ -1082,7 +1082,7 @@ static int blk_connect(struct XenDevice *xendev) =20 if (strcmp(blkdev->fileproto, "")) { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(blkdev->fileprot= o)); + qdict_put_str(options, "driver", blkdev->fileproto); } =20 /* setup via xenbus -> create new block driver instance */ diff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c index 370b3d9..fe62183 100644 --- a/hw/usb/xen-usb.c +++ b/hw/usb/xen-usb.c @@ -746,16 +746,16 @@ static void usbback_portid_add(struct usbback_info *u= sbif, unsigned port, portname++; =20 qdict =3D qdict_new(); - qdict_put(qdict, "driver", qstring_from_str("usb-host")); + qdict_put_str(qdict, "driver", "usb-host"); tmp =3D g_strdup_printf("%s.0", usbif->xendev.qdev.id); - qdict_put(qdict, "bus", qstring_from_str(tmp)); + qdict_put_str(qdict, "bus", tmp); g_free(tmp); tmp =3D g_strdup_printf("%s-%u", usbif->xendev.qdev.id, port); - qdict_put(qdict, "id", qstring_from_str(tmp)); + qdict_put_str(qdict, "id", tmp); g_free(tmp); - qdict_put(qdict, "port", qint_from_int(port)); - qdict_put(qdict, "hostbus", qint_from_int(atoi(busid))); - qdict_put(qdict, "hostport", qstring_from_str(portname)); + qdict_put_int(qdict, "port", port); + qdict_put_int(qdict, "hostbus", atoi(busid)); + qdict_put_str(qdict, "hostport", portname); opts =3D qemu_opts_from_qdict(qemu_find_opts("device"), qdict, &local_= err); if (local_err) { goto err; diff --git a/monitor.c b/monitor.c index ce11029..078cba5 100644 --- a/monitor.c +++ b/monitor.c @@ -2769,7 +2769,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, } goto fail; } - qdict_put(qdict, key, qstring_from_str(buf)); + qdict_put_str(qdict, key, buf); } break; case 'O': @@ -2871,9 +2871,9 @@ static QDict *monitor_parse_arguments(Monitor *mon, size =3D -1; } } - qdict_put(qdict, "count", qint_from_int(count)); - qdict_put(qdict, "format", qint_from_int(format)); - qdict_put(qdict, "size", qint_from_int(size)); + qdict_put_int(qdict, "count", count); + qdict_put_int(qdict, "format", format); + qdict_put_int(qdict, "size", size); } break; case 'i': @@ -2916,7 +2916,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, } val <<=3D 20; } - qdict_put(qdict, key, qint_from_int(val)); + qdict_put_int(qdict, key, val); } break; case 'o': @@ -2939,7 +2939,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, monitor_printf(mon, "invalid size\n"); goto fail; } - qdict_put(qdict, key, qint_from_int(val)); + qdict_put_int(qdict, key, val); p =3D end; } break; @@ -2995,7 +2995,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, monitor_printf(mon, "Expected 'on' or 'off'\n"); goto fail; } - qdict_put(qdict, key, qbool_from_bool(val)); + qdict_put_bool(qdict, key, val); } break; case '-': @@ -3026,7 +3026,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, } else { /* has option */ p++; - qdict_put(qdict, key, qbool_from_bool(true)); + qdict_put_bool(qdict, key, true); } } } @@ -3052,7 +3052,7 @@ static QDict *monitor_parse_arguments(Monitor *mon, cmd->name); goto fail; } - qdict_put(qdict, key, qstring_from_str(p)); + qdict_put_str(qdict, key, p); p +=3D len; } break; @@ -3831,9 +3831,8 @@ static void handle_qmp_command(JSONMessageParser *par= ser, GQueue *tokens) QapiErrorClass_lookup[ERROR_CLASS_COMMAND_NOT_FOUND]))= { /* Provide a more useful error message */ qdict_del(qdict, "desc"); - qdict_put(qdict, "desc", - qstring_from_str("Expecting capabilities negotiation" - " with 'qmp_capabilities'")); + qdict_put_str(qdict, "desc", "Expecting capabilities negotiati= on" + " with 'qmp_capabilities'"); } } =20 diff --git a/qapi/qmp-event.c b/qapi/qmp-event.c index 802ede4..ba3029c 100644 --- a/qapi/qmp-event.c +++ b/qapi/qmp-event.c @@ -51,7 +51,7 @@ static void timestamp_put(QDict *qdict) QDict *qmp_event_build_dict(const char *event_name) { QDict *dict =3D qdict_new(); - qdict_put(dict, "event", qstring_from_str(event_name)); + qdict_put_str(dict, "event", event_name); timestamp_put(dict); return dict; } diff --git a/qemu-img.c b/qemu-img.c index c719636..f3b0ab4 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -313,7 +313,7 @@ static BlockBackend *img_open_file(const char *filename, =20 if (fmt) { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(fmt)); + qdict_put_str(options, "driver", fmt); } =20 blk =3D blk_new_open(filename, NULL, options, flags, &local_err); @@ -3094,7 +3094,7 @@ static int img_rebase(int argc, char **argv) =20 if (bs->backing_format[0] !=3D '\0') { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(bs->backing_form= at)); + qdict_put_str(options, "driver", bs->backing_format); } =20 bdrv_get_backing_filename(bs, backing_name, sizeof(backing_name)); @@ -3111,7 +3111,7 @@ static int img_rebase(int argc, char **argv) if (out_baseimg[0]) { if (out_basefmt) { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(out_basefmt)= ); + qdict_put_str(options, "driver", out_basefmt); } else { options =3D NULL; } diff --git a/qemu-io.c b/qemu-io.c index 427cbae..ed0e2dc 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -601,7 +601,7 @@ int main(int argc, char **argv) } else { if (format) { opts =3D qdict_new(); - qdict_put(opts, "driver", qstring_from_str(format)); + qdict_put_str(opts, "driver", format); } if (openfile(argv[optind], flags, writethrough, opts)) { exit(1); diff --git a/qemu-nbd.c b/qemu-nbd.c index e080fb7..e4f00e2 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -959,7 +959,7 @@ int main(int argc, char **argv) } else { if (fmt) { options =3D qdict_new(); - qdict_put(options, "driver", qstring_from_str(fmt)); + qdict_put_str(options, "driver", fmt); } blk =3D blk_new_open(srcpath, NULL, options, flags, &local_err); } diff --git a/qobject/qdict.c b/qobject/qdict.c index 291eef1..88e2ecd 100644 --- a/qobject/qdict.c +++ b/qobject/qdict.c @@ -463,7 +463,7 @@ void qdict_set_default_str(QDict *dst, const char *key,= const char *val) return; } =20 - qdict_put(dst, key, qstring_from_str(val)); + qdict_put_str(dst, key, val); } =20 static void qdict_flatten_qdict(QDict *qdict, QDict *target, diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index ce461cc..8d27363 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -376,12 +376,12 @@ static void cpu_model_from_info(S390CPUModel *model, = const CpuModelInfo *info, =20 static void qdict_add_disabled_feat(const char *name, void *opaque) { - qdict_put(opaque, name, qbool_from_bool(false)); + qdict_put_bool(opaque, name, false); } =20 static void qdict_add_enabled_feat(const char *name, void *opaque) { - qdict_put(opaque, name, qbool_from_bool(true)); + qdict_put_bool(opaque, name, true); } =20 /* convert S390CPUDef into a static CpuModelInfo */ diff --git a/tests/check-qdict.c b/tests/check-qdict.c index 3cb72fb..be8d81f 100644 --- a/tests/check-qdict.c +++ b/tests/check-qdict.c @@ -47,7 +47,7 @@ static void qdict_put_obj_test(void) qdict =3D qdict_new(); =20 // key "" will have tdb hash 12345 - qdict_put(qdict, "", qint_from_int(num)); + qdict_put_int(qdict, "", num); =20 g_assert(qdict_size(qdict) =3D=3D 1); ent =3D QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]); @@ -66,8 +66,8 @@ static void qdict_destroy_simple_test(void) QDict *qdict; =20 qdict =3D qdict_new(); - qdict_put(qdict, "num", qint_from_int(0)); - qdict_put(qdict, "str", qstring_from_str("foo")); + qdict_put_int(qdict, "num", 0); + qdict_put_str(qdict, "str", "foo"); =20 QDECREF(qdict); } @@ -80,7 +80,7 @@ static void qdict_get_test(void) const char *key =3D "test"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qint_from_int(value)); + qdict_put_int(tests_dict, key, value); =20 obj =3D qdict_get(tests_dict, key); g_assert(obj !=3D NULL); @@ -98,7 +98,7 @@ static void qdict_get_int_test(void) const char *key =3D "int"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qint_from_int(value)); + qdict_put_int(tests_dict, key, value); =20 ret =3D qdict_get_int(tests_dict, key); g_assert(ret =3D=3D value); @@ -113,7 +113,7 @@ static void qdict_get_try_int_test(void) const char *key =3D "int"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qint_from_int(value)); + qdict_put_int(tests_dict, key, value); =20 ret =3D qdict_get_try_int(tests_dict, key, 0); g_assert(ret =3D=3D value); @@ -128,7 +128,7 @@ static void qdict_get_str_test(void) const char *str =3D "string"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qstring_from_str(str)); + qdict_put_str(tests_dict, key, str); =20 p =3D qdict_get_str(tests_dict, key); g_assert(p !=3D NULL); @@ -144,7 +144,7 @@ static void qdict_get_try_str_test(void) const char *str =3D "string"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qstring_from_str(str)); + qdict_put_str(tests_dict, key, str); =20 p =3D qdict_get_try_str(tests_dict, key); g_assert(p !=3D NULL); @@ -188,7 +188,7 @@ static void qdict_haskey_test(void) const char *key =3D "test"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qint_from_int(0)); + qdict_put_int(tests_dict, key, 0); g_assert(qdict_haskey(tests_dict, key) =3D=3D 1); =20 QDECREF(tests_dict); @@ -199,7 +199,7 @@ static void qdict_del_test(void) const char *key =3D "key test"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qstring_from_str("foo")); + qdict_put_str(tests_dict, key, "foo"); g_assert(qdict_size(tests_dict) =3D=3D 1); =20 qdict_del(tests_dict, key); @@ -226,9 +226,9 @@ static void qdict_iterapi_test(void) =20 g_assert(qdict_first(tests_dict) =3D=3D NULL); =20 - qdict_put(tests_dict, "key1", qint_from_int(1)); - qdict_put(tests_dict, "key2", qint_from_int(2)); - qdict_put(tests_dict, "key3", qint_from_int(3)); + qdict_put_int(tests_dict, "key1", 1); + qdict_put_int(tests_dict, "key2", 2); + qdict_put_int(tests_dict, "key3", 3); =20 count =3D 0; for (ent =3D qdict_first(tests_dict); ent; ent =3D qdict_next(tests_di= ct, ent)){ @@ -294,20 +294,20 @@ static void qdict_flatten_test(void) * } */ =20 - qdict_put(dict1, "a", qint_from_int(0)); - qdict_put(dict1, "b", qint_from_int(1)); + qdict_put_int(dict1, "a", 0); + qdict_put_int(dict1, "b", 1); =20 - qlist_append(list1, qint_from_int(23)); - qlist_append(list1, qint_from_int(66)); + qlist_append_int(list1, 23); + qlist_append_int(list1, 66); qlist_append(list1, dict1); - qlist_append(list2, qint_from_int(42)); + qlist_append_int(list2, 42); qlist_append(list2, list1); =20 - qdict_put(dict2, "c", qint_from_int(2)); - qdict_put(dict2, "d", qint_from_int(3)); + qdict_put_int(dict2, "c", 2); + qdict_put_int(dict2, "d", 3); qdict_put(dict3, "e", list2); qdict_put(dict3, "f", dict2); - qdict_put(dict3, "g", qint_from_int(4)); + qdict_put_int(dict3, "g", 4); =20 qdict_flatten(dict3); =20 @@ -369,12 +369,12 @@ static void qdict_array_split_test(void) * This example is given in the comment of qdict_array_split(). */ =20 - qdict_put(test_dict, "1.x", qint_from_int(0)); - qdict_put(test_dict, "4.y", qint_from_int(1)); - qdict_put(test_dict, "0.a", qint_from_int(42)); - qdict_put(test_dict, "o.o", qint_from_int(7)); - qdict_put(test_dict, "0.b", qint_from_int(23)); - qdict_put(test_dict, "2", qint_from_int(66)); + qdict_put_int(test_dict, "1.x", 0); + qdict_put_int(test_dict, "4.y", 1); + qdict_put_int(test_dict, "0.a", 42); + qdict_put_int(test_dict, "o.o", 7); + qdict_put_int(test_dict, "0.b", 23); + qdict_put_int(test_dict, "2", 66); =20 qdict_array_split(test_dict, &test_list); =20 @@ -441,9 +441,9 @@ static void qdict_array_split_test(void) =20 test_dict =3D qdict_new(); =20 - qdict_put(test_dict, "0", qint_from_int(42)); - qdict_put(test_dict, "1", qint_from_int(23)); - qdict_put(test_dict, "1.x", qint_from_int(84)); + qdict_put_int(test_dict, "0", 42); + qdict_put_int(test_dict, "1", 23); + qdict_put_int(test_dict, "1.x", 84); =20 qdict_array_split(test_dict, &test_list); =20 @@ -472,38 +472,38 @@ static void qdict_array_entries_test(void) =20 g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, 0); =20 - qdict_put(dict, "bar", qint_from_int(0)); - qdict_put(dict, "baz.0", qint_from_int(0)); + qdict_put_int(dict, "bar", 0); + qdict_put_int(dict, "baz.0", 0); g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, 0); =20 - qdict_put(dict, "foo.1", qint_from_int(0)); + qdict_put_int(dict, "foo.1", 0); g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, -EINVAL); - qdict_put(dict, "foo.0", qint_from_int(0)); + qdict_put_int(dict, "foo.0", 0); g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, 2); - qdict_put(dict, "foo.bar", qint_from_int(0)); + qdict_put_int(dict, "foo.bar", 0); g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, -EINVAL); qdict_del(dict, "foo.bar"); =20 - qdict_put(dict, "foo.2.a", qint_from_int(0)); - qdict_put(dict, "foo.2.b", qint_from_int(0)); - qdict_put(dict, "foo.2.c", qint_from_int(0)); + qdict_put_int(dict, "foo.2.a", 0); + qdict_put_int(dict, "foo.2.b", 0); + qdict_put_int(dict, "foo.2.c", 0); g_assert_cmpint(qdict_array_entries(dict, "foo."), =3D=3D, 3); g_assert_cmpint(qdict_array_entries(dict, ""), =3D=3D, -EINVAL); =20 QDECREF(dict); =20 dict =3D qdict_new(); - qdict_put(dict, "1", qint_from_int(0)); + qdict_put_int(dict, "1", 0); g_assert_cmpint(qdict_array_entries(dict, ""), =3D=3D, -EINVAL); - qdict_put(dict, "0", qint_from_int(0)); + qdict_put_int(dict, "0", 0); g_assert_cmpint(qdict_array_entries(dict, ""), =3D=3D, 2); - qdict_put(dict, "bar", qint_from_int(0)); + qdict_put_int(dict, "bar", 0); g_assert_cmpint(qdict_array_entries(dict, ""), =3D=3D, -EINVAL); qdict_del(dict, "bar"); =20 - qdict_put(dict, "2.a", qint_from_int(0)); - qdict_put(dict, "2.b", qint_from_int(0)); - qdict_put(dict, "2.c", qint_from_int(0)); + qdict_put_int(dict, "2.a", 0); + qdict_put_int(dict, "2.b", 0); + qdict_put_int(dict, "2.c", 0); g_assert_cmpint(qdict_array_entries(dict, ""), =3D=3D, 3); =20 QDECREF(dict); @@ -529,7 +529,7 @@ static void qdict_join_test(void) =20 /* First iteration: Test movement */ /* Second iteration: Test empty source and non-empty destination */ - qdict_put(dict2, "foo", qint_from_int(42)); + qdict_put_int(dict2, "foo", 42); =20 for (i =3D 0; i < 2; i++) { qdict_join(dict1, dict2, overwrite); @@ -541,7 +541,7 @@ static void qdict_join_test(void) } =20 /* Test non-empty source and destination without conflict */ - qdict_put(dict2, "bar", qint_from_int(23)); + qdict_put_int(dict2, "bar", 23); =20 qdict_join(dict1, dict2, overwrite); =20 @@ -552,7 +552,7 @@ static void qdict_join_test(void) g_assert(qdict_get_int(dict1, "bar") =3D=3D 23); =20 /* Test conflict */ - qdict_put(dict2, "foo", qint_from_int(84)); + qdict_put_int(dict2, "foo", 84); =20 qdict_join(dict1, dict2, overwrite); =20 @@ -594,15 +594,15 @@ static void qdict_crumple_test_recursive(void) QList *rules; =20 src =3D qdict_new(); - qdict_put(src, "vnc.listen.addr", qstring_from_str("127.0.0.1")); - qdict_put(src, "vnc.listen.port", qstring_from_str("5901")); - qdict_put(src, "vnc.acl.rules.0.match", qstring_from_str("fred")); - qdict_put(src, "vnc.acl.rules.0.policy", qstring_from_str("allow")); - qdict_put(src, "vnc.acl.rules.1.match", qstring_from_str("bob")); - qdict_put(src, "vnc.acl.rules.1.policy", qstring_from_str("deny")); - qdict_put(src, "vnc.acl.default", qstring_from_str("deny")); - qdict_put(src, "vnc.acl..name", qstring_from_str("acl0")); - qdict_put(src, "vnc.acl.rule..name", qstring_from_str("acl0")); + qdict_put_str(src, "vnc.listen.addr", "127.0.0.1"); + qdict_put_str(src, "vnc.listen.port", "5901"); + qdict_put_str(src, "vnc.acl.rules.0.match", "fred"); + qdict_put_str(src, "vnc.acl.rules.0.policy", "allow"); + qdict_put_str(src, "vnc.acl.rules.1.match", "bob"); + qdict_put_str(src, "vnc.acl.rules.1.policy", "deny"); + qdict_put_str(src, "vnc.acl.default", "deny"); + qdict_put_str(src, "vnc.acl..name", "acl0"); + qdict_put_str(src, "vnc.acl.rule..name", "acl0"); =20 dst =3D qobject_to_qdict(qdict_crumple(src, &error_abort)); g_assert(dst); @@ -669,8 +669,8 @@ static void qdict_crumple_test_bad_inputs(void) =20 src =3D qdict_new(); /* rule.0 can't be both a string and a dict */ - qdict_put(src, "rule.0", qstring_from_str("fred")); - qdict_put(src, "rule.0.policy", qstring_from_str("allow")); + qdict_put_str(src, "rule.0", "fred"); + qdict_put_str(src, "rule.0.policy", "allow"); =20 g_assert(qdict_crumple(src, &error) =3D=3D NULL); g_assert(error !=3D NULL); @@ -680,8 +680,8 @@ static void qdict_crumple_test_bad_inputs(void) =20 src =3D qdict_new(); /* rule can't be both a list and a dict */ - qdict_put(src, "rule.0", qstring_from_str("fred")); - qdict_put(src, "rule.a", qstring_from_str("allow")); + qdict_put_str(src, "rule.0", "fred"); + qdict_put_str(src, "rule.a", "allow"); =20 g_assert(qdict_crumple(src, &error) =3D=3D NULL); g_assert(error !=3D NULL); @@ -692,7 +692,7 @@ static void qdict_crumple_test_bad_inputs(void) src =3D qdict_new(); /* The input should be flat, ie no dicts or lists */ qdict_put(src, "rule.a", qdict_new()); - qdict_put(src, "rule.b", qstring_from_str("allow")); + qdict_put_str(src, "rule.b", "allow"); =20 g_assert(qdict_crumple(src, &error) =3D=3D NULL); g_assert(error !=3D NULL); @@ -702,8 +702,8 @@ static void qdict_crumple_test_bad_inputs(void) =20 src =3D qdict_new(); /* List indexes must not have gaps */ - qdict_put(src, "rule.0", qstring_from_str("deny")); - qdict_put(src, "rule.3", qstring_from_str("allow")); + qdict_put_str(src, "rule.0", "deny"); + qdict_put_str(src, "rule.3", "allow"); =20 g_assert(qdict_crumple(src, &error) =3D=3D NULL); g_assert(error !=3D NULL); @@ -713,8 +713,8 @@ static void qdict_crumple_test_bad_inputs(void) =20 src =3D qdict_new(); /* List indexes must be in %zu format */ - qdict_put(src, "rule.0", qstring_from_str("deny")); - qdict_put(src, "rule.+1", qstring_from_str("allow")); + qdict_put_str(src, "rule.0", "deny"); + qdict_put_str(src, "rule.+1", "allow"); =20 g_assert(qdict_crumple(src, &error) =3D=3D NULL); g_assert(error !=3D NULL); @@ -733,8 +733,8 @@ static void qdict_put_exists_test(void) const char *key =3D "exists"; QDict *tests_dict =3D qdict_new(); =20 - qdict_put(tests_dict, key, qint_from_int(1)); - qdict_put(tests_dict, key, qint_from_int(2)); + qdict_put_int(tests_dict, key, 1); + qdict_put_int(tests_dict, key, 2); =20 value =3D qdict_get_int(tests_dict, key); g_assert(value =3D=3D 2); diff --git a/tests/check-qlist.c b/tests/check-qlist.c index e16da5e..4983867 100644 --- a/tests/check-qlist.c +++ b/tests/check-qlist.c @@ -74,7 +74,7 @@ static void qlist_destroy_test(void) qlist =3D qlist_new(); =20 for (i =3D 0; i < 42; i++) - qlist_append(qlist, qint_from_int(i)); + qlist_append_int(qlist, i); =20 QDECREF(qlist); } @@ -103,7 +103,7 @@ static void qlist_iter_test(void) qlist =3D qlist_new(); =20 for (i =3D 0; i < iter_max; i++) - qlist_append(qlist, qint_from_int(i)); + qlist_append_int(qlist, i); =20 iter_called =3D 0; qlist_iter(qlist, iter_func, NULL); diff --git a/tests/device-introspect-test.c b/tests/device-introspect-test.c index c5637cc..b1abb2a 100644 --- a/tests/device-introspect-test.c +++ b/tests/device-introspect-test.c @@ -32,9 +32,9 @@ static QList *qom_list_types(const char *implements, bool= abstract) QList *ret; QDict *args =3D qdict_new(); =20 - qdict_put(args, "abstract", qbool_from_bool(abstract)); + qdict_put_bool(args, "abstract", abstract); if (implements) { - qdict_put(args, "implements", qstring_from_str(implements)); + qdict_put_str(args, "implements", implements); } resp =3D qmp("{'execute': 'qom-list-types'," " 'arguments': %p }", args); diff --git a/tests/test-qemu-opts.c b/tests/test-qemu-opts.c index 0ad74b4..cc1bb1a 100644 --- a/tests/test-qemu-opts.c +++ b/tests/test-qemu-opts.c @@ -299,7 +299,7 @@ static void test_qemu_opt_get_size(void) dict =3D qdict_new(); g_assert(dict !=3D NULL); =20 - qdict_put(dict, "size1", qstring_from_str("10")); + qdict_put_str(dict, "size1", "10"); =20 qemu_opts_absorb_qdict(opts, dict, &error_abort); g_assert(error_abort =3D=3D NULL); @@ -309,7 +309,7 @@ static void test_qemu_opt_get_size(void) g_assert(opt =3D=3D 10); =20 /* reset value */ - qdict_put(dict, "size1", qstring_from_str("15")); + qdict_put_str(dict, "size1", "15"); =20 qemu_opts_absorb_qdict(opts, dict, &error_abort); g_assert(error_abort =3D=3D NULL); diff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c index ac3fd03..acdded4 100644 --- a/tests/test-qmp-commands.c +++ b/tests/test-qmp-commands.c @@ -94,7 +94,7 @@ static void test_dispatch_cmd(void) QDict *req =3D qdict_new(); QObject *resp; =20 - qdict_put(req, "execute", qstring_from_str("user_def_cmd")); + qdict_put_str(req, "execute", "user_def_cmd"); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -111,7 +111,7 @@ static void test_dispatch_cmd_failure(void) QDict *args =3D qdict_new(); QObject *resp; =20 - qdict_put(req, "execute", qstring_from_str("user_def_cmd2")); + qdict_put_str(req, "execute", "user_def_cmd2"); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -122,10 +122,10 @@ static void test_dispatch_cmd_failure(void) =20 /* check that with extra arguments it throws an error */ req =3D qdict_new(); - qdict_put(args, "a", qint_from_int(66)); + qdict_put_int(args, "a", 66); qdict_put(req, "arguments", args); =20 - qdict_put(req, "execute", qstring_from_str("user_def_cmd")); + qdict_put_str(req, "execute", "user_def_cmd"); =20 resp =3D qmp_dispatch(&qmp_commands, QOBJECT(req)); assert(resp !=3D NULL); @@ -164,14 +164,14 @@ static void test_dispatch_cmd_io(void) QDict *ret_dict_dict2, *ret_dict_dict2_userdef; QInt *ret3; =20 - qdict_put(ud1a, "integer", qint_from_int(42)); - qdict_put(ud1a, "string", qstring_from_str("hello")); - qdict_put(ud1b, "integer", qint_from_int(422)); - qdict_put(ud1b, "string", qstring_from_str("hello2")); + qdict_put_int(ud1a, "integer", 42); + qdict_put_str(ud1a, "string", "hello"); + qdict_put_int(ud1b, "integer", 422); + qdict_put_str(ud1b, "string", "hello2"); qdict_put(args, "ud1a", ud1a); qdict_put(args, "ud1b", ud1b); qdict_put(req, "arguments", args); - qdict_put(req, "execute", qstring_from_str("user_def_cmd2")); + qdict_put_str(req, "execute", "user_def_cmd2"); =20 ret =3D qobject_to_qdict(test_qmp_dispatch(req)); =20 @@ -190,9 +190,9 @@ static void test_dispatch_cmd_io(void) assert(!strcmp(qdict_get_str(ret_dict_dict2, "string"), "blah4")); QDECREF(ret); =20 - qdict_put(args3, "a", qint_from_int(66)); + qdict_put_int(args3, "a", 66); qdict_put(req, "arguments", args3); - qdict_put(req, "execute", qstring_from_str("guest-get-time")); + qdict_put_str(req, "execute", "guest-get-time"); =20 ret3 =3D qobject_to_qint(test_qmp_dispatch(req)); assert(qint_get_int(ret3) =3D=3D 66); @@ -244,7 +244,7 @@ static void test_dealloc_partial(void) Visitor *v; =20 ud2_dict =3D qdict_new(); - qdict_put(ud2_dict, "string0", qstring_from_str(text)); + qdict_put_str(ud2_dict, "string0", text); =20 v =3D qobject_input_visitor_new(QOBJECT(ud2_dict)); visit_type_UserDefTwo(v, NULL, &ud2, &err); diff --git a/tests/test-qmp-event.c b/tests/test-qmp-event.c index 7bb621b..4c0f096 100644 --- a/tests/test-qmp-event.c +++ b/tests/test-qmp-event.c @@ -153,7 +153,7 @@ static void test_event_a(TestEventData *data, { QDict *d; d =3D data->expect; - qdict_put(d, "event", qstring_from_str("EVENT_A")); + qdict_put_str(d, "event", "EVENT_A"); qapi_event_send_event_a(&error_abort); } =20 @@ -162,7 +162,7 @@ static void test_event_b(TestEventData *data, { QDict *d; d =3D data->expect; - qdict_put(d, "event", qstring_from_str("EVENT_B")); + qdict_put_str(d, "event", "EVENT_B"); qapi_event_send_event_b(&error_abort); } =20 @@ -177,16 +177,16 @@ static void test_event_c(TestEventData *data, b.has_enum1 =3D false; =20 d_b =3D qdict_new(); - qdict_put(d_b, "integer", qint_from_int(2)); - qdict_put(d_b, "string", qstring_from_str("test1")); + qdict_put_int(d_b, "integer", 2); + qdict_put_str(d_b, "string", "test1"); =20 d_data =3D qdict_new(); - qdict_put(d_data, "a", qint_from_int(1)); + qdict_put_int(d_data, "a", 1); qdict_put(d_data, "b", d_b); - qdict_put(d_data, "c", qstring_from_str("test2")); + qdict_put_str(d_data, "c", "test2"); =20 d =3D data->expect; - qdict_put(d, "event", qstring_from_str("EVENT_C")); + qdict_put_str(d, "event", "EVENT_C"); qdict_put(d, "data", d_data); =20 qapi_event_send_event_c(true, 1, true, &b, "test2", &error_abort); @@ -213,22 +213,22 @@ static void test_event_d(TestEventData *data, a.enum2 =3D ENUM_ONE_VALUE2; =20 d_struct1 =3D qdict_new(); - qdict_put(d_struct1, "integer", qint_from_int(2)); - qdict_put(d_struct1, "string", qstring_from_str("test1")); - qdict_put(d_struct1, "enum1", qstring_from_str("value1")); + qdict_put_int(d_struct1, "integer", 2); + qdict_put_str(d_struct1, "string", "test1"); + qdict_put_str(d_struct1, "enum1", "value1"); =20 d_a =3D qdict_new(); qdict_put(d_a, "struct1", d_struct1); - qdict_put(d_a, "string", qstring_from_str("test2")); - qdict_put(d_a, "enum2", qstring_from_str("value2")); + qdict_put_str(d_a, "string", "test2"); + qdict_put_str(d_a, "enum2", "value2"); =20 d_data =3D qdict_new(); qdict_put(d_data, "a", d_a); - qdict_put(d_data, "b", qstring_from_str("test3")); - qdict_put(d_data, "enum3", qstring_from_str("value3")); + qdict_put_str(d_data, "b", "test3"); + qdict_put_str(d_data, "enum3", "value3"); =20 d =3D data->expect; - qdict_put(d, "event", qstring_from_str("EVENT_D")); + qdict_put_str(d, "event", "EVENT_D"); qdict_put(d, "data", d_data); =20 qapi_event_send_event_d(&a, "test3", false, NULL, true, ENUM_ONE_VALUE= 3, diff --git a/tests/test-qobject-output-visitor.c b/tests/test-qobject-outpu= t-visitor.c index c213fce..94b9518 100644 --- a/tests/test-qobject-output-visitor.c +++ b/tests/test-qobject-output-visitor.c @@ -343,9 +343,9 @@ static void test_visitor_out_any(TestOutputVisitorData = *data, =20 visitor_reset(data); qdict =3D qdict_new(); - qdict_put(qdict, "integer", qint_from_int(-42)); - qdict_put(qdict, "boolean", qbool_from_bool(true)); - qdict_put(qdict, "string", qstring_from_str("foo")); + qdict_put_int(qdict, "integer", -42); + qdict_put_bool(qdict, "boolean", true); + qdict_put_str(qdict, "string", "foo"); qobj =3D QOBJECT(qdict); visit_type_any(data->ov, NULL, &qobj, &error_abort); qobject_decref(qobj); diff --git a/util/qemu-option.c b/util/qemu-option.c index 5ce1b5c..a36cafa 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -1060,7 +1060,7 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdic= t) qdict =3D qdict_new(); } if (opts->id) { - qdict_put(qdict, "id", qstring_from_str(opts->id)); + qdict_put_str(qdict, "id", opts->id); } QTAILQ_FOREACH(opt, &opts->head, next) { val =3D QOBJECT(qstring_from_str(opt->str)); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317323902937.3505936938726; Tue, 9 May 2017 01:08:43 -0700 (PDT) Received: from localhost ([::1]:35636 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80CH-0001Mh-2D for importer@patchew.org; Tue, 09 May 2017 04:08:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44083) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Aa-00084j-1s for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AT-0007Ws-S5 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42452) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007Vr-LK for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:49 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A9F893D953 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7717A60466; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 5AA34113861D; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A9F893D953 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A9F893D953 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:26 +0200 Message-Id: <1494317205-2211-10-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Tue, 09 May 2017 08:06:48 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 09/28] block: Simplify bdrv_append_temp_snapshot() logic X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake Noticed while checking Coccinelle results. Naming a label 'out:' when it is only used on error paths is weird. Also, we had some dead stores to 'ret'. Meanwhile we know that snapshot_options is NULL on success and that QDECREF(NULL) is safe. So merge the two exit paths into one by careful control over bs_snapshot. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-8-eblake@redhat.com> Signed-off-by: Markus Armbruster --- block.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/block.c b/block.c index aae8f7e..a45b9b5 100644 --- a/block.c +++ b/block.c @@ -2195,7 +2195,7 @@ static BlockDriverState *bdrv_append_temp_snapshot(Bl= ockDriverState *bs, char *tmp_filename =3D g_malloc0(PATH_MAX + 1); int64_t total_size; QemuOpts *opts =3D NULL; - BlockDriverState *bs_snapshot; + BlockDriverState *bs_snapshot =3D NULL; Error *local_err =3D NULL; int ret; =20 @@ -2235,28 +2235,25 @@ static BlockDriverState *bdrv_append_temp_snapshot(= BlockDriverState *bs, bs_snapshot =3D bdrv_open(NULL, NULL, snapshot_options, flags, errp); snapshot_options =3D NULL; if (!bs_snapshot) { - ret =3D -EINVAL; goto out; } =20 - /* bdrv_append() consumes a strong reference to bs_snapshot (i.e. it w= ill - * call bdrv_unref() on it), so in order to be able to return one, we = have - * to increase bs_snapshot's refcount here */ + /* bdrv_append() consumes a strong reference to bs_snapshot + * (i.e. it will call bdrv_unref() on it) even on error, so in + * order to be able to return one, we have to increase + * bs_snapshot's refcount here */ bdrv_ref(bs_snapshot); bdrv_append(bs_snapshot, bs, &local_err); if (local_err) { error_propagate(errp, local_err); - ret =3D -EINVAL; + bs_snapshot =3D NULL; goto out; } =20 +out: + QDECREF(snapshot_options); g_free(tmp_filename); return bs_snapshot; - -out: - QDECREF(snapshot_options); - g_free(tmp_filename); - return NULL; } =20 /* --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149431732282534.263733153811245; Tue, 9 May 2017 01:08:42 -0700 (PDT) Received: from localhost ([::1]:35635 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80CH-0001MZ-9D for importer@patchew.org; Tue, 09 May 2017 04:08:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44075) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AZ-000848-2J for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AT-0007Wx-SM for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42454) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007W0-Mt for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:49 -0400 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 B3CA13D957 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7E11417514; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 5D95311329F8; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B3CA13D957 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B3CA13D957 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:27 +0200 Message-Id: <1494317205-2211-11-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.30]); Tue, 09 May 2017 08:06:48 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 10/28] QemuOpts: Simplify qemu_opts_to_qdict() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Eric Blake Noticed while investigating Coccinelle cleanups. There is no need for a temporary variable when we can use the new macro to do the same thing with less typing. Signed-off-by: Eric Blake Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-9-eblake@redhat.com> Signed-off-by: Markus Armbruster --- util/qemu-option.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/util/qemu-option.c b/util/qemu-option.c index a36cafa..5977bfc 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -1054,7 +1054,6 @@ void qemu_opts_absorb_qdict(QemuOpts *opts, QDict *qd= ict, Error **errp) QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdict) { QemuOpt *opt; - QObject *val; =20 if (!qdict) { qdict =3D qdict_new(); @@ -1063,8 +1062,7 @@ QDict *qemu_opts_to_qdict(QemuOpts *opts, QDict *qdic= t) qdict_put_str(qdict, "id", opts->id); } QTAILQ_FOREACH(opt, &opts->head, next) { - val =3D QOBJECT(qstring_from_str(opt->str)); - qdict_put_obj(qdict, opt->name, val); + qdict_put_str(qdict, opt->name, opt->str); } return qdict; } --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317525431690.9967033348629; Tue, 9 May 2017 01:12:05 -0700 (PDT) Received: from localhost ([::1]:35652 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80FW-0004KC-Pa for importer@patchew.org; Tue, 09 May 2017 04:12:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44080) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80AZ-00084e-VE for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AT-0007X2-Tr for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44258) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007W4-N0 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:49 -0400 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 B22A137E67 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7CA8A881F8; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 6074A1140082; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B22A137E67 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com B22A137E67 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:28 +0200 Message-Id: <1494317205-2211-12-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.29]); Tue, 09 May 2017 08:06:48 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 11/28] fdc-test: Avoid deprecated 'change' command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake Use the preferred blockdev-change-medium command instead. Also, use of 'device' is deprecated; adding an explicit id on the command line lets us use 'id' for both blockdev-change-medium and eject. Signed-off-by: Eric Blake Reviewed-by: John Snow Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-10-eblake@redhat.com> Signed-off-by: Markus Armbruster --- tests/fdc-test.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/fdc-test.c b/tests/fdc-test.c index 738c6b4..325712e 100644 --- a/tests/fdc-test.c +++ b/tests/fdc-test.c @@ -298,8 +298,8 @@ static void test_media_insert(void) =20 /* Insert media in drive. DSKCHK should not be reset until a step pulse * is sent. */ - qmp_discard_response("{'execute':'change', 'arguments':{" - " 'device':'floppy0', 'target': %s, 'arg': 'raw' = }}", + qmp_discard_response("{'execute':'blockdev-change-medium', 'arguments'= :{" + " 'id':'floppy0', 'filename': %s, 'format': 'raw'= }}", test_image); =20 dir =3D inb(FLOPPY_BASE + reg_dir); @@ -330,7 +330,7 @@ static void test_media_change(void) /* Eject the floppy and check that DSKCHG is set. Reading it out doesn= 't * reset the bit. */ qmp_discard_response("{'execute':'eject', 'arguments':{" - " 'device':'floppy0' }}"); + " 'id':'floppy0' }}"); =20 dir =3D inb(FLOPPY_BASE + reg_dir); assert_bit_set(dir, DSKCHG); @@ -564,7 +564,7 @@ int main(int argc, char **argv) /* Run the tests */ g_test_init(&argc, &argv, NULL); =20 - qtest_start(NULL); + qtest_start("-device floppy,id=3Dfloppy0"); qtest_irq_intercept_in(global_qtest, "ioapic"); qtest_add_func("/fdc/cmos", test_cmos); qtest_add_func("/fdc/no_media_on_start", test_no_media_on_start); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318581599691.560168991795; Tue, 9 May 2017 01:29:41 -0700 (PDT) Received: from localhost ([::1]:35748 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Wa-0003v5-71 for importer@patchew.org; Tue, 09 May 2017 04:29:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085N-1f for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AU-0007XJ-3t for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55732) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AT-0007WA-Ri for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:50 -0400 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 DD8C481240 for ; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 82A9983DB8; Tue, 9 May 2017 08:06:48 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 635A71141D70; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DD8C481240 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DD8C481240 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:29 +0200 Message-Id: <1494317205-2211-13-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.25]); Tue, 09 May 2017 08:06:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 12/28] test-qga: Actually test 0xff sync bytes X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Eric Blake Commit 62c39b3 introduced test-qga, and at face value, appears to be testing the 'guest-sync' behavior that is recommended for guests in sending 0xff to QGA to force the parser to reset. But this aspect of the test has never actually done anything: the qmp_fd() call chain converts its string argument into QObject, then converts that QObject back to the actual string that is sent over the wire - and the conversion process silently drops the 0xff byte from the string sent to QGA, thus never resetting the QGA parser. An upcoming patch will get rid of the wasteful round trip through QObject, at which point the string in test-qga will be directly sent over the wire. But fixing qmp_fd() to actually send 0xff over the wire is not all we have to do - the actual QMP parser loudly complains that 0xff is not valid JSON, and sends an error message _prior_ to actually parsing the 'guest-sync' or 'guest-sync-delimited' command. With 'guest-sync', we cannot easily tell if this error message is a result of our command - which is WHY we invented the 'guest-sync-delimited' command. So for the testsuite, fix things to only check 0xff behavior on 'guest-sync-delimited', and to loop until we've consumed all garbage prior to the requested delimiter, which is compatible with the documented actions that a real QGA client is supposed to do. Ideally, we'd fix the QGA JSON parser to silently ignore 0xff rather than sending an error message back, at which point we could enhance this test for 'guest-sync' as well as for 'guest-sync-delimited'. But for the sake of this patch, our testing of 'guest-sync' is no worse than it was pre-patch, because we have never been sending 0xff over the wire in the first place. Signed-off-by: Eric Blake Reviewed-by: Markus Armbruster Message-Id: <20170427215821.19397-11-eblake@redhat.com> Reviewed-by: Michael Roth [Additional comment squashed in, along with matching commit message update] Signed-off-by: Markus Armbruster --- tests/libqtest.c | 8 ++++++++ tests/test-qga.c | 41 ++++++++++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/tests/libqtest.c b/tests/libqtest.c index 512c150..84ecbd2 100644 --- a/tests/libqtest.c +++ b/tests/libqtest.c @@ -446,6 +446,14 @@ void qmp_fd_sendv(int fd, const char *fmt, va_list ap) va_list ap_copy; QObject *qobj; =20 + /* qobject_from_jsonv() silently eats leading 0xff as invalid + * JSON, but we want to test sending them over the wire to force + * resyncs */ + if (*fmt =3D=3D '\377') { + socket_send(fd, fmt, 1); + fmt++; + } + /* Going through qobject ensures we escape strings properly. * This seemingly unnecessary copy is required in case va_list * is an array type. diff --git a/tests/test-qga.c b/tests/test-qga.c index c780f00..c77f241 100644 --- a/tests/test-qga.c +++ b/tests/test-qga.c @@ -146,14 +146,30 @@ static void test_qga_sync_delimited(gconstpointer fix) QDict *ret; gchar *cmd; =20 - cmd =3D g_strdup_printf("%c{'execute': 'guest-sync-delimited'," - " 'arguments': {'id': %u } }", 0xff, r); + cmd =3D g_strdup_printf("\xff{'execute': 'guest-sync-delimited'," + " 'arguments': {'id': %u } }", r); qmp_fd_send(fixture->fd, cmd); g_free(cmd); =20 - v =3D read(fixture->fd, &c, 1); - g_assert_cmpint(v, =3D=3D, 1); - g_assert_cmpint(c, =3D=3D, 0xff); + /* + * Read and ignore garbage until resynchronized. + * + * Note that the full reset sequence would involve checking the + * response of guest-sync-delimited and repeating the loop if + * 'id' field of the response does not match the 'id' field of + * the request. Testing this fully would require inserting + * garbage in the response stream and is left as a future test + * to implement. + * + * TODO: The server shouldn't emit so much garbage (among other + * things, it loudly complains about the client's \xff being + * invalid JSON, even though it is a documented part of the + * handshake. + */ + do { + v =3D read(fixture->fd, &c, 1); + g_assert_cmpint(v, =3D=3D, 1); + } while (c !=3D 0xff); =20 ret =3D qmp_fd_receive(fixture->fd); g_assert_nonnull(ret); @@ -172,8 +188,19 @@ static void test_qga_sync(gconstpointer fix) QDict *ret; gchar *cmd; =20 - cmd =3D g_strdup_printf("%c{'execute': 'guest-sync'," - " 'arguments': {'id': %u } }", 0xff, r); + /* + * TODO guest-sync is inherently limited: we cannot distinguish + * failure caused by reacting to garbage on the wire prior to this + * command, from failure of this actual command. Clients are + * supposed to be able to send a raw '\xff' byte to at least + * re-synchronize the server's parser prior to this command, but + * we are not in a position to test that here because (at least + * for now) it causes the server to issue an error message about + * invalid JSON. Testing of '\xff' handling is done in + * guest-sync-delimited instead. + */ + cmd =3D g_strdup_printf("{'execute': 'guest-sync'," + " 'arguments': {'id': %u } }", r); ret =3D qmp_fd(fixture->fd, cmd); g_free(cmd); =20 --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149431775131658.3208919131132; Tue, 9 May 2017 01:15:51 -0700 (PDT) Received: from localhost ([::1]:35672 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80JB-0008C9-PK for importer@patchew.org; Tue, 09 May 2017 04:15:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44102) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085F-0v for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Yn-ES for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42500) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Xn-5t for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 34A113D957 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 015EC85A3B for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 661F31142132; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 34A113D957 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 34A113D957 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:30 +0200 Message-Id: <1494317205-2211-14-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.30]); Tue, 09 May 2017 08:06:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 13/28] sockets: Prepare vsock_parse() for flattened SocketAddress X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" I'm going to flatten SocketAddress: rename SocketAddress to SocketAddressLegacy, SocketAddressFlat to SocketAddress, eliminate SocketAddressLegacy except in external interfaces. vsock_parse() returns a newly allocated VsockSocketAddress. Lift the allocation from vsock_parse() into its caller socket_parse() to prepare for flattening SocketAddress. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-2-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake --- util/qemu-sockets.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 8188d9a..1abe095 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -793,26 +793,25 @@ static int vsock_listen_saddr(VsockSocketAddress *vad= dr, return slisten; } =20 -static VsockSocketAddress *vsock_parse(const char *str, Error **errp) +static int vsock_parse(VsockSocketAddress *addr, const char *str, + Error **errp) { - VsockSocketAddress *addr =3D NULL; char cid[33]; char port[33]; int n; =20 if (sscanf(str, "%32[^:]:%32[^,]%n", cid, port, &n) !=3D 2) { error_setg(errp, "error parsing address '%s'", str); - return NULL; + return -1; } if (str[n] !=3D '\0') { error_setg(errp, "trailing characters in address '%s'", str); - return NULL; + return -1; } =20 - addr =3D g_new0(VsockSocketAddress, 1); addr->cid =3D g_strdup(cid); addr->port =3D g_strdup(port); - return addr; + return 0; } #else static void vsock_unsupported(Error **errp) @@ -835,10 +834,11 @@ static int vsock_listen_saddr(VsockSocketAddress *vad= dr, return -1; } =20 -static VsockSocketAddress *vsock_parse(const char *str, Error **errp) +static int vsock_parse(VsockSocketAddress *addr, const char *str, + Error **errp) { vsock_unsupported(errp); - return NULL; + return -1; } #endif /* CONFIG_AF_VSOCK */ =20 @@ -1060,8 +1060,8 @@ SocketAddress *socket_parse(const char *str, Error **= errp) } } else if (strstart(str, "vsock:", NULL)) { addr->type =3D SOCKET_ADDRESS_KIND_VSOCK; - addr->u.vsock.data =3D vsock_parse(str + strlen("vsock:"), errp); - if (addr->u.vsock.data =3D=3D NULL) { + addr->u.vsock.data =3D g_new(VsockSocketAddress, 1); + if (vsock_parse(addr->u.vsock.data, str + strlen("vsock:"), errp))= { goto fail; } } else { --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318454837982.6179629597249; Tue, 9 May 2017 01:27:34 -0700 (PDT) Received: from localhost ([::1]:35735 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80UX-0001v4-8D for importer@patchew.org; Tue, 09 May 2017 04:27:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44119) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085W-3s for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007ZS-Kp for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39400) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Y3-CQ for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6AE24C04B92C for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0C00C5C7A6 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 68EC5114213C; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6AE24C04B92C Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 6AE24C04B92C From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:31 +0200 Message-Id: <1494317205-2211-15-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 09 May 2017 08:06:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 14/28] sockets: Prepare inet_parse() for flattened SocketAddress X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" I'm going to flatten SocketAddress: rename SocketAddress to SocketAddressLegacy, SocketAddressFlat to SocketAddress, eliminate SocketAddressLegacy except in external interfaces. inet_parse() returns a newly allocated InetSocketAddress. Lift the allocation from inet_parse() into its caller socket_parse() to prepare for flattening SocketAddress. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-3-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Straightforward rebase] --- block/nbd.c | 8 ++++---- include/qemu/sockets.h | 2 +- migration/rdma.c | 4 ++-- migration/socket.c | 5 +++-- util/qemu-sockets.c | 30 ++++++++++++------------------ 5 files changed, 22 insertions(+), 27 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index b3545f5..37969eb 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -198,16 +198,16 @@ static void nbd_parse_filename(const char *filename, = QDict *options, qdict_put_str(options, "server.type", "unix"); qdict_put_str(options, "server.path", unixpath); } else { - InetSocketAddress *addr =3D NULL; + InetSocketAddress *addr =3D g_new(InetSocketAddress, 1); =20 - addr =3D inet_parse(host_spec, errp); - if (!addr) { - goto out; + if (inet_parse(addr, host_spec, errp)) { + goto out_inet; } =20 qdict_put_str(options, "server.type", "inet"); qdict_put_str(options, "server.host", addr->host); qdict_put_str(options, "server.port", addr->port); + out_inet: qapi_free_InetSocketAddress(addr); } =20 diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index af28532..8b9325c 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -34,7 +34,7 @@ typedef void NonBlockingConnectHandler(int fd, Error *err= , void *opaque); =20 int inet_ai_family_from_address(InetSocketAddress *addr, Error **errp); -InetSocketAddress *inet_parse(const char *str, Error **errp); +int inet_parse(InetSocketAddress *addr, const char *str, Error **errp); int inet_connect(const char *str, Error **errp); int inet_connect_saddr(InetSocketAddress *saddr, NonBlockingConnectHandler *callback, void *opaque, diff --git a/migration/rdma.c b/migration/rdma.c index fe0a4b5..7eaaf96 100644 --- a/migration/rdma.c +++ b/migration/rdma.c @@ -2506,8 +2506,8 @@ static void *qemu_rdma_data_init(const char *host_por= t, Error **errp) rdma->current_index =3D -1; rdma->current_chunk =3D -1; =20 - addr =3D inet_parse(host_port, NULL); - if (addr !=3D NULL) { + addr =3D g_new(InetSocketAddress, 1); + if (!inet_parse(addr, host_port, NULL)) { rdma->port =3D atoi(addr->port); rdma->host =3D g_strdup(addr->host); } else { diff --git a/migration/socket.c b/migration/socket.c index dc88812..5fdc723 100644 --- a/migration/socket.c +++ b/migration/socket.c @@ -27,10 +27,11 @@ =20 static SocketAddress *tcp_build_address(const char *host_port, Error **err= p) { - InetSocketAddress *iaddr =3D inet_parse(host_port, errp); + InetSocketAddress *iaddr =3D g_new(InetSocketAddress, 1); SocketAddress *saddr; =20 - if (!iaddr) { + if (inet_parse(iaddr, host_port, errp)) { + qapi_free_InetSocketAddress(iaddr); return NULL; } =20 diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 1abe095..62c93ba 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -578,16 +578,15 @@ err: } =20 /* compatibility wrapper */ -InetSocketAddress *inet_parse(const char *str, Error **errp) +int inet_parse(InetSocketAddress *addr, const char *str, Error **errp) { - InetSocketAddress *addr; const char *optstr, *h; char host[65]; char port[33]; int to; int pos; =20 - addr =3D g_new0(InetSocketAddress, 1); + memset(addr, 0, sizeof(*addr)); =20 /* parse address */ if (str[0] =3D=3D ':') { @@ -595,20 +594,20 @@ InetSocketAddress *inet_parse(const char *str, Error = **errp) host[0] =3D '\0'; if (sscanf(str, ":%32[^,]%n", port, &pos) !=3D 1) { error_setg(errp, "error parsing port in address '%s'", str); - goto fail; + return -1; } } else if (str[0] =3D=3D '[') { /* IPv6 addr */ if (sscanf(str, "[%64[^]]]:%32[^,]%n", host, port, &pos) !=3D 2) { error_setg(errp, "error parsing IPv6 address '%s'", str); - goto fail; + return -1; } addr->ipv6 =3D addr->has_ipv6 =3D true; } else { /* hostname or IPv4 addr */ if (sscanf(str, "%64[^:]:%32[^,]%n", host, port, &pos) !=3D 2) { error_setg(errp, "error parsing address '%s'", str); - goto fail; + return -1; } if (host[strspn(host, "0123456789.")] =3D=3D '\0') { addr->ipv4 =3D addr->has_ipv4 =3D true; @@ -626,7 +625,7 @@ InetSocketAddress *inet_parse(const char *str, Error **= errp) if (sscanf(h, "%d%n", &to, &pos) !=3D 1 || (h[pos] !=3D '\0' && h[pos] !=3D ',')) { error_setg(errp, "error parsing to=3D argument"); - goto fail; + return -1; } addr->has_to =3D true; addr->to =3D to; @@ -637,11 +636,7 @@ InetSocketAddress *inet_parse(const char *str, Error *= *errp) if (strstr(optstr, ",ipv6")) { addr->ipv6 =3D addr->has_ipv6 =3D true; } - return addr; - -fail: - qapi_free_InetSocketAddress(addr); - return NULL; + return 0; } =20 =20 @@ -656,13 +651,12 @@ fail: int inet_connect(const char *str, Error **errp) { int sock =3D -1; - InetSocketAddress *addr; + InetSocketAddress *addr =3D g_new(InetSocketAddress, 1); =20 - addr =3D inet_parse(str, errp); - if (addr !=3D NULL) { + if (!inet_parse(addr, str, errp)) { sock =3D inet_connect_saddr(addr, NULL, NULL, errp); - qapi_free_InetSocketAddress(addr); } + qapi_free_InetSocketAddress(addr); return sock; } =20 @@ -1066,8 +1060,8 @@ SocketAddress *socket_parse(const char *str, Error **= errp) } } else { addr->type =3D SOCKET_ADDRESS_KIND_INET; - addr->u.inet.data =3D inet_parse(str, errp); - if (addr->u.inet.data =3D=3D NULL) { + addr->u.inet.data =3D g_new(InetSocketAddress, 1); + if (inet_parse(addr->u.inet.data, str, errp)) { goto fail; } } --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317466192158.05989325178075; Tue, 9 May 2017 01:11:06 -0700 (PDT) Received: from localhost ([::1]:35650 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ea-0003V6-NM for importer@patchew.org; Tue, 09 May 2017 04:11:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44110) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085O-1y for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Yt-Et for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35176) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Xq-6a for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 3BA3C804ED for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 09B80881FA for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 6BD6C1142143; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 3BA3C804ED Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 3BA3C804ED From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:32 +0200 Message-Id: <1494317205-2211-16-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.27]); Tue, 09 May 2017 08:06:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 15/28] qapi: New QAPI_CLONE_MEMBERS() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" QAPI_CLONE() returns a newly allocated QAPI object. Inconvenient when we want to clone into an existing object. QAPI_CLONE_MEMBERS() does exactly that. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-4-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake --- include/qapi/clone-visitor.h | 14 ++++++++++++++ qapi/qapi-clone-visitor.c | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/qapi/clone-visitor.h b/include/qapi/clone-visitor.h index b16177e..a4915c7 100644 --- a/include/qapi/clone-visitor.h +++ b/include/qapi/clone-visitor.h @@ -24,6 +24,9 @@ typedef struct QapiCloneVisitor QapiCloneVisitor; =20 void *qapi_clone(const void *src, void (*visit_type)(Visitor *, const char= *, void **, Error **)); +void qapi_clone_members(void *dst, const void *src, size_t sz, + void (*visit_type_members)(Visitor *, void *, + Error **)); =20 /* * Deep-clone QAPI object @src of the given @type, and return the result. @@ -36,4 +39,15 @@ void *qapi_clone(const void *src, void (*visit_type)(Vis= itor *, const char *, (void (*)(Visitor *, const char *, void**, \ Error **))visit_type_ ## type)) =20 +/* + * Copy deep clones of @type members from @src to @dst. + * + * Not usable on QAPI scalars (integers, strings, enums), nor on a + * QAPI object that references the 'any' type. + */ +#define QAPI_CLONE_MEMBERS(type, dst, src) \ + qapi_clone_members(dst, src, sizeof(type), \ + (void (*)(Visitor *, void *, \ + Error **))visit_type_ ## type ## _members) + #endif diff --git a/qapi/qapi-clone-visitor.c b/qapi/qapi-clone-visitor.c index 34086cb..de756bf 100644 --- a/qapi/qapi-clone-visitor.c +++ b/qapi/qapi-clone-visitor.c @@ -180,3 +180,16 @@ void *qapi_clone(const void *src, void (*visit_type)(V= isitor *, const char *, visit_free(v); return dst; } + +void qapi_clone_members(void *dst, const void *src, size_t sz, + void (*visit_type_members)(Visitor *, void *, + Error **)) +{ + Visitor *v; + + v =3D qapi_clone_visitor_new(); + memcpy(dst, src, sz); + to_qcv(v)->depth++; + visit_type_members(v, dst, &error_abort); + visit_free(v); +} --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 14943182765341023.9918316562445; Tue, 9 May 2017 01:24:36 -0700 (PDT) Received: from localhost ([::1]:35715 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Re-0007dl-QG for importer@patchew.org; Tue, 09 May 2017 04:24:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44287) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ah-0008CO-T2 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AW-0007aT-PS for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38556) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AW-0007ZY-9p for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:52 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 59042ED249 for ; Tue, 9 May 2017 08:06:51 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0BD2D5C7A4 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 6EEC71129C43; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 59042ED249 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 59042ED249 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:33 +0200 Message-Id: <1494317205-2211-17-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 09 May 2017 08:06:51 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 16/28] sockets: Rename SocketAddress to SocketAddressLegacy X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The next commit will rename SocketAddressFlat to SocketAddress, and the commit after that will replace most uses of SocketAddressLegacy by SocketAddress, replacing most of this commit's renames right back. Note that checkpatch emits a few "line over 80 characters" warnings. The long lines are all temporary; the SocketAddressLegacy replacement will shorten them again. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-5-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake Signed-off-by: Markus Armbruster --- block/nbd.c | 4 +- block/sheepdog.c | 18 +++---- blockdev-nbd.c | 6 +-- chardev/char-socket.c | 34 +++++++------- chardev/char-udp.c | 10 ++-- hmp.c | 4 +- include/io/channel-socket.h | 24 +++++----- include/io/dns-resolver.h | 22 ++++----- include/io/task.h | 10 ++-- include/qemu/sockets.h | 30 ++++++------ io/channel-socket.c | 48 +++++++++---------- io/dns-resolver.c | 48 +++++++++---------- migration/socket.c | 36 +++++++------- net/socket.c | 10 ++-- qapi-schema.json | 14 +++--- qapi/block.json | 2 +- qemu-nbd.c | 12 ++--- qga/channel-posix.c | 4 +- qga/main.c | 8 ++-- tests/test-io-channel-socket.c | 72 ++++++++++++++-------------- ui/vnc-auth-sasl.c | 6 +-- ui/vnc.c | 104 ++++++++++++++++++++-----------------= ---- util/qemu-sockets.c | 100 +++++++++++++++++++------------------= -- 23 files changed, 314 insertions(+), 312 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index 37969eb..7f11a93 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -309,7 +309,7 @@ NBDClientSession *nbd_get_client_session(BlockDriverSta= te *bs) static QIOChannelSocket *nbd_establish_connection(SocketAddressFlat *saddr= _flat, Error **errp) { - SocketAddress *saddr =3D socket_address_crumple(saddr_flat); + SocketAddressLegacy *saddr =3D socket_address_crumple(saddr_flat); QIOChannelSocket *sioc; Error *local_err =3D NULL; =20 @@ -319,7 +319,7 @@ static QIOChannelSocket *nbd_establish_connection(Socke= tAddressFlat *saddr_flat, qio_channel_socket_connect_sync(sioc, saddr, &local_err); - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); if (local_err) { object_unref(OBJECT(sioc)); error_propagate(errp, local_err); diff --git a/block/sheepdog.c b/block/sheepdog.c index fe8fd92..055d10b 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -378,7 +378,7 @@ struct BDRVSheepdogState { uint32_t cache_flags; bool discard_supported; =20 - SocketAddress *addr; + SocketAddressLegacy *addr; int fd; =20 CoMutex lock; @@ -530,17 +530,17 @@ static void sd_aio_setup(SheepdogAIOCB *acb, BDRVShee= pdogState *s, QLIST_INSERT_HEAD(&s->inflight_aiocb_head, acb, aiocb_siblings); } =20 -static SocketAddress *sd_socket_address(const char *path, +static SocketAddressLegacy *sd_socket_address(const char *path, const char *host, const char *port) { - SocketAddress *addr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *addr =3D g_new0(SocketAddressLegacy, 1); =20 if (path) { - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); addr->u.q_unix.data->path =3D g_strdup(path); } else { - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D g_new0(InetSocketAddress, 1); addr->u.inet.data->host =3D g_strdup(host ?: SD_DEFAULT_ADDR); addr->u.inet.data->port =3D g_strdup(port ?: stringify(SD_DEFAULT_= PORT)); @@ -549,13 +549,13 @@ static SocketAddress *sd_socket_address(const char *p= ath, return addr; } =20 -static SocketAddress *sd_server_config(QDict *options, Error **errp) +static SocketAddressLegacy *sd_server_config(QDict *options, Error **errp) { QDict *server =3D NULL; QObject *crumpled_server =3D NULL; Visitor *iv =3D NULL; SocketAddressFlat *saddr_flat =3D NULL; - SocketAddress *saddr =3D NULL; + SocketAddressLegacy *saddr =3D NULL; Error *local_err =3D NULL; =20 qdict_extract_subqdict(options, &server, "server."); @@ -597,7 +597,7 @@ static int connect_to_sdog(BDRVSheepdogState *s, Error = **errp) =20 fd =3D socket_connect(s->addr, NULL, NULL, errp); =20 - if (s->addr->type =3D=3D SOCKET_ADDRESS_KIND_INET && fd >=3D 0) { + if (s->addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && fd >=3D 0)= { int ret =3D socket_set_nodelay(fd); if (ret < 0) { error_report("%s", strerror(errno)); @@ -2149,7 +2149,7 @@ static void sd_close(BlockDriverState *bs) aio_set_fd_handler(bdrv_get_aio_context(bs), s->fd, false, NULL, NULL, NULL, NULL); closesocket(s->fd); - qapi_free_SocketAddress(s->addr); + qapi_free_SocketAddressLegacy(s->addr); } =20 static int64_t sd_getlength(BlockDriverState *bs) diff --git a/blockdev-nbd.c b/blockdev-nbd.c index 8a11807..6b0c699 100644 --- a/blockdev-nbd.c +++ b/blockdev-nbd.c @@ -99,7 +99,7 @@ static QCryptoTLSCreds *nbd_get_tls_creds(const char *id,= Error **errp) } =20 =20 -void qmp_nbd_server_start(SocketAddress *addr, +void qmp_nbd_server_start(SocketAddressLegacy *addr, bool has_tls_creds, const char *tls_creds, Error **errp) { @@ -124,8 +124,8 @@ void qmp_nbd_server_start(SocketAddress *addr, goto error; } =20 - /* TODO SOCKET_ADDRESS_KIND_FD where fd has AF_INET or AF_INET6 */ - if (addr->type !=3D SOCKET_ADDRESS_KIND_INET) { + /* TODO SOCKET_ADDRESS_LEGACY_KIND_FD where fd has AF_INET or AF_I= NET6 */ + if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { error_setg(errp, "TLS is only supported with IPv4/IPv6"); goto error; } diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 9d5f062..f872f48 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -52,7 +52,7 @@ typedef struct { int *write_msgfds; size_t write_msgfds_num; =20 - SocketAddress *addr; + SocketAddressLegacy *addr; bool is_listen; bool is_telnet; bool is_tn3270; @@ -356,27 +356,27 @@ static void tcp_chr_free_connection(Chardev *chr) s->connected =3D 0; } =20 -static char *SocketAddress_to_str(const char *prefix, SocketAddress *addr, +static char *SocketAddress_to_str(const char *prefix, SocketAddressLegacy = *addr, bool is_listen, bool is_telnet) { switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: return g_strdup_printf("%s%s:%s:%s%s", prefix, is_telnet ? "telnet" : "tcp", addr->u.inet.data->host, addr->u.inet.data->port, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: return g_strdup_printf("%sunix:%s%s", prefix, addr->u.q_unix.data->path, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_FD: return g_strdup_printf("%sfd:%s%s", prefix, addr->u.fd.data->str, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: return g_strdup_printf("%svsock:%s:%s", prefix, addr->u.vsock.data->cid, addr->u.vsock.data->port); @@ -796,7 +796,7 @@ static void char_socket_finalize(Object *obj) g_source_remove(s->reconnect_timer); s->reconnect_timer =3D 0; } - qapi_free_SocketAddress(s->addr); + qapi_free_SocketAddressLegacy(s->addr); if (s->listen_tag) { g_source_remove(s->listen_tag); s->listen_tag =3D 0; @@ -859,7 +859,7 @@ static void qmp_chardev_open_socket(Chardev *chr, { SocketChardev *s =3D SOCKET_CHARDEV(chr); ChardevSocket *sock =3D backend->u.socket.data; - SocketAddress *addr =3D sock->addr; + SocketAddressLegacy *addr =3D sock->addr; bool do_nodelay =3D sock->has_nodelay ? sock->nodelay : false; bool is_listen =3D sock->has_server ? sock->server : true; bool is_telnet =3D sock->has_telnet ? sock->telnet : false; @@ -905,11 +905,11 @@ static void qmp_chardev_open_socket(Chardev *chr, } } =20 - s->addr =3D QAPI_CLONE(SocketAddress, sock->addr); + s->addr =3D QAPI_CLONE(SocketAddressLegacy, sock->addr); =20 qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_RECONNECTABLE); /* TODO SOCKET_ADDRESS_FD where fd has AF_UNIX */ - if (addr->type =3D=3D SOCKET_ADDRESS_KIND_UNIX) { + if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX) { qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS); } =20 @@ -945,7 +945,7 @@ static void qmp_chardev_open_socket(Chardev *chr, goto error; } =20 - qapi_free_SocketAddress(s->addr); + qapi_free_SocketAddressLegacy(s->addr); s->addr =3D socket_local_address(sioc->fd, errp); update_disconnected_filename(s); =20 @@ -985,7 +985,7 @@ static void qemu_chr_parse_socket(QemuOpts *opts, Chard= evBackend *backend, const char *host =3D qemu_opt_get(opts, "host"); const char *port =3D qemu_opt_get(opts, "port"); const char *tls_creds =3D qemu_opt_get(opts, "tls-creds"); - SocketAddress *addr; + SocketAddressLegacy *addr; ChardevSocket *sock; =20 backend->type =3D CHARDEV_BACKEND_KIND_SOCKET; @@ -1022,14 +1022,14 @@ static void qemu_chr_parse_socket(QemuOpts *opts, C= hardevBackend *backend, sock->reconnect =3D reconnect; sock->tls_creds =3D g_strdup(tls_creds); =20 - addr =3D g_new0(SocketAddress, 1); + addr =3D g_new0(SocketAddressLegacy, 1); if (path) { UnixSocketAddress *q_unix; - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; q_unix =3D addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); q_unix->path =3D g_strdup(path); } else { - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D g_new(InetSocketAddress, 1); *addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup(host), @@ -1051,7 +1051,7 @@ char_socket_get_addr(Object *obj, Visitor *v, const c= har *name, { SocketChardev *s =3D SOCKET_CHARDEV(obj); =20 - visit_type_SocketAddress(v, name, &s->addr, errp); + visit_type_SocketAddressLegacy(v, name, &s->addr, errp); } =20 static bool @@ -1078,7 +1078,7 @@ static void char_socket_class_init(ObjectClass *oc, v= oid *data) cc->chr_add_watch =3D tcp_chr_add_watch; cc->chr_update_read_handler =3D tcp_chr_update_read_handler; =20 - object_class_property_add(oc, "addr", "SocketAddress", + object_class_property_add(oc, "addr", "SocketAddressLegacy", char_socket_get_addr, NULL, NULL, NULL, &error_abort); =20 diff --git a/chardev/char-udp.c b/chardev/char-udp.c index 1958c36..d705c4f 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -134,7 +134,7 @@ static void qemu_chr_parse_udp(QemuOpts *opts, ChardevB= ackend *backend, const char *localaddr =3D qemu_opt_get(opts, "localaddr"); const char *localport =3D qemu_opt_get(opts, "localport"); bool has_local =3D false; - SocketAddress *addr; + SocketAddressLegacy *addr; ChardevUdp *udp; =20 backend->type =3D CHARDEV_BACKEND_KIND_UDP; @@ -159,8 +159,8 @@ static void qemu_chr_parse_udp(QemuOpts *opts, ChardevB= ackend *backend, udp =3D backend->u.udp.data =3D g_new0(ChardevUdp, 1); qemu_chr_parse_common(opts, qapi_ChardevUdp_base(udp)); =20 - addr =3D g_new0(SocketAddress, 1); - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr =3D g_new0(SocketAddressLegacy, 1); + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D g_new(InetSocketAddress, 1); *addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup(host), @@ -174,8 +174,8 @@ static void qemu_chr_parse_udp(QemuOpts *opts, ChardevB= ackend *backend, =20 if (has_local) { udp->has_local =3D true; - addr =3D g_new0(SocketAddress, 1); - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr =3D g_new0(SocketAddressLegacy, 1); + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D g_new(InetSocketAddress, 1); *addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup(localaddr), diff --git a/hmp.c b/hmp.c index bd7b1ca..c7f161d 100644 --- a/hmp.c +++ b/hmp.c @@ -2108,7 +2108,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) bool all =3D qdict_get_try_bool(qdict, "all", false); Error *local_err =3D NULL; BlockInfoList *block_list, *info; - SocketAddress *addr; + SocketAddressLegacy *addr; =20 if (writable && !all) { error_setg(&local_err, "-w only valid together with -a"); @@ -2122,7 +2122,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) } =20 qmp_nbd_server_start(addr, false, NULL, &local_err); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); if (local_err !=3D NULL) { goto exit; } diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index 711f8bf..c1aaa72 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -91,7 +91,7 @@ qio_channel_socket_new_fd(int fd, * an error occurs. */ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp); =20 /** @@ -110,7 +110,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *i= oc, * as this function returns without waiting for completion. */ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -128,7 +128,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket = *ioc, * an error occurs. */ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp); =20 /** @@ -147,7 +147,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *io= c, * as this function returns without waiting for completion. */ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -167,8 +167,8 @@ void qio_channel_socket_listen_async(QIOChannelSocket *= ioc, * is established or an error occurs. */ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, Error **errp); =20 /** @@ -190,8 +190,8 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, * waiting for completion. */ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -205,12 +205,12 @@ void qio_channel_socket_dgram_async(QIOChannelSocket = *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: 0 on success, -1 on error */ -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp); =20 @@ -222,12 +222,12 @@ qio_channel_socket_get_local_address(QIOChannelSocket= *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp); =20 diff --git a/include/io/dns-resolver.h b/include/io/dns-resolver.h index 2f69c08..aac46ca 100644 --- a/include/io/dns-resolver.h +++ b/include/io/dns-resolver.h @@ -40,15 +40,15 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * QIODNSResolver: * * The QIODNSResolver class provides a framework for doing - * DNS resolution on SocketAddress objects, independently + * DNS resolution on SocketAddressLegacy objects, independently * of socket creation. * * * Resolving addresses synchronously * - * int mylisten(SocketAddress *addr, Error **errp) { + * int mylisten(SocketAddressLegacy *addr, Error **errp) { * QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); - * SocketAddress **rawaddrs =3D NULL; + * SocketAddressLegacy **rawaddrs =3D NULL; * size_t nrawaddrs =3D 0; * Error *err =3D NULL; * QIOChannel **socks =3D NULL; @@ -69,7 +69,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks =3D g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] =3D sock; * } - * qapi_free_SocketAddress(rawaddrs[i]); + * qapi_free_SocketAddressLegacy(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -95,7 +95,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * MyListenData *data =3D opaque; * QIODNSResolver *resolver =3D * QIO_DNS_RESOLVER(qio_task_get_source(task); - * SocketAddress **rawaddrs =3D NULL; + * SocketAddressLegacy **rawaddrs =3D NULL; * size_t nrawaddrs =3D 0; * Error *err =3D NULL; * @@ -116,7 +116,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks =3D g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] =3D sock; * } - * qapi_free_SocketAddress(rawaddrs[i]); + * qapi_free_SocketAddressLegacy(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -127,7 +127,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * } * } * - * void mylisten(SocketAddress *addr, MyListenData *data) { + * void mylisten(SocketAddressLegacy *addr, MyListenData *data) { * QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); * qio_dns_resolver_lookup_async(dns, addr, * mylistenresult, data, NULL); @@ -177,9 +177,9 @@ QIODNSResolver *qio_dns_resolver_get_instance(void); * Returns: 0 if resolution was successful, -1 on error */ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, size_t *naddrs, - SocketAddress ***addrs, + SocketAddressLegacy ***addrs, Error **errp); =20 /** @@ -201,7 +201,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolv= er, * of the caller will not be blocked. */ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify); @@ -223,6 +223,6 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddress ***addrs); + SocketAddressLegacy ***addrs); =20 #endif /* QIO_DNS_RESOLVER_H */ diff --git a/include/io/task.h b/include/io/task.h index 6021f51..f65ec7a 100644 --- a/include/io/task.h +++ b/include/io/task.h @@ -166,7 +166,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * gpointer opaque) * { * QMyObject obj =3D QMY_OBJECT(qio_task_get_source(task)); - * SocketAddress *addr =3D opaque; + * SocketAddressLegacy *addr =3D opaque; * Error *err =3D NULL; * * obj->fd =3D socket_listen(addr, &err); @@ -175,20 +175,20 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * } * * void myobject_listen_async(QMyObject *obj, - * SocketAddress *addr, + * SocketAddressLegacy *addr, * QIOTaskFunc *func, * gpointer opaque, * GDestroyNotify notify) * { * QIOTask *task; - * SocketAddress *addrCopy; + * SocketAddressLegacy *addrCopy; * - * addrCopy =3D QAPI_CLONE(SocketAddress, addr); + * addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); * task =3D qio_task_new(OBJECT(obj), func, opaque, notify); * * qio_task_run_in_thread(task, myobject_listen_worker, * addrCopy, - * qapi_free_SocketAddress); + * qapi_free_SocketAddressLegacy); * } * * diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 8b9325c..f4a4b10 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -45,12 +45,12 @@ NetworkAddressFamily inet_netfamily(int family); int unix_listen(const char *path, char *ostr, int olen, Error **errp); int unix_connect(const char *path, Error **errp); =20 -SocketAddress *socket_parse(const char *str, Error **errp); -int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callbac= k, +SocketAddressLegacy *socket_parse(const char *str, Error **errp); +int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *c= allback, void *opaque, Error **errp); -int socket_listen(SocketAddress *addr, Error **errp); +int socket_listen(SocketAddressLegacy *addr, Error **errp); void socket_listen_cleanup(int fd, Error **errp); -int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp= ); +int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, = Error **errp); =20 /* Old, ipv4 only bits. Don't use for new code. */ int parse_host_port(struct sockaddr_in *saddr, const char *str); @@ -65,12 +65,12 @@ int socket_init(void); * Get the string representation of the socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress * +SocketAddressLegacy * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp); @@ -83,12 +83,12 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress *socket_local_address(int fd, Error **errp); +SocketAddressLegacy *socket_local_address(int fd, Error **errp); =20 /** * socket_remote_address: @@ -98,12 +98,12 @@ SocketAddress *socket_local_address(int fd, Error **err= p); * Get the string representation of the remote socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddress when no + * release with a call qapi_free_SocketAddressLegacy() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddress *socket_remote_address(int fd, Error **errp); +SocketAddressLegacy *socket_remote_address(int fd, Error **errp); =20 /** * socket_address_to_string: @@ -118,17 +118,17 @@ SocketAddress *socket_remote_address(int fd, Error **= errp); * * Returns: the socket address in string format, or NULL on error */ -char *socket_address_to_string(struct SocketAddress *addr, Error **errp); +char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **e= rrp); =20 /** * socket_address_crumple: * @addr_flat: the socket address to crumple * - * Convert SocketAddressFlat to SocketAddress. Caller is responsible - * for freeing with qapi_free_SocketAddress(). + * Convert SocketAddressFlat to SocketAddressLegacy. Caller is responsible + * for freeing with qapi_free_SocketAddressLegacy(). * - * Returns: the argument converted to SocketAddress. + * Returns: the argument converted to SocketAddressLegacy. */ -SocketAddress *socket_address_crumple(SocketAddressFlat *addr_flat); +SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat); =20 #endif /* QEMU_SOCKETS_H */ diff --git a/io/channel-socket.c b/io/channel-socket.c index 53386b7..a21dab6 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -27,7 +27,7 @@ =20 #define SOCKET_MAX_FDS 16 =20 -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp) { @@ -36,7 +36,7 @@ qio_channel_socket_get_local_address(QIOChannelSocket *io= c, errp); } =20 -SocketAddress * +SocketAddressLegacy * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp) { @@ -134,7 +134,7 @@ qio_channel_socket_new_fd(int fd, =20 =20 int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp) { int fd; @@ -160,7 +160,7 @@ static void qio_channel_socket_connect_worker(QIOTask *= task, gpointer opaque) { QIOChannelSocket *ioc =3D QIO_CHANNEL_SOCKET(qio_task_get_source(task)= ); - SocketAddress *addr =3D opaque; + SocketAddressLegacy *addr =3D opaque; Error *err =3D NULL; =20 qio_channel_socket_connect_sync(ioc, addr, &err); @@ -170,16 +170,16 @@ static void qio_channel_socket_connect_worker(QIOTask= *task, =20 =20 void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) { QIOTask *task =3D qio_task_new( OBJECT(ioc), callback, opaque, destroy); - SocketAddress *addrCopy; + SocketAddressLegacy *addrCopy; =20 - addrCopy =3D QAPI_CLONE(SocketAddress, addr); + addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); =20 /* socket_connect() does a non-blocking connect(), but it * still blocks in DNS lookups, so we must use a thread */ @@ -187,12 +187,12 @@ void qio_channel_socket_connect_async(QIOChannelSocke= t *ioc, qio_task_run_in_thread(task, qio_channel_socket_connect_worker, addrCopy, - (GDestroyNotify)qapi_free_SocketAddress); + (GDestroyNotify)qapi_free_SocketAddressLegacy); } =20 =20 int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, Error **errp) { int fd; @@ -219,7 +219,7 @@ static void qio_channel_socket_listen_worker(QIOTask *t= ask, gpointer opaque) { QIOChannelSocket *ioc =3D QIO_CHANNEL_SOCKET(qio_task_get_source(task)= ); - SocketAddress *addr =3D opaque; + SocketAddressLegacy *addr =3D opaque; Error *err =3D NULL; =20 qio_channel_socket_listen_sync(ioc, addr, &err); @@ -229,29 +229,29 @@ static void qio_channel_socket_listen_worker(QIOTask = *task, =20 =20 void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) { QIOTask *task =3D qio_task_new( OBJECT(ioc), callback, opaque, destroy); - SocketAddress *addrCopy; + SocketAddressLegacy *addrCopy; =20 - addrCopy =3D QAPI_CLONE(SocketAddress, addr); + addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); =20 /* socket_listen() blocks in DNS lookups, so we must use a thread */ trace_qio_channel_socket_listen_async(ioc, addr); qio_task_run_in_thread(task, qio_channel_socket_listen_worker, addrCopy, - (GDestroyNotify)qapi_free_SocketAddress); + (GDestroyNotify)qapi_free_SocketAddressLegacy); } =20 =20 int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, Error **errp) { int fd; @@ -274,16 +274,16 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *i= oc, =20 =20 struct QIOChannelSocketDGramWorkerData { - SocketAddress *localAddr; - SocketAddress *remoteAddr; + SocketAddressLegacy *localAddr; + SocketAddressLegacy *remoteAddr; }; =20 =20 static void qio_channel_socket_dgram_worker_free(gpointer opaque) { struct QIOChannelSocketDGramWorkerData *data =3D opaque; - qapi_free_SocketAddress(data->localAddr); - qapi_free_SocketAddress(data->remoteAddr); + qapi_free_SocketAddressLegacy(data->localAddr); + qapi_free_SocketAddressLegacy(data->remoteAddr); g_free(data); } =20 @@ -303,8 +303,8 @@ static void qio_channel_socket_dgram_worker(QIOTask *ta= sk, =20 =20 void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddress *localAddr, - SocketAddress *remoteAddr, + SocketAddressLegacy *localAddr, + SocketAddressLegacy *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) @@ -314,8 +314,8 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *i= oc, struct QIOChannelSocketDGramWorkerData *data =3D g_new0( struct QIOChannelSocketDGramWorkerData, 1); =20 - data->localAddr =3D QAPI_CLONE(SocketAddress, localAddr); - data->remoteAddr =3D QAPI_CLONE(SocketAddress, remoteAddr); + data->localAddr =3D QAPI_CLONE(SocketAddressLegacy, localAddr); + data->remoteAddr =3D QAPI_CLONE(SocketAddressLegacy, remoteAddr); =20 trace_qio_channel_socket_dgram_async(ioc, localAddr, remoteAddr); qio_task_run_in_thread(task, diff --git a/io/dns-resolver.c b/io/dns-resolver.c index 759d1b4..d3f0cbf 100644 --- a/io/dns-resolver.c +++ b/io/dns-resolver.c @@ -45,9 +45,9 @@ QIODNSResolver *qio_dns_resolver_get_instance(void) } =20 static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, size_t *naddrs, - SocketAddress ***addrs, + SocketAddressLegacy ***addrs, Error **errp) { struct addrinfo ai, *res, *e; @@ -97,14 +97,14 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSReso= lver *resolver, (*naddrs)++; } =20 - *addrs =3D g_new0(SocketAddress *, *naddrs); + *addrs =3D g_new0(SocketAddressLegacy *, *naddrs); =20 /* create socket + bind */ for (i =3D 0, e =3D res; e !=3D NULL; i++, e =3D e->ai_next) { - SocketAddress *newaddr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *newaddr =3D g_new0(SocketAddressLegacy, 1); InetSocketAddress *newiaddr =3D g_new0(InetSocketAddress, 1); newaddr->u.inet.data =3D newiaddr; - newaddr->type =3D SOCKET_ADDRESS_KIND_INET; + newaddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; =20 getnameinfo((struct sockaddr *)e->ai_addr, e->ai_addrlen, uaddr, INET6_ADDRSTRLEN, uport, 32, @@ -129,36 +129,36 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSRe= solver *resolver, =20 =20 static int qio_dns_resolver_lookup_sync_nop(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, size_t *naddrs, - SocketAddress ***addrs, + SocketAddressLegacy ***addrs, Error **errp) { *naddrs =3D 1; - *addrs =3D g_new0(SocketAddress *, 1); - (*addrs)[0] =3D QAPI_CLONE(SocketAddress, addr); + *addrs =3D g_new0(SocketAddressLegacy *, 1); + (*addrs)[0] =3D QAPI_CLONE(SocketAddressLegacy, addr); =20 return 0; } =20 =20 int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, size_t *naddrs, - SocketAddress ***addrs, + SocketAddressLegacy ***addrs, Error **errp) { switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: return qio_dns_resolver_lookup_sync_inet(resolver, addr, naddrs, addrs, errp); =20 - case SOCKET_ADDRESS_KIND_UNIX: - case SOCKET_ADDRESS_KIND_VSOCK: - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_FD: return qio_dns_resolver_lookup_sync_nop(resolver, addr, naddrs, @@ -172,8 +172,8 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolv= er, =20 =20 struct QIODNSResolverLookupData { - SocketAddress *addr; - SocketAddress **addrs; + SocketAddressLegacy *addr; + SocketAddressLegacy **addrs; size_t naddrs; }; =20 @@ -183,9 +183,9 @@ static void qio_dns_resolver_lookup_data_free(gpointer = opaque) struct QIODNSResolverLookupData *data =3D opaque; size_t i; =20 - qapi_free_SocketAddress(data->addr); + qapi_free_SocketAddressLegacy(data->addr); for (i =3D 0; i < data->naddrs; i++) { - qapi_free_SocketAddress(data->addrs[i]); + qapi_free_SocketAddressLegacy(data->addrs[i]); } =20 g_free(data->addrs); @@ -216,7 +216,7 @@ static void qio_dns_resolver_lookup_worker(QIOTask *tas= k, =20 =20 void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddress *addr, + SocketAddressLegacy *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify) @@ -225,7 +225,7 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, struct QIODNSResolverLookupData *data =3D g_new0(struct QIODNSResolverLookupData, 1); =20 - data->addr =3D QAPI_CLONE(SocketAddress, addr); + data->addr =3D QAPI_CLONE(SocketAddressLegacy, addr); =20 task =3D qio_task_new(OBJECT(resolver), func, opaque, notify); =20 @@ -239,7 +239,7 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddress ***addrs) + SocketAddressLegacy ***addrs) { struct QIODNSResolverLookupData *data =3D qio_task_get_result_pointer(task); @@ -252,9 +252,9 @@ void qio_dns_resolver_lookup_result(QIODNSResolver *res= olver, } =20 *naddrs =3D data->naddrs; - *addrs =3D g_new0(SocketAddress *, data->naddrs); + *addrs =3D g_new0(SocketAddressLegacy *, data->naddrs); for (i =3D 0; i < data->naddrs; i++) { - (*addrs)[i] =3D QAPI_CLONE(SocketAddress, data->addrs[i]); + (*addrs)[i] =3D QAPI_CLONE(SocketAddressLegacy, data->addrs[i]); } } =20 diff --git a/migration/socket.c b/migration/socket.c index 5fdc723..3203276 100644 --- a/migration/socket.c +++ b/migration/socket.c @@ -25,30 +25,30 @@ #include "trace.h" =20 =20 -static SocketAddress *tcp_build_address(const char *host_port, Error **err= p) +static SocketAddressLegacy *tcp_build_address(const char *host_port, Error= **errp) { InetSocketAddress *iaddr =3D g_new(InetSocketAddress, 1); - SocketAddress *saddr; + SocketAddressLegacy *saddr; =20 if (inet_parse(iaddr, host_port, errp)) { qapi_free_InetSocketAddress(iaddr); return NULL; } =20 - saddr =3D g_new0(SocketAddress, 1); - saddr->type =3D SOCKET_ADDRESS_KIND_INET; + saddr =3D g_new0(SocketAddressLegacy, 1); + saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; saddr->u.inet.data =3D iaddr; =20 return saddr; } =20 =20 -static SocketAddress *unix_build_address(const char *path) +static SocketAddressLegacy *unix_build_address(const char *path) { - SocketAddress *saddr; + SocketAddressLegacy *saddr; =20 - saddr =3D g_new0(SocketAddress, 1); - saddr->type =3D SOCKET_ADDRESS_KIND_UNIX; + saddr =3D g_new0(SocketAddressLegacy, 1); + saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; saddr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); saddr->u.q_unix.data->path =3D g_strdup(path); =20 @@ -90,14 +90,14 @@ static void socket_outgoing_migration(QIOTask *task, } =20 static void socket_start_outgoing_migration(MigrationState *s, - SocketAddress *saddr, + SocketAddressLegacy *saddr, Error **errp) { QIOChannelSocket *sioc =3D qio_channel_socket_new(); struct SocketConnectData *data =3D g_new0(struct SocketConnectData, 1); =20 data->s =3D s; - if (saddr->type =3D=3D SOCKET_ADDRESS_KIND_INET) { + if (saddr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { data->hostname =3D g_strdup(saddr->u.inet.data->host); } =20 @@ -107,7 +107,7 @@ static void socket_start_outgoing_migration(MigrationSt= ate *s, socket_outgoing_migration, data, socket_connect_data_free); - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); } =20 void tcp_start_outgoing_migration(MigrationState *s, @@ -115,7 +115,7 @@ void tcp_start_outgoing_migration(MigrationState *s, Error **errp) { Error *err =3D NULL; - SocketAddress *saddr =3D tcp_build_address(host_port, &err); + SocketAddressLegacy *saddr =3D tcp_build_address(host_port, &err); if (!err) { socket_start_outgoing_migration(s, saddr, &err); } @@ -126,7 +126,7 @@ void unix_start_outgoing_migration(MigrationState *s, const char *path, Error **errp) { - SocketAddress *saddr =3D unix_build_address(path); + SocketAddressLegacy *saddr =3D unix_build_address(path); socket_start_outgoing_migration(s, saddr, errp); } =20 @@ -160,7 +160,7 @@ out: } =20 =20 -static void socket_start_incoming_migration(SocketAddress *saddr, +static void socket_start_incoming_migration(SocketAddressLegacy *saddr, Error **errp) { QIOChannelSocket *listen_ioc =3D qio_channel_socket_new(); @@ -170,7 +170,7 @@ static void socket_start_incoming_migration(SocketAddre= ss *saddr, =20 if (qio_channel_socket_listen_sync(listen_ioc, saddr, errp) < 0) { object_unref(OBJECT(listen_ioc)); - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); return; } =20 @@ -179,13 +179,13 @@ static void socket_start_incoming_migration(SocketAdd= ress *saddr, socket_accept_incoming_migration, listen_ioc, (GDestroyNotify)object_unref); - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); } =20 void tcp_start_incoming_migration(const char *host_port, Error **errp) { Error *err =3D NULL; - SocketAddress *saddr =3D tcp_build_address(host_port, &err); + SocketAddressLegacy *saddr =3D tcp_build_address(host_port, &err); if (!err) { socket_start_incoming_migration(saddr, &err); } @@ -194,6 +194,6 @@ void tcp_start_incoming_migration(const char *host_port= , Error **errp) =20 void unix_start_incoming_migration(const char *path, Error **errp) { - SocketAddress *saddr =3D unix_build_address(path); + SocketAddressLegacy *saddr =3D unix_build_address(path); socket_start_incoming_migration(saddr, errp); } diff --git a/net/socket.c b/net/socket.c index b8c931e..ecd165f 100644 --- a/net/socket.c +++ b/net/socket.c @@ -489,7 +489,7 @@ static int net_socket_listen_init(NetClientState *peer, { NetClientState *nc; NetSocketState *s; - SocketAddress *saddr; + SocketAddressLegacy *saddr; int ret; Error *local_error =3D NULL; =20 @@ -501,7 +501,7 @@ static int net_socket_listen_init(NetClientState *peer, =20 ret =3D socket_listen(saddr, &local_error); if (ret < 0) { - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); error_report_err(local_error); return -1; } @@ -514,20 +514,20 @@ static int net_socket_listen_init(NetClientState *pee= r, net_socket_rs_init(&s->rs, net_socket_rs_finalize); =20 qemu_set_fd_handler(s->listen_fd, net_socket_accept, NULL, s); - qapi_free_SocketAddress(saddr); + qapi_free_SocketAddressLegacy(saddr); return 0; } =20 typedef struct { NetClientState *peer; - SocketAddress *saddr; + SocketAddressLegacy *saddr; char *model; char *name; } socket_connect_data; =20 static void socket_connect_data_free(socket_connect_data *c) { - qapi_free_SocketAddress(c->saddr); + qapi_free_SocketAddressLegacy(c->saddr); g_free(c->model); g_free(c->name); g_free(c); diff --git a/qapi-schema.json b/qapi-schema.json index 5bb8cb7..56646e0 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4122,13 +4122,15 @@ 'port': 'str' } } =20 ## -# @SocketAddress: +# @SocketAddressLegacy: # # Captures the address of a socket, which could also be a named file descr= iptor # +# Note: This type is deprecated in favor of SocketAddressFlat. +# # Since: 1.3 ## -{ 'union': 'SocketAddress', +{ 'union': 'SocketAddressLegacy', 'data': { 'inet': 'InetSocketAddress', 'unix': 'UnixSocketAddress', @@ -4156,7 +4158,7 @@ # # @type: Transport type # -# This is just like SocketAddress, except it's a flat union rather +# This is just like SocketAddressLegacy, except it's a flat union rather # than a simple union. Nicer because it avoids nesting on the wire, # i.e. this form has fewer {}. # @@ -4886,7 +4888,7 @@ # # Since: 1.4 ## -{ 'struct': 'ChardevSocket', 'data': { 'addr' : 'SocketAddress', +{ 'struct': 'ChardevSocket', 'data': { 'addr' : 'SocketAddressLegacy= ', '*tls-creds' : 'str', '*server' : 'bool', '*wait' : 'bool', @@ -4906,8 +4908,8 @@ # # Since: 1.5 ## -{ 'struct': 'ChardevUdp', 'data': { 'remote' : 'SocketAddress', - '*local' : 'SocketAddress' }, +{ 'struct': 'ChardevUdp', 'data': { 'remote' : 'SocketAddressLegacy', + '*local' : 'SocketAddressLegacy' }, 'base': 'ChardevCommon' } =20 ## diff --git a/qapi/block.json b/qapi/block.json index 46fca0e..6a2fdc7 100644 --- a/qapi/block.json +++ b/qapi/block.json @@ -204,7 +204,7 @@ # Since: 1.3.0 ## { 'command': 'nbd-server-start', - 'data': { 'addr': 'SocketAddress', + 'data': { 'addr': 'SocketAddressLegacy', '*tls-creds': 'str'} } =20 ## diff --git a/qemu-nbd.c b/qemu-nbd.c index e4f00e2..82d0859 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -57,7 +57,7 @@ static NBDExport *exp; static bool newproto; static int verbose; static char *srcpath; -static SocketAddress *saddr; +static SocketAddressLegacy *saddr; static int persistent =3D 0; static enum { RUNNING, TERMINATE, TERMINATING, TERMINATED } state; static int shared =3D 1; @@ -387,20 +387,20 @@ static void nbd_update_server_watch(void) } =20 =20 -static SocketAddress *nbd_build_socket_address(const char *sockpath, +static SocketAddressLegacy *nbd_build_socket_address(const char *sockpath, const char *bindto, const char *port) { - SocketAddress *saddr; + SocketAddressLegacy *saddr; =20 - saddr =3D g_new0(SocketAddress, 1); + saddr =3D g_new0(SocketAddressLegacy, 1); if (sockpath) { - saddr->type =3D SOCKET_ADDRESS_KIND_UNIX; + saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; saddr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); saddr->u.q_unix.data->path =3D g_strdup(sockpath); } else { InetSocketAddress *inet; - saddr->type =3D SOCKET_ADDRESS_KIND_INET; + saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; inet =3D saddr->u.inet.data =3D g_new0(InetSocketAddress, 1); inet->host =3D g_strdup(bindto); if (port) { diff --git a/qga/channel-posix.c b/qga/channel-posix.c index 3f34465..65ab8eb 100644 --- a/qga/channel-posix.c +++ b/qga/channel-posix.c @@ -203,7 +203,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, case GA_CHANNEL_VSOCK_LISTEN: { if (fd < 0) { Error *local_err =3D NULL; - SocketAddress *addr; + SocketAddressLegacy *addr; char *addr_str; =20 addr_str =3D g_strdup_printf("vsock:%s", path); @@ -216,7 +216,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, } =20 fd =3D socket_listen(addr, &local_err); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); if (local_err !=3D NULL) { g_critical("%s", error_get_pretty(local_err)); error_free(local_err); diff --git a/qga/main.c b/qga/main.c index ad6f68f..cae4d7b 100644 --- a/qga/main.c +++ b/qga/main.c @@ -1379,7 +1379,7 @@ int main(int argc, char **argv) goto end; } if (socket_activation) { - SocketAddress *addr; + SocketAddressLegacy *addr; =20 g_free(config->method); g_free(config->channel_path); @@ -1388,13 +1388,13 @@ int main(int argc, char **argv) =20 addr =3D socket_local_address(FIRST_SOCKET_ACTIVATION_FD, NULL); if (addr) { - if (addr->type =3D=3D SOCKET_ADDRESS_KIND_UNIX) { + if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX) { config->method =3D g_strdup("unix-listen"); - } else if (addr->type =3D=3D SOCKET_ADDRESS_KIND_VSOCK) { + } else if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK)= { config->method =3D g_strdup("vsock-listen"); } =20 - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } =20 if (!config->method) { diff --git a/tests/test-io-channel-socket.c b/tests/test-io-channel-socket.c index c5c1314..a66ffc2 100644 --- a/tests/test-io-channel-socket.c +++ b/tests/test-io-channel-socket.c @@ -115,8 +115,8 @@ static void test_io_channel_set_socket_bufs(QIOChannel = *src, } =20 =20 -static void test_io_channel_setup_sync(SocketAddress *listen_addr, - SocketAddress *connect_addr, +static void test_io_channel_setup_sync(SocketAddressLegacy *listen_addr, + SocketAddressLegacy *connect_addr, QIOChannel **src, QIOChannel **dst) { @@ -125,14 +125,14 @@ static void test_io_channel_setup_sync(SocketAddress = *listen_addr, lioc =3D qio_channel_socket_new(); qio_channel_socket_listen_sync(lioc, listen_addr, &error_abort); =20 - if (listen_addr->type =3D=3D SOCKET_ADDRESS_KIND_INET) { - SocketAddress *laddr =3D qio_channel_socket_get_local_address( + if (listen_addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { + SocketAddressLegacy *laddr =3D qio_channel_socket_get_local_addres= s( lioc, &error_abort); =20 g_free(connect_addr->u.inet.data->port); connect_addr->u.inet.data->port =3D g_strdup(laddr->u.inet.data->p= ort); =20 - qapi_free_SocketAddress(laddr); + qapi_free_SocketAddressLegacy(laddr); } =20 *src =3D QIO_CHANNEL(qio_channel_socket_new()); @@ -165,8 +165,8 @@ static void test_io_channel_complete(QIOTask *task, } =20 =20 -static void test_io_channel_setup_async(SocketAddress *listen_addr, - SocketAddress *connect_addr, +static void test_io_channel_setup_async(SocketAddressLegacy *listen_addr, + SocketAddressLegacy *connect_addr, QIOChannel **src, QIOChannel **dst) { @@ -186,14 +186,14 @@ static void test_io_channel_setup_async(SocketAddress= *listen_addr, =20 g_assert(!data.err); =20 - if (listen_addr->type =3D=3D SOCKET_ADDRESS_KIND_INET) { - SocketAddress *laddr =3D qio_channel_socket_get_local_address( + if (listen_addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { + SocketAddressLegacy *laddr =3D qio_channel_socket_get_local_addres= s( lioc, &error_abort); =20 g_free(connect_addr->u.inet.data->port); connect_addr->u.inet.data->port =3D g_strdup(laddr->u.inet.data->p= ort); =20 - qapi_free_SocketAddress(laddr); + qapi_free_SocketAddressLegacy(laddr); } =20 *src =3D QIO_CHANNEL(qio_channel_socket_new()); @@ -221,8 +221,8 @@ static void test_io_channel_setup_async(SocketAddress *= listen_addr, =20 =20 static void test_io_channel(bool async, - SocketAddress *listen_addr, - SocketAddress *connect_addr, + SocketAddressLegacy *listen_addr, + SocketAddressLegacy *connect_addr, bool passFD) { QIOChannel *src, *dst; @@ -297,17 +297,17 @@ static void test_io_channel(bool async, =20 static void test_io_channel_ipv4(bool async) { - SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); - SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); =20 - listen_addr->type =3D SOCKET_ADDRESS_KIND_INET; + listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; listen_addr->u.inet.data =3D g_new(InetSocketAddress, 1); *listen_addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup("127.0.0.1"), .port =3D NULL, /* Auto-select */ }; =20 - connect_addr->type =3D SOCKET_ADDRESS_KIND_INET; + connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; connect_addr->u.inet.data =3D g_new(InetSocketAddress, 1); *connect_addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup("127.0.0.1"), @@ -316,8 +316,8 @@ static void test_io_channel_ipv4(bool async) =20 test_io_channel(async, listen_addr, connect_addr, false); =20 - qapi_free_SocketAddress(listen_addr); - qapi_free_SocketAddress(connect_addr); + qapi_free_SocketAddressLegacy(listen_addr); + qapi_free_SocketAddressLegacy(connect_addr); } =20 =20 @@ -335,17 +335,17 @@ static void test_io_channel_ipv4_async(void) =20 static void test_io_channel_ipv6(bool async) { - SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); - SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); =20 - listen_addr->type =3D SOCKET_ADDRESS_KIND_INET; + listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; listen_addr->u.inet.data =3D g_new(InetSocketAddress, 1); *listen_addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup("::1"), .port =3D NULL, /* Auto-select */ }; =20 - connect_addr->type =3D SOCKET_ADDRESS_KIND_INET; + connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; connect_addr->u.inet.data =3D g_new(InetSocketAddress, 1); *connect_addr->u.inet.data =3D (InetSocketAddress) { .host =3D g_strdup("::1"), @@ -354,8 +354,8 @@ static void test_io_channel_ipv6(bool async) =20 test_io_channel(async, listen_addr, connect_addr, false); =20 - qapi_free_SocketAddress(listen_addr); - qapi_free_SocketAddress(connect_addr); + qapi_free_SocketAddressLegacy(listen_addr); + qapi_free_SocketAddressLegacy(connect_addr); } =20 =20 @@ -374,22 +374,22 @@ static void test_io_channel_ipv6_async(void) #ifndef _WIN32 static void test_io_channel_unix(bool async) { - SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); - SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); =20 #define TEST_SOCKET "test-io-channel-socket.sock" - listen_addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; listen_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); listen_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); =20 - connect_addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; connect_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); connect_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); =20 test_io_channel(async, listen_addr, connect_addr, true); =20 - qapi_free_SocketAddress(listen_addr); - qapi_free_SocketAddress(connect_addr); + qapi_free_SocketAddressLegacy(listen_addr); + qapi_free_SocketAddressLegacy(connect_addr); g_assert(g_file_test(TEST_SOCKET, G_FILE_TEST_EXISTS) =3D=3D FALSE); } =20 @@ -407,8 +407,8 @@ static void test_io_channel_unix_async(void) =20 static void test_io_channel_unix_fd_pass(void) { - SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); - SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); + SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); QIOChannel *src, *dst; int testfd; int fdsend[3]; @@ -427,11 +427,11 @@ static void test_io_channel_unix_fd_pass(void) fdsend[1] =3D testfd; fdsend[2] =3D testfd; =20 - listen_addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; listen_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); listen_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); =20 - connect_addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; connect_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); connect_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); =20 @@ -488,8 +488,8 @@ static void test_io_channel_unix_fd_pass(void) =20 object_unref(OBJECT(src)); object_unref(OBJECT(dst)); - qapi_free_SocketAddress(listen_addr); - qapi_free_SocketAddress(connect_addr); + qapi_free_SocketAddressLegacy(listen_addr); + qapi_free_SocketAddressLegacy(connect_addr); unlink(TEST_SOCKET); unlink(TEST_FILE); close(testfd); diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c index 5ae29c1..c7fa9b6 100644 --- a/ui/vnc-auth-sasl.c +++ b/ui/vnc-auth-sasl.c @@ -498,7 +498,7 @@ vnc_socket_ip_addr_string(QIOChannelSocket *ioc, bool local, Error **errp) { - SocketAddress *addr; + SocketAddressLegacy *addr; char *ret; =20 if (local) { @@ -510,13 +510,13 @@ vnc_socket_ip_addr_string(QIOChannelSocket *ioc, return NULL; } =20 - if (addr->type !=3D SOCKET_ADDRESS_KIND_INET) { + if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { error_setg(errp, "Not an inet socket type"); return NULL; } ret =3D g_strdup_printf("%s;%s", addr->u.inet.data->host, addr->u.inet.data->port); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); return ret; } =20 diff --git a/ui/vnc.c b/ui/vnc.c index 349cfc9..5090a25 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -108,12 +108,12 @@ static void vnc_set_share_mode(VncState *vs, VncShare= Mode mode) } =20 =20 -static void vnc_init_basic_info(SocketAddress *addr, +static void vnc_init_basic_info(SocketAddressLegacy *addr, VncBasicInfo *info, Error **errp) { switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: info->host =3D g_strdup(addr->u.inet.data->host); info->service =3D g_strdup(addr->u.inet.data->port); if (addr->u.inet.data->ipv6) { @@ -123,16 +123,16 @@ static void vnc_init_basic_info(SocketAddress *addr, } break; =20 - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: info->host =3D g_strdup(""); info->service =3D g_strdup(addr->u.q_unix.data->path); info->family =3D NETWORK_ADDRESS_FAMILY_UNIX; break; =20 - case SOCKET_ADDRESS_KIND_VSOCK: - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressKind_lookup[addr->type]); + SocketAddressLegacyKind_lookup[addr->type]); break; default: abort(); @@ -145,7 +145,7 @@ static void vnc_init_basic_info_from_server_addr(QIOCha= nnelSocket *ioc, VncBasicInfo *info, Error **errp) { - SocketAddress *addr =3D NULL; + SocketAddressLegacy *addr =3D NULL; =20 if (!ioc) { error_setg(errp, "No listener socket available"); @@ -158,14 +158,14 @@ static void vnc_init_basic_info_from_server_addr(QIOC= hannelSocket *ioc, } =20 vnc_init_basic_info(addr, info, errp); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } =20 static void vnc_init_basic_info_from_remote_addr(QIOChannelSocket *ioc, VncBasicInfo *info, Error **errp) { - SocketAddress *addr =3D NULL; + SocketAddressLegacy *addr =3D NULL; =20 addr =3D qio_channel_socket_get_remote_address(ioc, errp); if (!addr) { @@ -173,7 +173,7 @@ static void vnc_init_basic_info_from_remote_addr(QIOCha= nnelSocket *ioc, } =20 vnc_init_basic_info(addr, info, errp); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } =20 static const char *vnc_auth_name(VncDisplay *vd) { @@ -377,7 +377,7 @@ VncInfo *qmp_query_vnc(Error **errp) { VncInfo *info =3D g_malloc0(sizeof(*info)); VncDisplay *vd =3D vnc_display_find(NULL); - SocketAddress *addr =3D NULL; + SocketAddressLegacy *addr =3D NULL; =20 if (vd =3D=3D NULL || !vd->nlsock) { info->enabled =3D false; @@ -398,7 +398,7 @@ VncInfo *qmp_query_vnc(Error **errp) } =20 switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: info->host =3D g_strdup(addr->u.inet.data->host); info->service =3D g_strdup(addr->u.inet.data->port); if (addr->u.inet.data->ipv6) { @@ -408,16 +408,16 @@ VncInfo *qmp_query_vnc(Error **errp) } break; =20 - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: info->host =3D g_strdup(""); info->service =3D g_strdup(addr->u.q_unix.data->path); info->family =3D NETWORK_ADDRESS_FAMILY_UNIX; break; =20 - case SOCKET_ADDRESS_KIND_VSOCK: - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressKind_lookup[addr->type]); + SocketAddressLegacyKind_lookup[addr->type]); goto out_error; default: abort(); @@ -431,11 +431,11 @@ VncInfo *qmp_query_vnc(Error **errp) info->auth =3D g_strdup(vnc_auth_name(vd)); } =20 - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); return info; =20 out_error: - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); qapi_free_VncInfo(info); return NULL; } @@ -455,7 +455,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOCh= annelSocket *ioc, VncServerInfo2List *list; VncServerInfo2 *info; Error *err =3D NULL; - SocketAddress *addr; + SocketAddressLegacy *addr; =20 addr =3D qio_channel_socket_get_local_address(ioc, &err); if (!addr) { @@ -465,7 +465,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOCh= annelSocket *ioc, =20 info =3D g_new0(VncServerInfo2, 1); vnc_init_basic_info(addr, qapi_VncServerInfo2_base(info), &err); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); if (err) { qapi_free_VncServerInfo2(info); error_free(err); @@ -3149,7 +3149,7 @@ int vnc_display_pw_expire(const char *id, time_t expi= res) =20 static void vnc_display_print_local_addr(VncDisplay *vd) { - SocketAddress *addr; + SocketAddressLegacy *addr; Error *err =3D NULL; =20 if (!vd->nlsock) { @@ -3161,14 +3161,14 @@ static void vnc_display_print_local_addr(VncDisplay= *vd) return; } =20 - if (addr->type !=3D SOCKET_ADDRESS_KIND_INET) { - qapi_free_SocketAddress(addr); + if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { + qapi_free_SocketAddressLegacy(addr); return; } error_printf_unless_qmp("VNC server running on %s:%s\n", addr->u.inet.data->host, addr->u.inet.data->port); - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } =20 static QemuOptsList qemu_vnc_opts =3D { @@ -3414,16 +3414,16 @@ static int vnc_display_get_address(const char *addr= str, bool has_ipv6, bool ipv4, bool ipv6, - SocketAddress **retaddr, + SocketAddressLegacy **retaddr, Error **errp) { int ret =3D -1; - SocketAddress *addr =3D NULL; + SocketAddressLegacy *addr =3D NULL; =20 - addr =3D g_new0(SocketAddress, 1); + addr =3D g_new0(SocketAddressLegacy, 1); =20 if (strncmp(addrstr, "unix:", 5) =3D=3D 0) { - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); addr->u.q_unix.data->path =3D g_strdup(addrstr + 5); =20 @@ -3461,7 +3461,7 @@ static int vnc_display_get_address(const char *addrst= r, } } =20 - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; inet =3D addr->u.inet.data =3D g_new0(InetSocketAddress, 1); if (addrstr[0] =3D=3D '[' && addrstr[hostlen - 1] =3D=3D ']') { inet->host =3D g_strndup(addrstr + 1, hostlen - 2); @@ -3518,21 +3518,21 @@ static int vnc_display_get_address(const char *addr= str, =20 cleanup: if (ret < 0) { - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } return ret; } =20 static int vnc_display_get_addresses(QemuOpts *opts, bool reverse, - SocketAddress ***retsaddr, + SocketAddressLegacy ***retsaddr, size_t *retnsaddr, - SocketAddress ***retwsaddr, + SocketAddressLegacy ***retwsaddr, size_t *retnwsaddr, Error **errp) { - SocketAddress *saddr =3D NULL; - SocketAddress *wsaddr =3D NULL; + SocketAddressLegacy *saddr =3D NULL; + SocketAddressLegacy *wsaddr =3D NULL; QemuOptsIter addriter; const char *addr; int to =3D qemu_opt_get_number(opts, "to", 0); @@ -3577,7 +3577,7 @@ static int vnc_display_get_addresses(QemuOpts *opts, if (displaynum =3D=3D -1) { displaynum =3D rv; } - *retsaddr =3D g_renew(SocketAddress *, *retsaddr, *retnsaddr + 1); + *retsaddr =3D g_renew(SocketAddressLegacy *, *retsaddr, *retnsaddr= + 1); (*retsaddr)[(*retnsaddr)++] =3D saddr; } =20 @@ -3601,8 +3601,8 @@ static int vnc_display_get_addresses(QemuOpts *opts, * address for websocket too */ if (*retnsaddr =3D=3D 1 && - (*retsaddr)[0]->type =3D=3D SOCKET_ADDRESS_KIND_INET && - wsaddr->type =3D=3D SOCKET_ADDRESS_KIND_INET && + (*retsaddr)[0]->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && + wsaddr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && g_str_equal(wsaddr->u.inet.data->host, "") && !g_str_equal((*retsaddr)[0]->u.inet.data->host, "")) { g_free(wsaddr->u.inet.data->host); @@ -3610,7 +3610,7 @@ static int vnc_display_get_addresses(QemuOpts *opts, g_strdup((*retsaddr)[0]->u.inet.data->host); } =20 - *retwsaddr =3D g_renew(SocketAddress *, *retwsaddr, *retnwsaddr + = 1); + *retwsaddr =3D g_renew(SocketAddressLegacy *, *retwsaddr, *retnwsa= ddr + 1); (*retwsaddr)[(*retnwsaddr)++] =3D wsaddr; } =20 @@ -3618,11 +3618,11 @@ static int vnc_display_get_addresses(QemuOpts *opts, cleanup: if (ret < 0) { for (i =3D 0; i < *retnsaddr; i++) { - qapi_free_SocketAddress((*retsaddr)[i]); + qapi_free_SocketAddressLegacy((*retsaddr)[i]); } g_free(*retsaddr); for (i =3D 0; i < *retnwsaddr; i++) { - qapi_free_SocketAddress((*retwsaddr)[i]); + qapi_free_SocketAddressLegacy((*retwsaddr)[i]); } g_free(*retwsaddr); *retsaddr =3D *retwsaddr =3D NULL; @@ -3632,9 +3632,9 @@ static int vnc_display_get_addresses(QemuOpts *opts, } =20 static int vnc_display_connect(VncDisplay *vd, - SocketAddress **saddr, + SocketAddressLegacy **saddr, size_t nsaddr, - SocketAddress **wsaddr, + SocketAddressLegacy **wsaddr, size_t nwsaddr, Error **errp) { @@ -3648,8 +3648,8 @@ static int vnc_display_connect(VncDisplay *vd, error_setg(errp, "Expected a single address in reverse mode"); return -1; } - /* TODO SOCKET_ADDRESS_KIND_FD when fd has AF_UNIX */ - vd->is_unix =3D saddr[0]->type =3D=3D SOCKET_ADDRESS_KIND_UNIX; + /* TODO SOCKET_ADDRESS_LEGACY_KIND_FD when fd has AF_UNIX */ + vd->is_unix =3D saddr[0]->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; sioc =3D qio_channel_socket_new(); qio_channel_set_name(QIO_CHANNEL(sioc), "vnc-reverse"); if (qio_channel_socket_connect_sync(sioc, saddr[0], errp) < 0) { @@ -3662,7 +3662,7 @@ static int vnc_display_connect(VncDisplay *vd, =20 =20 static int vnc_display_listen_addr(VncDisplay *vd, - SocketAddress *addr, + SocketAddressLegacy *addr, const char *name, QIOChannelSocket ***lsock, guint **lsock_tag, @@ -3670,7 +3670,7 @@ static int vnc_display_listen_addr(VncDisplay *vd, Error **errp) { QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); - SocketAddress **rawaddrs =3D NULL; + SocketAddressLegacy **rawaddrs =3D NULL; size_t nrawaddrs =3D 0; Error *listenerr =3D NULL; bool listening =3D false; @@ -3700,7 +3700,7 @@ static int vnc_display_listen_addr(VncDisplay *vd, } =20 for (i =3D 0; i < nrawaddrs; i++) { - qapi_free_SocketAddress(rawaddrs[i]); + qapi_free_SocketAddressLegacy(rawaddrs[i]); } g_free(rawaddrs); =20 @@ -3724,9 +3724,9 @@ static int vnc_display_listen_addr(VncDisplay *vd, =20 =20 static int vnc_display_listen(VncDisplay *vd, - SocketAddress **saddr, + SocketAddressLegacy **saddr, size_t nsaddr, - SocketAddress **wsaddr, + SocketAddressLegacy **wsaddr, size_t nwsaddr, Error **errp) { @@ -3761,7 +3761,7 @@ void vnc_display_open(const char *id, Error **errp) { VncDisplay *vd =3D vnc_display_find(id); QemuOpts *opts =3D qemu_opts_find(&qemu_vnc_opts, id); - SocketAddress **saddr =3D NULL, **wsaddr =3D NULL; + SocketAddressLegacy **saddr =3D NULL, **wsaddr =3D NULL; size_t nsaddr, nwsaddr; const char *share, *device_id; QemuConsole *con; @@ -3997,10 +3997,10 @@ void vnc_display_open(const char *id, Error **errp) =20 cleanup: for (i =3D 0; i < nsaddr; i++) { - qapi_free_SocketAddress(saddr[i]); + qapi_free_SocketAddressLegacy(saddr[i]); } for (i =3D 0; i < nwsaddr; i++) { - qapi_free_SocketAddress(wsaddr[i]); + qapi_free_SocketAddressLegacy(wsaddr[i]); } return; =20 diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 62c93ba..4c48203 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -1029,17 +1029,17 @@ int unix_connect(const char *path, Error **errp) } =20 =20 -SocketAddress *socket_parse(const char *str, Error **errp) +SocketAddressLegacy *socket_parse(const char *str, Error **errp) { - SocketAddress *addr; + SocketAddressLegacy *addr; =20 - addr =3D g_new0(SocketAddress, 1); + addr =3D g_new0(SocketAddressLegacy, 1); if (strstart(str, "unix:", NULL)) { if (str[5] =3D=3D '\0') { error_setg(errp, "invalid Unix socket address"); goto fail; } else { - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D g_new(UnixSocketAddress, 1); addr->u.q_unix.data->path =3D g_strdup(str + 5); } @@ -1048,18 +1048,18 @@ SocketAddress *socket_parse(const char *str, Error = **errp) error_setg(errp, "invalid file descriptor address"); goto fail; } else { - addr->type =3D SOCKET_ADDRESS_KIND_FD; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; addr->u.fd.data =3D g_new(String, 1); addr->u.fd.data->str =3D g_strdup(str + 3); } } else if (strstart(str, "vsock:", NULL)) { - addr->type =3D SOCKET_ADDRESS_KIND_VSOCK; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; addr->u.vsock.data =3D g_new(VsockSocketAddress, 1); if (vsock_parse(addr->u.vsock.data, str + strlen("vsock:"), errp))= { goto fail; } } else { - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D g_new(InetSocketAddress, 1); if (inet_parse(addr->u.inet.data, str, errp)) { goto fail; @@ -1068,25 +1068,25 @@ SocketAddress *socket_parse(const char *str, Error = **errp) return addr; =20 fail: - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); return NULL; } =20 -int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callbac= k, +int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *c= allback, void *opaque, Error **errp) { int fd; =20 switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: fd =3D inet_connect_saddr(addr->u.inet.data, callback, opaque, err= p); break; =20 - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: fd =3D unix_connect_saddr(addr->u.q_unix.data, callback, opaque, e= rrp); break; =20 - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_FD: fd =3D monitor_get_fd(cur_mon, addr->u.fd.data->str, errp); if (fd >=3D 0 && callback) { qemu_set_nonblock(fd); @@ -1094,7 +1094,7 @@ int socket_connect(SocketAddress *addr, NonBlockingCo= nnectHandler *callback, } break; =20 - case SOCKET_ADDRESS_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: fd =3D vsock_connect_saddr(addr->u.vsock.data, callback, opaque, e= rrp); break; =20 @@ -1104,24 +1104,24 @@ int socket_connect(SocketAddress *addr, NonBlocking= ConnectHandler *callback, return fd; } =20 -int socket_listen(SocketAddress *addr, Error **errp) +int socket_listen(SocketAddressLegacy *addr, Error **errp) { int fd; =20 switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: fd =3D inet_listen_saddr(addr->u.inet.data, 0, false, errp); break; =20 - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: fd =3D unix_listen_saddr(addr->u.q_unix.data, false, errp); break; =20 - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_FD: fd =3D monitor_get_fd(cur_mon, addr->u.fd.data->str, errp); break; =20 - case SOCKET_ADDRESS_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: fd =3D vsock_listen_saddr(addr->u.vsock.data, errp); break; =20 @@ -1133,11 +1133,11 @@ int socket_listen(SocketAddress *addr, Error **errp) =20 void socket_listen_cleanup(int fd, Error **errp) { - SocketAddress *addr; + SocketAddressLegacy *addr; =20 addr =3D socket_local_address(fd, errp); =20 - if (addr->type =3D=3D SOCKET_ADDRESS_KIND_UNIX + if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX && addr->u.q_unix.data->path) { if (unlink(addr->u.q_unix.data->path) < 0 && errno !=3D ENOENT) { error_setg_errno(errp, errno, @@ -1146,19 +1146,19 @@ void socket_listen_cleanup(int fd, Error **errp) } } =20 - qapi_free_SocketAddress(addr); + qapi_free_SocketAddressLegacy(addr); } =20 -int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp) +int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, = Error **errp) { int fd; =20 /* - * TODO SOCKET_ADDRESS_KIND_FD when fd is AF_INET or AF_INET6 + * TODO SOCKET_ADDRESS_LEGACY_KIND_FD when fd is AF_INET or AF_INET6 * (although other address families can do SOCK_DGRAM, too) */ switch (remote->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: fd =3D inet_dgram_saddr(remote->u.inet.data, local ? local->u.inet.data : NULL, errp); break; @@ -1171,14 +1171,14 @@ int socket_dgram(SocketAddress *remote, SocketAddre= ss *local, Error **errp) } =20 =20 -static SocketAddress * +static SocketAddressLegacy * socket_sockaddr_to_address_inet(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { char host[NI_MAXHOST]; char serv[NI_MAXSERV]; - SocketAddress *addr; + SocketAddressLegacy *addr; InetSocketAddress *inet; int ret; =20 @@ -1192,8 +1192,8 @@ socket_sockaddr_to_address_inet(struct sockaddr_stora= ge *sa, return NULL; } =20 - addr =3D g_new0(SocketAddress, 1); - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr =3D g_new0(SocketAddressLegacy, 1); + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; inet =3D addr->u.inet.data =3D g_new0(InetSocketAddress, 1); inet->host =3D g_strdup(host); inet->port =3D g_strdup(serv); @@ -1208,16 +1208,16 @@ socket_sockaddr_to_address_inet(struct sockaddr_sto= rage *sa, =20 =20 #ifndef WIN32 -static SocketAddress * +static SocketAddressLegacy * socket_sockaddr_to_address_unix(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { - SocketAddress *addr; + SocketAddressLegacy *addr; struct sockaddr_un *su =3D (struct sockaddr_un *)sa; =20 - addr =3D g_new0(SocketAddress, 1); - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr =3D g_new0(SocketAddressLegacy, 1); + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); if (su->sun_path[0]) { addr->u.q_unix.data->path =3D g_strndup(su->sun_path, @@ -1229,17 +1229,17 @@ socket_sockaddr_to_address_unix(struct sockaddr_sto= rage *sa, #endif /* WIN32 */ =20 #ifdef CONFIG_AF_VSOCK -static SocketAddress * +static SocketAddressLegacy * socket_sockaddr_to_address_vsock(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { - SocketAddress *addr; + SocketAddressLegacy *addr; VsockSocketAddress *vaddr; struct sockaddr_vm *svm =3D (struct sockaddr_vm *)sa; =20 - addr =3D g_new0(SocketAddress, 1); - addr->type =3D SOCKET_ADDRESS_KIND_VSOCK; + addr =3D g_new0(SocketAddressLegacy, 1); + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; addr->u.vsock.data =3D vaddr =3D g_new0(VsockSocketAddress, 1); vaddr->cid =3D g_strdup_printf("%u", svm->svm_cid); vaddr->port =3D g_strdup_printf("%u", svm->svm_port); @@ -1248,7 +1248,7 @@ socket_sockaddr_to_address_vsock(struct sockaddr_stor= age *sa, } #endif /* CONFIG_AF_VSOCK */ =20 -SocketAddress * +SocketAddressLegacy * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp) @@ -1277,7 +1277,7 @@ socket_sockaddr_to_address(struct sockaddr_storage *s= a, } =20 =20 -SocketAddress *socket_local_address(int fd, Error **errp) +SocketAddressLegacy *socket_local_address(int fd, Error **errp) { struct sockaddr_storage ss; socklen_t sslen =3D sizeof(ss); @@ -1292,7 +1292,7 @@ SocketAddress *socket_local_address(int fd, Error **e= rrp) } =20 =20 -SocketAddress *socket_remote_address(int fd, Error **errp) +SocketAddressLegacy *socket_remote_address(int fd, Error **errp) { struct sockaddr_storage ss; socklen_t sslen =3D sizeof(ss); @@ -1306,13 +1306,13 @@ SocketAddress *socket_remote_address(int fd, Error = **errp) return socket_sockaddr_to_address(&ss, sslen, errp); } =20 -char *socket_address_to_string(struct SocketAddress *addr, Error **errp) +char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **e= rrp) { char *buf; InetSocketAddress *inet; =20 switch (addr->type) { - case SOCKET_ADDRESS_KIND_INET: + case SOCKET_ADDRESS_LEGACY_KIND_INET: inet =3D addr->u.inet.data; if (strchr(inet->host, ':') =3D=3D NULL) { buf =3D g_strdup_printf("%s:%s", inet->host, inet->port); @@ -1321,15 +1321,15 @@ char *socket_address_to_string(struct SocketAddress= *addr, Error **errp) } break; =20 - case SOCKET_ADDRESS_KIND_UNIX: + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: buf =3D g_strdup(addr->u.q_unix.data->path); break; =20 - case SOCKET_ADDRESS_KIND_FD: + case SOCKET_ADDRESS_LEGACY_KIND_FD: buf =3D g_strdup(addr->u.fd.data->str); break; =20 - case SOCKET_ADDRESS_KIND_VSOCK: + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: buf =3D g_strdup_printf("%s:%s", addr->u.vsock.data->cid, addr->u.vsock.data->port); @@ -1341,28 +1341,28 @@ char *socket_address_to_string(struct SocketAddress= *addr, Error **errp) return buf; } =20 -SocketAddress *socket_address_crumple(SocketAddressFlat *addr_flat) +SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat) { - SocketAddress *addr =3D g_new(SocketAddress, 1); + SocketAddressLegacy *addr =3D g_new(SocketAddressLegacy, 1); =20 switch (addr_flat->type) { case SOCKET_ADDRESS_FLAT_TYPE_INET: - addr->type =3D SOCKET_ADDRESS_KIND_INET; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D QAPI_CLONE(InetSocketAddress, &addr_flat->u.inet); break; case SOCKET_ADDRESS_FLAT_TYPE_UNIX: - addr->type =3D SOCKET_ADDRESS_KIND_UNIX; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D QAPI_CLONE(UnixSocketAddress, &addr_flat->u.q_unix); break; case SOCKET_ADDRESS_FLAT_TYPE_VSOCK: - addr->type =3D SOCKET_ADDRESS_KIND_VSOCK; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; addr->u.vsock.data =3D QAPI_CLONE(VsockSocketAddress, &addr_flat->u.vsock); break; case SOCKET_ADDRESS_FLAT_TYPE_FD: - addr->type =3D SOCKET_ADDRESS_KIND_FD; + addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; addr->u.fd.data =3D QAPI_CLONE(String, &addr_flat->u.fd); break; default: --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318138004904.8653547349339; Tue, 9 May 2017 01:22:18 -0700 (PDT) Received: from localhost ([::1]:35699 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80PQ-0005MU-CM for importer@patchew.org; Tue, 09 May 2017 04:22:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44116) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085U-3B for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Zk-SF for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48868) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007YM-JC for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 9570D8047A for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0B6FF60BE2 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 71D271129C73; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9570D8047A Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 9570D8047A From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:34 +0200 Message-Id: <1494317205-2211-18-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.28]); Tue, 09 May 2017 08:06:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 17/28] sockets: Rename SocketAddressFlat to SocketAddress X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-6-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake Reviewed-by: Prasanna Kumar Kalever --- block/gluster.c | 48 ++++++++++++++++++++++++----------------------= -- block/nbd.c | 26 +++++++++++++------------- block/sheepdog.c | 6 +++--- include/qemu/sockets.h | 4 ++-- qapi-schema.json | 14 +++++++------- qapi/block-core.json | 6 +++--- util/qemu-sockets.c | 10 +++++----- 7 files changed, 57 insertions(+), 57 deletions(-) diff --git a/block/gluster.c b/block/gluster.c index 1d4e2f7..7c76cd0 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -321,7 +321,7 @@ static int parse_volume_options(BlockdevOptionsGluster = *gconf, char *path) static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf, const char *filename) { - SocketAddressFlat *gsconf; + SocketAddress *gsconf; URI *uri; QueryParams *qp =3D NULL; bool is_unix =3D false; @@ -332,19 +332,19 @@ static int qemu_gluster_parse_uri(BlockdevOptionsGlus= ter *gconf, return -EINVAL; } =20 - gconf->server =3D g_new0(SocketAddressFlatList, 1); - gconf->server->value =3D gsconf =3D g_new0(SocketAddressFlat, 1); + gconf->server =3D g_new0(SocketAddressList, 1); + gconf->server->value =3D gsconf =3D g_new0(SocketAddress, 1); =20 /* transport */ if (!uri->scheme || !strcmp(uri->scheme, "gluster")) { - gsconf->type =3D SOCKET_ADDRESS_FLAT_TYPE_INET; + gsconf->type =3D SOCKET_ADDRESS_TYPE_INET; } else if (!strcmp(uri->scheme, "gluster+tcp")) { - gsconf->type =3D SOCKET_ADDRESS_FLAT_TYPE_INET; + gsconf->type =3D SOCKET_ADDRESS_TYPE_INET; } else if (!strcmp(uri->scheme, "gluster+unix")) { - gsconf->type =3D SOCKET_ADDRESS_FLAT_TYPE_UNIX; + gsconf->type =3D SOCKET_ADDRESS_TYPE_UNIX; is_unix =3D true; } else if (!strcmp(uri->scheme, "gluster+rdma")) { - gsconf->type =3D SOCKET_ADDRESS_FLAT_TYPE_INET; + gsconf->type =3D SOCKET_ADDRESS_TYPE_INET; error_report("Warning: rdma feature is not supported, falling " "back to tcp"); } else { @@ -396,7 +396,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOpti= onsGluster *gconf, struct glfs *glfs; int ret; int old_errno; - SocketAddressFlatList *server; + SocketAddressList *server; unsigned long long port; =20 glfs =3D glfs_find_preopened(gconf->volume); @@ -413,11 +413,11 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOp= tionsGluster *gconf, =20 for (server =3D gconf->server; server; server =3D server->next) { switch (server->value->type) { - case SOCKET_ADDRESS_FLAT_TYPE_UNIX: + case SOCKET_ADDRESS_TYPE_UNIX: ret =3D glfs_set_volfile_server(glfs, "unix", server->value->u.q_unix.path, 0); break; - case SOCKET_ADDRESS_FLAT_TYPE_INET: + case SOCKET_ADDRESS_TYPE_INET: if (parse_uint_full(server->value->u.inet.port, &port, 10) < 0= || port > 65535) { error_setg(errp, "'%s' is not a valid port number", @@ -429,8 +429,8 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOpti= onsGluster *gconf, server->value->u.inet.host, (int)port); break; - case SOCKET_ADDRESS_FLAT_TYPE_VSOCK: - case SOCKET_ADDRESS_FLAT_TYPE_FD: + case SOCKET_ADDRESS_TYPE_VSOCK: + case SOCKET_ADDRESS_TYPE_FD: default: abort(); } @@ -450,7 +450,7 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOpti= onsGluster *gconf, error_setg(errp, "Gluster connection for volume %s, path %s failed" " to connect", gconf->volume, gconf->path); for (server =3D gconf->server; server; server =3D server->next) { - if (server->value->type =3D=3D SOCKET_ADDRESS_FLAT_TYPE_UNIX)= { + if (server->value->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX) { error_append_hint(errp, "hint: failed on socket %s ", server->value->u.q_unix.path); } else { @@ -487,8 +487,8 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, QDict *options, Error **errp) { QemuOpts *opts; - SocketAddressFlat *gsconf =3D NULL; - SocketAddressFlatList *curr =3D NULL; + SocketAddress *gsconf =3D NULL; + SocketAddressList *curr =3D NULL; QDict *backing_options =3D NULL; Error *local_err =3D NULL; char *str =3D NULL; @@ -542,14 +542,14 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, goto out; =20 } - gsconf =3D g_new0(SocketAddressFlat, 1); + gsconf =3D g_new0(SocketAddress, 1); if (!strcmp(ptr, "tcp")) { ptr =3D "inet"; /* accept legacy "tcp" */ } - type =3D qapi_enum_parse(SocketAddressFlatType_lookup, ptr, - SOCKET_ADDRESS_FLAT_TYPE__MAX, -1, NULL); - if (type !=3D SOCKET_ADDRESS_FLAT_TYPE_INET - && type !=3D SOCKET_ADDRESS_FLAT_TYPE_UNIX) { + type =3D qapi_enum_parse(SocketAddressType_lookup, ptr, + SOCKET_ADDRESS_TYPE__MAX, -1, NULL); + if (type !=3D SOCKET_ADDRESS_TYPE_INET + && type !=3D SOCKET_ADDRESS_TYPE_UNIX) { error_setg(&local_err, "Parameter '%s' may be 'inet' or 'unix'", GLUSTER_OPT_TYPE); @@ -559,7 +559,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, gsconf->type =3D type; qemu_opts_del(opts); =20 - if (gsconf->type =3D=3D SOCKET_ADDRESS_FLAT_TYPE_INET) { + if (gsconf->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { /* create opts info from runtime_inet_opts list */ opts =3D qemu_opts_create(&runtime_inet_opts, NULL, 0, &error_= abort); qemu_opts_absorb_qdict(opts, backing_options, &local_err); @@ -628,11 +628,11 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlu= ster *gconf, } =20 if (gconf->server =3D=3D NULL) { - gconf->server =3D g_new0(SocketAddressFlatList, 1); + gconf->server =3D g_new0(SocketAddressList, 1); gconf->server->value =3D gsconf; curr =3D gconf->server; } else { - curr->next =3D g_new0(SocketAddressFlatList, 1); + curr->next =3D g_new0(SocketAddressList, 1); curr->next->value =3D gsconf; curr =3D curr->next; } @@ -648,7 +648,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGlust= er *gconf, =20 out: error_propagate(errp, local_err); - qapi_free_SocketAddressFlat(gsconf); + qapi_free_SocketAddress(gsconf); qemu_opts_del(opts); g_free(str); QDECREF(backing_options); diff --git a/block/nbd.c b/block/nbd.c index 7f11a93..bbe0f99 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -47,7 +47,7 @@ typedef struct BDRVNBDState { NBDClientSession client; =20 /* For nbd_refresh_filename() */ - SocketAddressFlat *saddr; + SocketAddress *saddr; char *export, *tlscredsid; } BDRVNBDState; =20 @@ -258,10 +258,10 @@ static bool nbd_process_legacy_socket_options(QDict *= output_options, return true; } =20 -static SocketAddressFlat *nbd_config(BDRVNBDState *s, QDict *options, - Error **errp) +static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, + Error **errp) { - SocketAddressFlat *saddr =3D NULL; + SocketAddress *saddr =3D NULL; QDict *addr =3D NULL; QObject *crumpled_addr =3D NULL; Visitor *iv =3D NULL; @@ -287,7 +287,7 @@ static SocketAddressFlat *nbd_config(BDRVNBDState *s, Q= Dict *options, * visitor expects the former. */ iv =3D qobject_input_visitor_new(crumpled_addr); - visit_type_SocketAddressFlat(iv, NULL, &saddr, &local_err); + visit_type_SocketAddress(iv, NULL, &saddr, &local_err); if (local_err) { error_propagate(errp, local_err); goto done; @@ -306,7 +306,7 @@ NBDClientSession *nbd_get_client_session(BlockDriverSta= te *bs) return &s->client; } =20 -static QIOChannelSocket *nbd_establish_connection(SocketAddressFlat *saddr= _flat, +static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr_fla= t, Error **errp) { SocketAddressLegacy *saddr =3D socket_address_crumple(saddr_flat); @@ -412,7 +412,7 @@ static int nbd_open(BlockDriverState *bs, QDict *option= s, int flags, goto error; } =20 - /* Translate @host, @port, and @path to a SocketAddressFlat */ + /* Translate @host, @port, and @path to a SocketAddress */ if (!nbd_process_legacy_socket_options(options, opts, errp)) { goto error; } @@ -433,7 +433,7 @@ static int nbd_open(BlockDriverState *bs, QDict *option= s, int flags, } =20 /* TODO SOCKET_ADDRESS_KIND_FD where fd has AF_INET or AF_INET6 */ - if (s->saddr->type !=3D SOCKET_ADDRESS_FLAT_TYPE_INET) { + if (s->saddr->type !=3D SOCKET_ADDRESS_TYPE_INET) { error_setg(errp, "TLS only supported over IP sockets"); goto error; } @@ -460,7 +460,7 @@ static int nbd_open(BlockDriverState *bs, QDict *option= s, int flags, object_unref(OBJECT(tlscreds)); } if (ret < 0) { - qapi_free_SocketAddressFlat(s->saddr); + qapi_free_SocketAddress(s->saddr); g_free(s->export); g_free(s->tlscredsid); } @@ -486,7 +486,7 @@ static void nbd_close(BlockDriverState *bs) =20 nbd_client_close(bs); =20 - qapi_free_SocketAddressFlat(s->saddr); + qapi_free_SocketAddress(s->saddr); g_free(s->export); g_free(s->tlscredsid); } @@ -517,13 +517,13 @@ static void nbd_refresh_filename(BlockDriverState *bs= , QDict *options) Visitor *ov; const char *host =3D NULL, *port =3D NULL, *path =3D NULL; =20 - if (s->saddr->type =3D=3D SOCKET_ADDRESS_FLAT_TYPE_INET) { + if (s->saddr->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { const InetSocketAddress *inet =3D &s->saddr->u.inet; if (!inet->has_ipv4 && !inet->has_ipv6 && !inet->has_to) { host =3D inet->host; port =3D inet->port; } - } else if (s->saddr->type =3D=3D SOCKET_ADDRESS_FLAT_TYPE_UNIX) { + } else if (s->saddr->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX) { path =3D s->saddr->u.q_unix.path; } /* else can't represent as pseudo-filename */ =20 @@ -544,7 +544,7 @@ static void nbd_refresh_filename(BlockDriverState *bs, = QDict *options) } =20 ov =3D qobject_output_visitor_new(&saddr_qdict); - visit_type_SocketAddressFlat(ov, NULL, &s->saddr, &error_abort); + visit_type_SocketAddress(ov, NULL, &s->saddr, &error_abort); visit_complete(ov, &saddr_qdict); visit_free(ov); qdict_put_obj(opts, "server", saddr_qdict); diff --git a/block/sheepdog.c b/block/sheepdog.c index 055d10b..b8d69b3 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -554,7 +554,7 @@ static SocketAddressLegacy *sd_server_config(QDict *opt= ions, Error **errp) QDict *server =3D NULL; QObject *crumpled_server =3D NULL; Visitor *iv =3D NULL; - SocketAddressFlat *saddr_flat =3D NULL; + SocketAddress *saddr_flat =3D NULL; SocketAddressLegacy *saddr =3D NULL; Error *local_err =3D NULL; =20 @@ -574,7 +574,7 @@ static SocketAddressLegacy *sd_server_config(QDict *opt= ions, Error **errp) * visitor expects the former. */ iv =3D qobject_input_visitor_new(crumpled_server); - visit_type_SocketAddressFlat(iv, NULL, &saddr_flat, &local_err); + visit_type_SocketAddress(iv, NULL, &saddr_flat, &local_err); if (local_err) { error_propagate(errp, local_err); goto done; @@ -583,7 +583,7 @@ static SocketAddressLegacy *sd_server_config(QDict *opt= ions, Error **errp) saddr =3D socket_address_crumple(saddr_flat); =20 done: - qapi_free_SocketAddressFlat(saddr_flat); + qapi_free_SocketAddress(saddr_flat); visit_free(iv); qobject_decref(crumpled_server); QDECREF(server); diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index f4a4b10..82b7460 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -124,11 +124,11 @@ char *socket_address_to_string(struct SocketAddressLe= gacy *addr, Error **errp); * socket_address_crumple: * @addr_flat: the socket address to crumple * - * Convert SocketAddressFlat to SocketAddressLegacy. Caller is responsible + * Convert SocketAddress to SocketAddressLegacy. Caller is responsible * for freeing with qapi_free_SocketAddressLegacy(). * * Returns: the argument converted to SocketAddressLegacy. */ -SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat); +SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); =20 #endif /* QEMU_SOCKETS_H */ diff --git a/qapi-schema.json b/qapi-schema.json index 56646e0..eab4139 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4126,7 +4126,7 @@ # # Captures the address of a socket, which could also be a named file descr= iptor # -# Note: This type is deprecated in favor of SocketAddressFlat. +# Note: This type is deprecated in favor of SocketAddress. # # Since: 1.3 ## @@ -4138,9 +4138,9 @@ 'fd': 'String' } } =20 ## -# @SocketAddressFlatType: +# @SocketAddressType: # -# Available SocketAddressFlat types +# Available SocketAddress types # # @inet: Internet address # @@ -4148,11 +4148,11 @@ # # Since: 2.9 ## -{ 'enum': 'SocketAddressFlatType', +{ 'enum': 'SocketAddressType', 'data': [ 'inet', 'unix', 'vsock', 'fd' ] } =20 ## -# @SocketAddressFlat: +# @SocketAddress: # # Captures the address of a socket # @@ -4164,8 +4164,8 @@ # # Since: 2.9 ## -{ 'union': 'SocketAddressFlat', - 'base': { 'type': 'SocketAddressFlatType' }, +{ 'union': 'SocketAddress', + 'base': { 'type': 'SocketAddressType' }, 'discriminator': 'type', 'data': { 'inet': 'InetSocketAddress', 'unix': 'UnixSocketAddress', diff --git a/qapi/block-core.json b/qapi/block-core.json index 87fb747..614181b 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -2522,7 +2522,7 @@ { 'struct': 'BlockdevOptionsGluster', 'data': { 'volume': 'str', 'path': 'str', - 'server': ['SocketAddressFlat'], + 'server': ['SocketAddress'], '*debug': 'int', '*logfile': 'str' } } =20 @@ -2634,7 +2634,7 @@ # Since: 2.9 ## { 'struct': 'BlockdevOptionsSheepdog', - 'data': { 'server': 'SocketAddressFlat', + 'data': { 'server': 'SocketAddress', 'vdi': 'str', '*snap-id': 'uint32', '*tag': 'str' } } @@ -2849,7 +2849,7 @@ # Since: 2.9 ## { 'struct': 'BlockdevOptionsNbd', - 'data': { 'server': 'SocketAddressFlat', + 'data': { 'server': 'SocketAddress', '*export': 'str', '*tls-creds': 'str' } } =20 diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 4c48203..801aa7a 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -1341,27 +1341,27 @@ char *socket_address_to_string(struct SocketAddress= Legacy *addr, Error **errp) return buf; } =20 -SocketAddressLegacy *socket_address_crumple(SocketAddressFlat *addr_flat) +SocketAddressLegacy *socket_address_crumple(SocketAddress *addr_flat) { SocketAddressLegacy *addr =3D g_new(SocketAddressLegacy, 1); =20 switch (addr_flat->type) { - case SOCKET_ADDRESS_FLAT_TYPE_INET: + case SOCKET_ADDRESS_TYPE_INET: addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data =3D QAPI_CLONE(InetSocketAddress, &addr_flat->u.inet); break; - case SOCKET_ADDRESS_FLAT_TYPE_UNIX: + case SOCKET_ADDRESS_TYPE_UNIX: addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; addr->u.q_unix.data =3D QAPI_CLONE(UnixSocketAddress, &addr_flat->u.q_unix); break; - case SOCKET_ADDRESS_FLAT_TYPE_VSOCK: + case SOCKET_ADDRESS_TYPE_VSOCK: addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; addr->u.vsock.data =3D QAPI_CLONE(VsockSocketAddress, &addr_flat->u.vsock); break; - case SOCKET_ADDRESS_FLAT_TYPE_FD: + case SOCKET_ADDRESS_TYPE_FD: addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; addr->u.fd.data =3D QAPI_CLONE(String, &addr_flat->u.fd); break; --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318908089192.61507921608666; Tue, 9 May 2017 01:35:08 -0700 (PDT) Received: from localhost ([::1]:35780 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80bq-0000Dr-EJ for importer@patchew.org; Tue, 09 May 2017 04:35:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44290) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ai-0008Ce-6K for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AW-0007aA-Ez for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42532) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007YY-TO for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:52 -0400 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 E717C3B707 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 09E687DFF9 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 74F89114CF87; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E717C3B707 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E717C3B707 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:35 +0200 Message-Id: <1494317205-2211-19-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.30]); Tue, 09 May 2017 08:06:51 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 18/28] sockets: Limit SocketAddressLegacy to external interfaces X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" SocketAddressLegacy is a simple union, and simple unions are awkward: they have their variant members wrapped in a "data" object on the wire, and require additional indirections in C. SocketAddress is the equivalent flat union. Convert all users of SocketAddressLegacy to SocketAddress, except for existing external interfaces. See also commit fce5d53..9445673 and 85a82e8..c5f1ae3. Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-7-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Minor editing accident fixed, commit message and a comment tweaked] Signed-off-by: Markus Armbruster --- block/nbd.c | 4 +- block/sheepdog.c | 32 +++----- blockdev-nbd.c | 21 +++-- chardev/char-socket.c | 40 ++++----- chardev/char-udp.c | 10 ++- hmp.c | 7 +- include/block/nbd.h | 3 + include/io/channel-socket.h | 24 +++--- include/io/dns-resolver.h | 22 ++--- include/io/task.h | 10 +-- include/qemu/sockets.h | 33 +++++--- io/channel-socket.c | 48 +++++------ io/dns-resolver.c | 55 +++++++------ migration/socket.c | 49 ++++++----- net/socket.c | 10 +-- qapi-schema.json | 13 +-- qemu-nbd.c | 17 ++-- qga/channel-posix.c | 4 +- qga/main.c | 8 +- tests/test-char.c | 5 +- tests/test-io-channel-socket.c | 104 +++++++++++------------- ui/vnc-auth-sasl.c | 9 +-- ui/vnc.c | 138 ++++++++++++++++--------------- util/qemu-sockets.c | 180 ++++++++++++++++++++++++-------------= ---- 24 files changed, 440 insertions(+), 406 deletions(-) diff --git a/block/nbd.c b/block/nbd.c index bbe0f99..975faab 100644 --- a/block/nbd.c +++ b/block/nbd.c @@ -306,10 +306,9 @@ NBDClientSession *nbd_get_client_session(BlockDriverSt= ate *bs) return &s->client; } =20 -static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr_fla= t, +static QIOChannelSocket *nbd_establish_connection(SocketAddress *saddr, Error **errp) { - SocketAddressLegacy *saddr =3D socket_address_crumple(saddr_flat); QIOChannelSocket *sioc; Error *local_err =3D NULL; =20 @@ -319,7 +318,6 @@ static QIOChannelSocket *nbd_establish_connection(Socke= tAddress *saddr_flat, qio_channel_socket_connect_sync(sioc, saddr, &local_err); - qapi_free_SocketAddressLegacy(saddr); if (local_err) { object_unref(OBJECT(sioc)); error_propagate(errp, local_err); diff --git a/block/sheepdog.c b/block/sheepdog.c index b8d69b3..a18315a 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -378,7 +378,7 @@ struct BDRVSheepdogState { uint32_t cache_flags; bool discard_supported; =20 - SocketAddressLegacy *addr; + SocketAddress *addr; int fd; =20 CoMutex lock; @@ -530,32 +530,29 @@ static void sd_aio_setup(SheepdogAIOCB *acb, BDRVShee= pdogState *s, QLIST_INSERT_HEAD(&s->inflight_aiocb_head, acb, aiocb_siblings); } =20 -static SocketAddressLegacy *sd_socket_address(const char *path, +static SocketAddress *sd_socket_address(const char *path, const char *host, const char *port) { - SocketAddressLegacy *addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddress *addr =3D g_new0(SocketAddress, 1); =20 if (path) { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - addr->u.q_unix.data->path =3D g_strdup(path); + addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + addr->u.q_unix.path =3D g_strdup(path); } else { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D g_new0(InetSocketAddress, 1); - addr->u.inet.data->host =3D g_strdup(host ?: SD_DEFAULT_ADDR); - addr->u.inet.data->port =3D g_strdup(port ?: stringify(SD_DEFAULT_= PORT)); + addr->type =3D SOCKET_ADDRESS_TYPE_INET; + addr->u.inet.host =3D g_strdup(host ?: SD_DEFAULT_ADDR); + addr->u.inet.port =3D g_strdup(port ?: stringify(SD_DEFAULT_PORT)); } =20 return addr; } =20 -static SocketAddressLegacy *sd_server_config(QDict *options, Error **errp) +static SocketAddress *sd_server_config(QDict *options, Error **errp) { QDict *server =3D NULL; QObject *crumpled_server =3D NULL; Visitor *iv =3D NULL; - SocketAddress *saddr_flat =3D NULL; - SocketAddressLegacy *saddr =3D NULL; + SocketAddress *saddr =3D NULL; Error *local_err =3D NULL; =20 qdict_extract_subqdict(options, &server, "server."); @@ -574,16 +571,13 @@ static SocketAddressLegacy *sd_server_config(QDict *o= ptions, Error **errp) * visitor expects the former. */ iv =3D qobject_input_visitor_new(crumpled_server); - visit_type_SocketAddress(iv, NULL, &saddr_flat, &local_err); + visit_type_SocketAddress(iv, NULL, &saddr, &local_err); if (local_err) { error_propagate(errp, local_err); goto done; } =20 - saddr =3D socket_address_crumple(saddr_flat); - done: - qapi_free_SocketAddress(saddr_flat); visit_free(iv); qobject_decref(crumpled_server); QDECREF(server); @@ -597,7 +591,7 @@ static int connect_to_sdog(BDRVSheepdogState *s, Error = **errp) =20 fd =3D socket_connect(s->addr, NULL, NULL, errp); =20 - if (s->addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && fd >=3D 0)= { + if (s->addr->type =3D=3D SOCKET_ADDRESS_TYPE_INET && fd >=3D 0) { int ret =3D socket_set_nodelay(fd); if (ret < 0) { error_report("%s", strerror(errno)); @@ -2149,7 +2143,7 @@ static void sd_close(BlockDriverState *bs) aio_set_fd_handler(bdrv_get_aio_context(bs), s->fd, false, NULL, NULL, NULL, NULL); closesocket(s->fd); - qapi_free_SocketAddressLegacy(s->addr); + qapi_free_SocketAddress(s->addr); } =20 static int64_t sd_getlength(BlockDriverState *bs) diff --git a/blockdev-nbd.c b/blockdev-nbd.c index 6b0c699..dd0860f 100644 --- a/blockdev-nbd.c +++ b/blockdev-nbd.c @@ -99,9 +99,8 @@ static QCryptoTLSCreds *nbd_get_tls_creds(const char *id,= Error **errp) } =20 =20 -void qmp_nbd_server_start(SocketAddressLegacy *addr, - bool has_tls_creds, const char *tls_creds, - Error **errp) +void nbd_server_start(SocketAddress *addr, const char *tls_creds, + Error **errp) { if (nbd_server) { error_setg(errp, "NBD server already running"); @@ -118,14 +117,14 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr, goto error; } =20 - if (has_tls_creds) { + if (tls_creds) { nbd_server->tlscreds =3D nbd_get_tls_creds(tls_creds, errp); if (!nbd_server->tlscreds) { goto error; } =20 - /* TODO SOCKET_ADDRESS_LEGACY_KIND_FD where fd has AF_INET or AF_I= NET6 */ - if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { + /* TODO SOCKET_ADDRESS_TYPE_FD where fd has AF_INET or AF_INET6 */ + if (addr->type !=3D SOCKET_ADDRESS_TYPE_INET) { error_setg(errp, "TLS is only supported with IPv4/IPv6"); goto error; } @@ -145,6 +144,16 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr, nbd_server =3D NULL; } =20 +void qmp_nbd_server_start(SocketAddressLegacy *addr, + bool has_tls_creds, const char *tls_creds, + Error **errp) +{ + SocketAddress *addr_flat =3D socket_address_flatten(addr); + + nbd_server_start(addr_flat, tls_creds, errp); + qapi_free_SocketAddress(addr_flat); +} + void qmp_nbd_server_add(const char *device, bool has_writable, bool writab= le, Error **errp) { diff --git a/chardev/char-socket.c b/chardev/char-socket.c index f872f48..8a321a1 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -52,7 +52,7 @@ typedef struct { int *write_msgfds; size_t write_msgfds_num; =20 - SocketAddressLegacy *addr; + SocketAddress *addr; bool is_listen; bool is_telnet; bool is_tn3270; @@ -356,30 +356,30 @@ static void tcp_chr_free_connection(Chardev *chr) s->connected =3D 0; } =20 -static char *SocketAddress_to_str(const char *prefix, SocketAddressLegacy = *addr, +static char *SocketAddress_to_str(const char *prefix, SocketAddress *addr, bool is_listen, bool is_telnet) { switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: + case SOCKET_ADDRESS_TYPE_INET: return g_strdup_printf("%s%s:%s:%s%s", prefix, is_telnet ? "telnet" : "tcp", - addr->u.inet.data->host, - addr->u.inet.data->port, + addr->u.inet.host, + addr->u.inet.port, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: + case SOCKET_ADDRESS_TYPE_UNIX: return g_strdup_printf("%sunix:%s%s", prefix, - addr->u.q_unix.data->path, + addr->u.q_unix.path, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_LEGACY_KIND_FD: - return g_strdup_printf("%sfd:%s%s", prefix, addr->u.fd.data->str, + case SOCKET_ADDRESS_TYPE_FD: + return g_strdup_printf("%sfd:%s%s", prefix, addr->u.fd.str, is_listen ? ",server" : ""); break; - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + case SOCKET_ADDRESS_TYPE_VSOCK: return g_strdup_printf("%svsock:%s:%s", prefix, - addr->u.vsock.data->cid, - addr->u.vsock.data->port); + addr->u.vsock.cid, + addr->u.vsock.port); default: abort(); } @@ -648,7 +648,7 @@ static void tcp_chr_tls_init(Chardev *chr) } else { tioc =3D qio_channel_tls_new_client( s->ioc, s->tls_creds, - s->addr->u.inet.data->host, + s->addr->u.inet.host, &err); } if (tioc =3D=3D NULL) { @@ -796,7 +796,7 @@ static void char_socket_finalize(Object *obj) g_source_remove(s->reconnect_timer); s->reconnect_timer =3D 0; } - qapi_free_SocketAddressLegacy(s->addr); + qapi_free_SocketAddress(s->addr); if (s->listen_tag) { g_source_remove(s->listen_tag); s->listen_tag =3D 0; @@ -859,7 +859,6 @@ static void qmp_chardev_open_socket(Chardev *chr, { SocketChardev *s =3D SOCKET_CHARDEV(chr); ChardevSocket *sock =3D backend->u.socket.data; - SocketAddressLegacy *addr =3D sock->addr; bool do_nodelay =3D sock->has_nodelay ? sock->nodelay : false; bool is_listen =3D sock->has_server ? sock->server : true; bool is_telnet =3D sock->has_telnet ? sock->telnet : false; @@ -867,6 +866,7 @@ static void qmp_chardev_open_socket(Chardev *chr, bool is_waitconnect =3D sock->has_wait ? sock->wait : false; int64_t reconnect =3D sock->has_reconnect ? sock->reconnect : 0; QIOChannelSocket *sioc =3D NULL; + SocketAddress *addr; =20 s->is_listen =3D is_listen; s->is_telnet =3D is_telnet; @@ -905,11 +905,11 @@ static void qmp_chardev_open_socket(Chardev *chr, } } =20 - s->addr =3D QAPI_CLONE(SocketAddressLegacy, sock->addr); + s->addr =3D addr =3D socket_address_flatten(sock->addr); =20 qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_RECONNECTABLE); /* TODO SOCKET_ADDRESS_FD where fd has AF_UNIX */ - if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX) { + if (addr->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX) { qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS); } =20 @@ -945,7 +945,7 @@ static void qmp_chardev_open_socket(Chardev *chr, goto error; } =20 - qapi_free_SocketAddressLegacy(s->addr); + qapi_free_SocketAddress(s->addr); s->addr =3D socket_local_address(sioc->fd, errp); update_disconnected_filename(s); =20 @@ -1051,7 +1051,7 @@ char_socket_get_addr(Object *obj, Visitor *v, const c= har *name, { SocketChardev *s =3D SOCKET_CHARDEV(obj); =20 - visit_type_SocketAddressLegacy(v, name, &s->addr, errp); + visit_type_SocketAddress(v, name, &s->addr, errp); } =20 static bool @@ -1078,7 +1078,7 @@ static void char_socket_class_init(ObjectClass *oc, v= oid *data) cc->chr_add_watch =3D tcp_chr_add_watch; cc->chr_update_read_handler =3D tcp_chr_update_read_handler; =20 - object_class_property_add(oc, "addr", "SocketAddressLegacy", + object_class_property_add(oc, "addr", "SocketAddress", char_socket_get_addr, NULL, NULL, NULL, &error_abort); =20 diff --git a/chardev/char-udp.c b/chardev/char-udp.c index d705c4f..5f2f717 100644 --- a/chardev/char-udp.c +++ b/chardev/char-udp.c @@ -191,13 +191,17 @@ static void qmp_chardev_open_udp(Chardev *chr, Error **errp) { ChardevUdp *udp =3D backend->u.udp.data; + SocketAddress *local_addr =3D socket_address_flatten(udp->local); + SocketAddress *remote_addr =3D socket_address_flatten(udp->remote); QIOChannelSocket *sioc =3D qio_channel_socket_new(); char *name; UdpChardev *s =3D UDP_CHARDEV(chr); + int ret; =20 - if (qio_channel_socket_dgram_sync(sioc, - udp->local, udp->remote, - errp) < 0) { + ret =3D qio_channel_socket_dgram_sync(sioc, local_addr, remote_addr, e= rrp); + qapi_free_SocketAddress(local_addr); + qapi_free_SocketAddress(remote_addr); + if (ret < 0) { object_unref(OBJECT(sioc)); return; } diff --git a/hmp.c b/hmp.c index c7f161d..524e589 100644 --- a/hmp.c +++ b/hmp.c @@ -34,6 +34,7 @@ #include "qapi-visit.h" #include "qom/object_interfaces.h" #include "ui/console.h" +#include "block/nbd.h" #include "block/qapi.h" #include "qemu-io.h" #include "qemu/cutils.h" @@ -2108,7 +2109,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) bool all =3D qdict_get_try_bool(qdict, "all", false); Error *local_err =3D NULL; BlockInfoList *block_list, *info; - SocketAddressLegacy *addr; + SocketAddress *addr; =20 if (writable && !all) { error_setg(&local_err, "-w only valid together with -a"); @@ -2121,8 +2122,8 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *= qdict) goto exit; } =20 - qmp_nbd_server_start(addr, false, NULL, &local_err); - qapi_free_SocketAddressLegacy(addr); + nbd_server_start(addr, NULL, &local_err); + qapi_free_SocketAddress(addr); if (local_err !=3D NULL) { goto exit; } diff --git a/include/block/nbd.h b/include/block/nbd.h index 3e373f0..0ed0775 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -164,4 +164,7 @@ void nbd_client_new(NBDExport *exp, void nbd_client_get(NBDClient *client); void nbd_client_put(NBDClient *client); =20 +void nbd_server_start(SocketAddress *addr, const char *tls_creds, + Error **errp); + #endif diff --git a/include/io/channel-socket.h b/include/io/channel-socket.h index c1aaa72..53801f6 100644 --- a/include/io/channel-socket.h +++ b/include/io/channel-socket.h @@ -91,7 +91,7 @@ qio_channel_socket_new_fd(int fd, * an error occurs. */ int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp); =20 /** @@ -110,7 +110,7 @@ int qio_channel_socket_connect_sync(QIOChannelSocket *i= oc, * as this function returns without waiting for completion. */ void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -128,7 +128,7 @@ void qio_channel_socket_connect_async(QIOChannelSocket = *ioc, * an error occurs. */ int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp); =20 /** @@ -147,7 +147,7 @@ int qio_channel_socket_listen_sync(QIOChannelSocket *io= c, * as this function returns without waiting for completion. */ void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -167,8 +167,8 @@ void qio_channel_socket_listen_async(QIOChannelSocket *= ioc, * is established or an error occurs. */ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, Error **errp); =20 /** @@ -190,8 +190,8 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, * waiting for completion. */ void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy); @@ -205,12 +205,12 @@ void qio_channel_socket_dgram_async(QIOChannelSocket = *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: 0 on success, -1 on error */ -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp); =20 @@ -222,12 +222,12 @@ qio_channel_socket_get_local_address(QIOChannelSocket= *ioc, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp); =20 diff --git a/include/io/dns-resolver.h b/include/io/dns-resolver.h index aac46ca..2f69c08 100644 --- a/include/io/dns-resolver.h +++ b/include/io/dns-resolver.h @@ -40,15 +40,15 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * QIODNSResolver: * * The QIODNSResolver class provides a framework for doing - * DNS resolution on SocketAddressLegacy objects, independently + * DNS resolution on SocketAddress objects, independently * of socket creation. * * * Resolving addresses synchronously * - * int mylisten(SocketAddressLegacy *addr, Error **errp) { + * int mylisten(SocketAddress *addr, Error **errp) { * QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); - * SocketAddressLegacy **rawaddrs =3D NULL; + * SocketAddress **rawaddrs =3D NULL; * size_t nrawaddrs =3D 0; * Error *err =3D NULL; * QIOChannel **socks =3D NULL; @@ -69,7 +69,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks =3D g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] =3D sock; * } - * qapi_free_SocketAddressLegacy(rawaddrs[i]); + * qapi_free_SocketAddress(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -95,7 +95,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * MyListenData *data =3D opaque; * QIODNSResolver *resolver =3D * QIO_DNS_RESOLVER(qio_task_get_source(task); - * SocketAddressLegacy **rawaddrs =3D NULL; + * SocketAddress **rawaddrs =3D NULL; * size_t nrawaddrs =3D 0; * Error *err =3D NULL; * @@ -116,7 +116,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * socks =3D g_renew(QIOChannelSocket *, socks, nsocks + 1); * socks[nsocks++] =3D sock; * } - * qapi_free_SocketAddressLegacy(rawaddrs[i]); + * qapi_free_SocketAddress(rawaddrs[i]); * } * g_free(rawaddrs); * @@ -127,7 +127,7 @@ typedef struct QIODNSResolverClass QIODNSResolverClass; * } * } * - * void mylisten(SocketAddressLegacy *addr, MyListenData *data) { + * void mylisten(SocketAddress *addr, MyListenData *data) { * QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); * qio_dns_resolver_lookup_async(dns, addr, * mylistenresult, data, NULL); @@ -177,9 +177,9 @@ QIODNSResolver *qio_dns_resolver_get_instance(void); * Returns: 0 if resolution was successful, -1 on error */ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, size_t *naddrs, - SocketAddressLegacy ***addrs, + SocketAddress ***addrs, Error **errp); =20 /** @@ -201,7 +201,7 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolv= er, * of the caller will not be blocked. */ void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify); @@ -223,6 +223,6 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddressLegacy ***addrs); + SocketAddress ***addrs); =20 #endif /* QIO_DNS_RESOLVER_H */ diff --git a/include/io/task.h b/include/io/task.h index f65ec7a..6021f51 100644 --- a/include/io/task.h +++ b/include/io/task.h @@ -166,7 +166,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * gpointer opaque) * { * QMyObject obj =3D QMY_OBJECT(qio_task_get_source(task)); - * SocketAddressLegacy *addr =3D opaque; + * SocketAddress *addr =3D opaque; * Error *err =3D NULL; * * obj->fd =3D socket_listen(addr, &err); @@ -175,20 +175,20 @@ typedef void (*QIOTaskWorker)(QIOTask *task, * } * * void myobject_listen_async(QMyObject *obj, - * SocketAddressLegacy *addr, + * SocketAddress *addr, * QIOTaskFunc *func, * gpointer opaque, * GDestroyNotify notify) * { * QIOTask *task; - * SocketAddressLegacy *addrCopy; + * SocketAddress *addrCopy; * - * addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); + * addrCopy =3D QAPI_CLONE(SocketAddress, addr); * task =3D qio_task_new(OBJECT(obj), func, opaque, notify); * * qio_task_run_in_thread(task, myobject_listen_worker, * addrCopy, - * qapi_free_SocketAddressLegacy); + * qapi_free_SocketAddress); * } * * diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index 82b7460..a0b5cae 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -45,12 +45,12 @@ NetworkAddressFamily inet_netfamily(int family); int unix_listen(const char *path, char *ostr, int olen, Error **errp); int unix_connect(const char *path, Error **errp); =20 -SocketAddressLegacy *socket_parse(const char *str, Error **errp); -int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *c= allback, +SocketAddress *socket_parse(const char *str, Error **errp); +int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callbac= k, void *opaque, Error **errp); -int socket_listen(SocketAddressLegacy *addr, Error **errp); +int socket_listen(SocketAddress *addr, Error **errp); void socket_listen_cleanup(int fd, Error **errp); -int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, = Error **errp); +int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp= ); =20 /* Old, ipv4 only bits. Don't use for new code. */ int parse_host_port(struct sockaddr_in *saddr, const char *str); @@ -65,12 +65,12 @@ int socket_init(void); * Get the string representation of the socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy * +SocketAddress * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp); @@ -83,12 +83,12 @@ socket_sockaddr_to_address(struct sockaddr_storage *sa, * Get the string representation of the local socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy *socket_local_address(int fd, Error **errp); +SocketAddress *socket_local_address(int fd, Error **errp); =20 /** * socket_remote_address: @@ -98,12 +98,12 @@ SocketAddressLegacy *socket_local_address(int fd, Error= **errp); * Get the string representation of the remote socket * address. A pointer to the allocated address information * struct will be returned, which the caller is required to - * release with a call qapi_free_SocketAddressLegacy() when no + * release with a call qapi_free_SocketAddress() when no * longer required. * * Returns: the socket address struct, or NULL on error */ -SocketAddressLegacy *socket_remote_address(int fd, Error **errp); +SocketAddress *socket_remote_address(int fd, Error **errp); =20 /** * socket_address_to_string: @@ -118,7 +118,7 @@ SocketAddressLegacy *socket_remote_address(int fd, Erro= r **errp); * * Returns: the socket address in string format, or NULL on error */ -char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **e= rrp); +char *socket_address_to_string(struct SocketAddress *addr, Error **errp); =20 /** * socket_address_crumple: @@ -131,4 +131,15 @@ char *socket_address_to_string(struct SocketAddressLeg= acy *addr, Error **errp); */ SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); =20 +/** + * socket_address_flatten: + * @addr: the socket address to flatten + * + * Convert SocketAddressLegacy to SocketAddress. Caller is responsible + * for freeing with qapi_free_SocketAddress(). + * + * Returns: the argument converted to SocketAddress. + */ +SocketAddress *socket_address_flatten(SocketAddressLegacy *addr); + #endif /* QEMU_SOCKETS_H */ diff --git a/io/channel-socket.c b/io/channel-socket.c index a21dab6..53386b7 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -27,7 +27,7 @@ =20 #define SOCKET_MAX_FDS 16 =20 -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_local_address(QIOChannelSocket *ioc, Error **errp) { @@ -36,7 +36,7 @@ qio_channel_socket_get_local_address(QIOChannelSocket *io= c, errp); } =20 -SocketAddressLegacy * +SocketAddress * qio_channel_socket_get_remote_address(QIOChannelSocket *ioc, Error **errp) { @@ -134,7 +134,7 @@ qio_channel_socket_new_fd(int fd, =20 =20 int qio_channel_socket_connect_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp) { int fd; @@ -160,7 +160,7 @@ static void qio_channel_socket_connect_worker(QIOTask *= task, gpointer opaque) { QIOChannelSocket *ioc =3D QIO_CHANNEL_SOCKET(qio_task_get_source(task)= ); - SocketAddressLegacy *addr =3D opaque; + SocketAddress *addr =3D opaque; Error *err =3D NULL; =20 qio_channel_socket_connect_sync(ioc, addr, &err); @@ -170,16 +170,16 @@ static void qio_channel_socket_connect_worker(QIOTask= *task, =20 =20 void qio_channel_socket_connect_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) { QIOTask *task =3D qio_task_new( OBJECT(ioc), callback, opaque, destroy); - SocketAddressLegacy *addrCopy; + SocketAddress *addrCopy; =20 - addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); + addrCopy =3D QAPI_CLONE(SocketAddress, addr); =20 /* socket_connect() does a non-blocking connect(), but it * still blocks in DNS lookups, so we must use a thread */ @@ -187,12 +187,12 @@ void qio_channel_socket_connect_async(QIOChannelSocke= t *ioc, qio_task_run_in_thread(task, qio_channel_socket_connect_worker, addrCopy, - (GDestroyNotify)qapi_free_SocketAddressLegacy); + (GDestroyNotify)qapi_free_SocketAddress); } =20 =20 int qio_channel_socket_listen_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, Error **errp) { int fd; @@ -219,7 +219,7 @@ static void qio_channel_socket_listen_worker(QIOTask *t= ask, gpointer opaque) { QIOChannelSocket *ioc =3D QIO_CHANNEL_SOCKET(qio_task_get_source(task)= ); - SocketAddressLegacy *addr =3D opaque; + SocketAddress *addr =3D opaque; Error *err =3D NULL; =20 qio_channel_socket_listen_sync(ioc, addr, &err); @@ -229,29 +229,29 @@ static void qio_channel_socket_listen_worker(QIOTask = *task, =20 =20 void qio_channel_socket_listen_async(QIOChannelSocket *ioc, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) { QIOTask *task =3D qio_task_new( OBJECT(ioc), callback, opaque, destroy); - SocketAddressLegacy *addrCopy; + SocketAddress *addrCopy; =20 - addrCopy =3D QAPI_CLONE(SocketAddressLegacy, addr); + addrCopy =3D QAPI_CLONE(SocketAddress, addr); =20 /* socket_listen() blocks in DNS lookups, so we must use a thread */ trace_qio_channel_socket_listen_async(ioc, addr); qio_task_run_in_thread(task, qio_channel_socket_listen_worker, addrCopy, - (GDestroyNotify)qapi_free_SocketAddressLegacy); + (GDestroyNotify)qapi_free_SocketAddress); } =20 =20 int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, Error **errp) { int fd; @@ -274,16 +274,16 @@ int qio_channel_socket_dgram_sync(QIOChannelSocket *i= oc, =20 =20 struct QIOChannelSocketDGramWorkerData { - SocketAddressLegacy *localAddr; - SocketAddressLegacy *remoteAddr; + SocketAddress *localAddr; + SocketAddress *remoteAddr; }; =20 =20 static void qio_channel_socket_dgram_worker_free(gpointer opaque) { struct QIOChannelSocketDGramWorkerData *data =3D opaque; - qapi_free_SocketAddressLegacy(data->localAddr); - qapi_free_SocketAddressLegacy(data->remoteAddr); + qapi_free_SocketAddress(data->localAddr); + qapi_free_SocketAddress(data->remoteAddr); g_free(data); } =20 @@ -303,8 +303,8 @@ static void qio_channel_socket_dgram_worker(QIOTask *ta= sk, =20 =20 void qio_channel_socket_dgram_async(QIOChannelSocket *ioc, - SocketAddressLegacy *localAddr, - SocketAddressLegacy *remoteAddr, + SocketAddress *localAddr, + SocketAddress *remoteAddr, QIOTaskFunc callback, gpointer opaque, GDestroyNotify destroy) @@ -314,8 +314,8 @@ void qio_channel_socket_dgram_async(QIOChannelSocket *i= oc, struct QIOChannelSocketDGramWorkerData *data =3D g_new0( struct QIOChannelSocketDGramWorkerData, 1); =20 - data->localAddr =3D QAPI_CLONE(SocketAddressLegacy, localAddr); - data->remoteAddr =3D QAPI_CLONE(SocketAddressLegacy, remoteAddr); + data->localAddr =3D QAPI_CLONE(SocketAddress, localAddr); + data->remoteAddr =3D QAPI_CLONE(SocketAddress, remoteAddr); =20 trace_qio_channel_socket_dgram_async(ioc, localAddr, remoteAddr); qio_task_run_in_thread(task, diff --git a/io/dns-resolver.c b/io/dns-resolver.c index d3f0cbf..57a8896 100644 --- a/io/dns-resolver.c +++ b/io/dns-resolver.c @@ -45,13 +45,13 @@ QIODNSResolver *qio_dns_resolver_get_instance(void) } =20 static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, size_t *naddrs, - SocketAddressLegacy ***addrs, + SocketAddress ***addrs, Error **errp) { struct addrinfo ai, *res, *e; - InetSocketAddress *iaddr =3D addr->u.inet.data; + InetSocketAddress *iaddr =3D &addr->u.inet; char port[33]; char uaddr[INET6_ADDRSTRLEN + 1]; char uport[33]; @@ -97,20 +97,19 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSReso= lver *resolver, (*naddrs)++; } =20 - *addrs =3D g_new0(SocketAddressLegacy *, *naddrs); + *addrs =3D g_new0(SocketAddress *, *naddrs); =20 /* create socket + bind */ for (i =3D 0, e =3D res; e !=3D NULL; i++, e =3D e->ai_next) { - SocketAddressLegacy *newaddr =3D g_new0(SocketAddressLegacy, 1); - InetSocketAddress *newiaddr =3D g_new0(InetSocketAddress, 1); - newaddr->u.inet.data =3D newiaddr; - newaddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; + SocketAddress *newaddr =3D g_new0(SocketAddress, 1); + + newaddr->type =3D SOCKET_ADDRESS_TYPE_INET; =20 getnameinfo((struct sockaddr *)e->ai_addr, e->ai_addrlen, uaddr, INET6_ADDRSTRLEN, uport, 32, NI_NUMERICHOST | NI_NUMERICSERV); =20 - *newiaddr =3D (InetSocketAddress){ + newaddr->u.inet =3D (InetSocketAddress){ .host =3D g_strdup(uaddr), .port =3D g_strdup(uport), .has_numeric =3D true, @@ -129,36 +128,36 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSRe= solver *resolver, =20 =20 static int qio_dns_resolver_lookup_sync_nop(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, size_t *naddrs, - SocketAddressLegacy ***addrs, + SocketAddress ***addrs, Error **errp) { *naddrs =3D 1; - *addrs =3D g_new0(SocketAddressLegacy *, 1); - (*addrs)[0] =3D QAPI_CLONE(SocketAddressLegacy, addr); + *addrs =3D g_new0(SocketAddress *, 1); + (*addrs)[0] =3D QAPI_CLONE(SocketAddress, addr); =20 return 0; } =20 =20 int qio_dns_resolver_lookup_sync(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, size_t *naddrs, - SocketAddressLegacy ***addrs, + SocketAddress ***addrs, Error **errp) { switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: + case SOCKET_ADDRESS_TYPE_INET: return qio_dns_resolver_lookup_sync_inet(resolver, addr, naddrs, addrs, errp); =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: - case SOCKET_ADDRESS_LEGACY_KIND_FD: + case SOCKET_ADDRESS_TYPE_UNIX: + case SOCKET_ADDRESS_TYPE_VSOCK: + case SOCKET_ADDRESS_TYPE_FD: return qio_dns_resolver_lookup_sync_nop(resolver, addr, naddrs, @@ -172,8 +171,8 @@ int qio_dns_resolver_lookup_sync(QIODNSResolver *resolv= er, =20 =20 struct QIODNSResolverLookupData { - SocketAddressLegacy *addr; - SocketAddressLegacy **addrs; + SocketAddress *addr; + SocketAddress **addrs; size_t naddrs; }; =20 @@ -183,9 +182,9 @@ static void qio_dns_resolver_lookup_data_free(gpointer = opaque) struct QIODNSResolverLookupData *data =3D opaque; size_t i; =20 - qapi_free_SocketAddressLegacy(data->addr); + qapi_free_SocketAddress(data->addr); for (i =3D 0; i < data->naddrs; i++) { - qapi_free_SocketAddressLegacy(data->addrs[i]); + qapi_free_SocketAddress(data->addrs[i]); } =20 g_free(data->addrs); @@ -216,7 +215,7 @@ static void qio_dns_resolver_lookup_worker(QIOTask *tas= k, =20 =20 void qio_dns_resolver_lookup_async(QIODNSResolver *resolver, - SocketAddressLegacy *addr, + SocketAddress *addr, QIOTaskFunc func, gpointer opaque, GDestroyNotify notify) @@ -225,7 +224,7 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, struct QIODNSResolverLookupData *data =3D g_new0(struct QIODNSResolverLookupData, 1); =20 - data->addr =3D QAPI_CLONE(SocketAddressLegacy, addr); + data->addr =3D QAPI_CLONE(SocketAddress, addr); =20 task =3D qio_task_new(OBJECT(resolver), func, opaque, notify); =20 @@ -239,7 +238,7 @@ void qio_dns_resolver_lookup_async(QIODNSResolver *reso= lver, void qio_dns_resolver_lookup_result(QIODNSResolver *resolver, QIOTask *task, size_t *naddrs, - SocketAddressLegacy ***addrs) + SocketAddress ***addrs) { struct QIODNSResolverLookupData *data =3D qio_task_get_result_pointer(task); @@ -252,9 +251,9 @@ void qio_dns_resolver_lookup_result(QIODNSResolver *res= olver, } =20 *naddrs =3D data->naddrs; - *addrs =3D g_new0(SocketAddressLegacy *, data->naddrs); + *addrs =3D g_new0(SocketAddress *, data->naddrs); for (i =3D 0; i < data->naddrs; i++) { - (*addrs)[i] =3D QAPI_CLONE(SocketAddressLegacy, data->addrs[i]); + (*addrs)[i] =3D QAPI_CLONE(SocketAddress, data->addrs[i]); } } =20 diff --git a/migration/socket.c b/migration/socket.c index 3203276..1cfbe81 100644 --- a/migration/socket.c +++ b/migration/socket.c @@ -25,32 +25,29 @@ #include "trace.h" =20 =20 -static SocketAddressLegacy *tcp_build_address(const char *host_port, Error= **errp) +static SocketAddress *tcp_build_address(const char *host_port, Error **err= p) { - InetSocketAddress *iaddr =3D g_new(InetSocketAddress, 1); - SocketAddressLegacy *saddr; + SocketAddress *saddr; =20 - if (inet_parse(iaddr, host_port, errp)) { - qapi_free_InetSocketAddress(iaddr); + saddr =3D g_new0(SocketAddress, 1); + saddr->type =3D SOCKET_ADDRESS_TYPE_INET; + + if (inet_parse(&saddr->u.inet, host_port, errp)) { + qapi_free_SocketAddress(saddr); return NULL; } =20 - saddr =3D g_new0(SocketAddressLegacy, 1); - saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - saddr->u.inet.data =3D iaddr; - return saddr; } =20 =20 -static SocketAddressLegacy *unix_build_address(const char *path) +static SocketAddress *unix_build_address(const char *path) { - SocketAddressLegacy *saddr; + SocketAddress *saddr; =20 - saddr =3D g_new0(SocketAddressLegacy, 1); - saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - saddr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - saddr->u.q_unix.data->path =3D g_strdup(path); + saddr =3D g_new0(SocketAddress, 1); + saddr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + saddr->u.q_unix.path =3D g_strdup(path); =20 return saddr; } @@ -90,15 +87,15 @@ static void socket_outgoing_migration(QIOTask *task, } =20 static void socket_start_outgoing_migration(MigrationState *s, - SocketAddressLegacy *saddr, + SocketAddress *saddr, Error **errp) { QIOChannelSocket *sioc =3D qio_channel_socket_new(); struct SocketConnectData *data =3D g_new0(struct SocketConnectData, 1); =20 data->s =3D s; - if (saddr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { - data->hostname =3D g_strdup(saddr->u.inet.data->host); + if (saddr->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { + data->hostname =3D g_strdup(saddr->u.inet.host); } =20 qio_channel_set_name(QIO_CHANNEL(sioc), "migration-socket-outgoing"); @@ -107,7 +104,7 @@ static void socket_start_outgoing_migration(MigrationSt= ate *s, socket_outgoing_migration, data, socket_connect_data_free); - qapi_free_SocketAddressLegacy(saddr); + qapi_free_SocketAddress(saddr); } =20 void tcp_start_outgoing_migration(MigrationState *s, @@ -115,7 +112,7 @@ void tcp_start_outgoing_migration(MigrationState *s, Error **errp) { Error *err =3D NULL; - SocketAddressLegacy *saddr =3D tcp_build_address(host_port, &err); + SocketAddress *saddr =3D tcp_build_address(host_port, &err); if (!err) { socket_start_outgoing_migration(s, saddr, &err); } @@ -126,7 +123,7 @@ void unix_start_outgoing_migration(MigrationState *s, const char *path, Error **errp) { - SocketAddressLegacy *saddr =3D unix_build_address(path); + SocketAddress *saddr =3D unix_build_address(path); socket_start_outgoing_migration(s, saddr, errp); } =20 @@ -160,7 +157,7 @@ out: } =20 =20 -static void socket_start_incoming_migration(SocketAddressLegacy *saddr, +static void socket_start_incoming_migration(SocketAddress *saddr, Error **errp) { QIOChannelSocket *listen_ioc =3D qio_channel_socket_new(); @@ -170,7 +167,7 @@ static void socket_start_incoming_migration(SocketAddre= ssLegacy *saddr, =20 if (qio_channel_socket_listen_sync(listen_ioc, saddr, errp) < 0) { object_unref(OBJECT(listen_ioc)); - qapi_free_SocketAddressLegacy(saddr); + qapi_free_SocketAddress(saddr); return; } =20 @@ -179,13 +176,13 @@ static void socket_start_incoming_migration(SocketAdd= ressLegacy *saddr, socket_accept_incoming_migration, listen_ioc, (GDestroyNotify)object_unref); - qapi_free_SocketAddressLegacy(saddr); + qapi_free_SocketAddress(saddr); } =20 void tcp_start_incoming_migration(const char *host_port, Error **errp) { Error *err =3D NULL; - SocketAddressLegacy *saddr =3D tcp_build_address(host_port, &err); + SocketAddress *saddr =3D tcp_build_address(host_port, &err); if (!err) { socket_start_incoming_migration(saddr, &err); } @@ -194,6 +191,6 @@ void tcp_start_incoming_migration(const char *host_port= , Error **errp) =20 void unix_start_incoming_migration(const char *path, Error **errp) { - SocketAddressLegacy *saddr =3D unix_build_address(path); + SocketAddress *saddr =3D unix_build_address(path); socket_start_incoming_migration(saddr, errp); } diff --git a/net/socket.c b/net/socket.c index ecd165f..b8c931e 100644 --- a/net/socket.c +++ b/net/socket.c @@ -489,7 +489,7 @@ static int net_socket_listen_init(NetClientState *peer, { NetClientState *nc; NetSocketState *s; - SocketAddressLegacy *saddr; + SocketAddress *saddr; int ret; Error *local_error =3D NULL; =20 @@ -501,7 +501,7 @@ static int net_socket_listen_init(NetClientState *peer, =20 ret =3D socket_listen(saddr, &local_error); if (ret < 0) { - qapi_free_SocketAddressLegacy(saddr); + qapi_free_SocketAddress(saddr); error_report_err(local_error); return -1; } @@ -514,20 +514,20 @@ static int net_socket_listen_init(NetClientState *pee= r, net_socket_rs_init(&s->rs, net_socket_rs_finalize); =20 qemu_set_fd_handler(s->listen_fd, net_socket_accept, NULL, s); - qapi_free_SocketAddressLegacy(saddr); + qapi_free_SocketAddress(saddr); return 0; } =20 typedef struct { NetClientState *peer; - SocketAddressLegacy *saddr; + SocketAddress *saddr; char *model; char *name; } socket_connect_data; =20 static void socket_connect_data_free(socket_connect_data *c) { - qapi_free_SocketAddressLegacy(c->saddr); + qapi_free_SocketAddress(c->saddr); g_free(c->model); g_free(c->name); g_free(c); diff --git a/qapi-schema.json b/qapi-schema.json index eab4139..5728b7f 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4126,7 +4126,11 @@ # # Captures the address of a socket, which could also be a named file descr= iptor # -# Note: This type is deprecated in favor of SocketAddress. +# Note: This type is deprecated in favor of SocketAddress. The +# difference between SocketAddressLegacy and SocketAddress is that the +# latter is a flat union rather than a simple union. Flat is nicer +# because it avoids nesting on the wire, i.e. that form has fewer {}. + # # Since: 1.3 ## @@ -4154,14 +4158,11 @@ ## # @SocketAddress: # -# Captures the address of a socket +# Captures the address of a socket, which could also be a named file +# descriptor # # @type: Transport type # -# This is just like SocketAddressLegacy, except it's a flat union rather -# than a simple union. Nicer because it avoids nesting on the wire, -# i.e. this form has fewer {}. -# # Since: 2.9 ## { 'union': 'SocketAddress', diff --git a/qemu-nbd.c b/qemu-nbd.c index 82d0859..b7ab86b 100644 --- a/qemu-nbd.c +++ b/qemu-nbd.c @@ -57,7 +57,7 @@ static NBDExport *exp; static bool newproto; static int verbose; static char *srcpath; -static SocketAddressLegacy *saddr; +static SocketAddress *saddr; static int persistent =3D 0; static enum { RUNNING, TERMINATE, TERMINATING, TERMINATED } state; static int shared =3D 1; @@ -387,21 +387,20 @@ static void nbd_update_server_watch(void) } =20 =20 -static SocketAddressLegacy *nbd_build_socket_address(const char *sockpath, +static SocketAddress *nbd_build_socket_address(const char *sockpath, const char *bindto, const char *port) { - SocketAddressLegacy *saddr; + SocketAddress *saddr; =20 - saddr =3D g_new0(SocketAddressLegacy, 1); + saddr =3D g_new0(SocketAddress, 1); if (sockpath) { - saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - saddr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - saddr->u.q_unix.data->path =3D g_strdup(sockpath); + saddr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + saddr->u.q_unix.path =3D g_strdup(sockpath); } else { InetSocketAddress *inet; - saddr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - inet =3D saddr->u.inet.data =3D g_new0(InetSocketAddress, 1); + saddr->type =3D SOCKET_ADDRESS_TYPE_INET; + inet =3D &saddr->u.inet; inet->host =3D g_strdup(bindto); if (port) { inet->port =3D g_strdup(port); diff --git a/qga/channel-posix.c b/qga/channel-posix.c index 65ab8eb..3f34465 100644 --- a/qga/channel-posix.c +++ b/qga/channel-posix.c @@ -203,7 +203,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, case GA_CHANNEL_VSOCK_LISTEN: { if (fd < 0) { Error *local_err =3D NULL; - SocketAddressLegacy *addr; + SocketAddress *addr; char *addr_str; =20 addr_str =3D g_strdup_printf("vsock:%s", path); @@ -216,7 +216,7 @@ static gboolean ga_channel_open(GAChannel *c, const gch= ar *path, } =20 fd =3D socket_listen(addr, &local_err); - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); if (local_err !=3D NULL) { g_critical("%s", error_get_pretty(local_err)); error_free(local_err); diff --git a/qga/main.c b/qga/main.c index cae4d7b..cc58d2b 100644 --- a/qga/main.c +++ b/qga/main.c @@ -1379,7 +1379,7 @@ int main(int argc, char **argv) goto end; } if (socket_activation) { - SocketAddressLegacy *addr; + SocketAddress *addr; =20 g_free(config->method); g_free(config->channel_path); @@ -1388,13 +1388,13 @@ int main(int argc, char **argv) =20 addr =3D socket_local_address(FIRST_SOCKET_ACTIVATION_FD, NULL); if (addr) { - if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX) { + if (addr->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX) { config->method =3D g_strdup("unix-listen"); - } else if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK)= { + } else if (addr->type =3D=3D SOCKET_ADDRESS_TYPE_VSOCK) { config->method =3D g_strdup("vsock-listen"); } =20 - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); } =20 if (!config->method) { diff --git a/tests/test-char.c b/tests/test-char.c index 773a1c3..124d0c5 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -291,7 +291,7 @@ static void char_socket_test(void) Chardev *chr =3D qemu_chr_new("server", "tcp:127.0.0.1:0,server,nowait= "); Chardev *chr_client; QObject *addr; - QDict *qdict, *data; + QDict *qdict; const char *port; SocketIdleData d =3D { .chr =3D chr }; CharBackend be; @@ -306,8 +306,7 @@ static void char_socket_test(void) =20 addr =3D object_property_get_qobject(OBJECT(chr), "addr", &error_abort= ); qdict =3D qobject_to_qdict(addr); - data =3D qdict_get_qdict(qdict, "data"); - port =3D qdict_get_str(data, "port"); + port =3D qdict_get_str(qdict, "port"); tmp =3D g_strdup_printf("tcp:127.0.0.1:%s", port); QDECREF(qdict); =20 diff --git a/tests/test-io-channel-socket.c b/tests/test-io-channel-socket.c index a66ffc2..d357cd2 100644 --- a/tests/test-io-channel-socket.c +++ b/tests/test-io-channel-socket.c @@ -115,8 +115,8 @@ static void test_io_channel_set_socket_bufs(QIOChannel = *src, } =20 =20 -static void test_io_channel_setup_sync(SocketAddressLegacy *listen_addr, - SocketAddressLegacy *connect_addr, +static void test_io_channel_setup_sync(SocketAddress *listen_addr, + SocketAddress *connect_addr, QIOChannel **src, QIOChannel **dst) { @@ -125,14 +125,14 @@ static void test_io_channel_setup_sync(SocketAddressL= egacy *listen_addr, lioc =3D qio_channel_socket_new(); qio_channel_socket_listen_sync(lioc, listen_addr, &error_abort); =20 - if (listen_addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { - SocketAddressLegacy *laddr =3D qio_channel_socket_get_local_addres= s( + if (listen_addr->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { + SocketAddress *laddr =3D qio_channel_socket_get_local_address( lioc, &error_abort); =20 - g_free(connect_addr->u.inet.data->port); - connect_addr->u.inet.data->port =3D g_strdup(laddr->u.inet.data->p= ort); + g_free(connect_addr->u.inet.port); + connect_addr->u.inet.port =3D g_strdup(laddr->u.inet.port); =20 - qapi_free_SocketAddressLegacy(laddr); + qapi_free_SocketAddress(laddr); } =20 *src =3D QIO_CHANNEL(qio_channel_socket_new()); @@ -165,8 +165,8 @@ static void test_io_channel_complete(QIOTask *task, } =20 =20 -static void test_io_channel_setup_async(SocketAddressLegacy *listen_addr, - SocketAddressLegacy *connect_addr, +static void test_io_channel_setup_async(SocketAddress *listen_addr, + SocketAddress *connect_addr, QIOChannel **src, QIOChannel **dst) { @@ -186,14 +186,14 @@ static void test_io_channel_setup_async(SocketAddress= Legacy *listen_addr, =20 g_assert(!data.err); =20 - if (listen_addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { - SocketAddressLegacy *laddr =3D qio_channel_socket_get_local_addres= s( + if (listen_addr->type =3D=3D SOCKET_ADDRESS_TYPE_INET) { + SocketAddress *laddr =3D qio_channel_socket_get_local_address( lioc, &error_abort); =20 - g_free(connect_addr->u.inet.data->port); - connect_addr->u.inet.data->port =3D g_strdup(laddr->u.inet.data->p= ort); + g_free(connect_addr->u.inet.port); + connect_addr->u.inet.port =3D g_strdup(laddr->u.inet.port); =20 - qapi_free_SocketAddressLegacy(laddr); + qapi_free_SocketAddress(laddr); } =20 *src =3D QIO_CHANNEL(qio_channel_socket_new()); @@ -221,8 +221,8 @@ static void test_io_channel_setup_async(SocketAddressLe= gacy *listen_addr, =20 =20 static void test_io_channel(bool async, - SocketAddressLegacy *listen_addr, - SocketAddressLegacy *connect_addr, + SocketAddress *listen_addr, + SocketAddress *connect_addr, bool passFD) { QIOChannel *src, *dst; @@ -297,27 +297,25 @@ static void test_io_channel(bool async, =20 static void test_io_channel_ipv4(bool async) { - SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); - SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); + SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); =20 - listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - listen_addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *listen_addr->u.inet.data =3D (InetSocketAddress) { + listen_addr->type =3D SOCKET_ADDRESS_TYPE_INET; + listen_addr->u.inet =3D (InetSocketAddress) { .host =3D g_strdup("127.0.0.1"), .port =3D NULL, /* Auto-select */ }; =20 - connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - connect_addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *connect_addr->u.inet.data =3D (InetSocketAddress) { + connect_addr->type =3D SOCKET_ADDRESS_TYPE_INET; + connect_addr->u.inet =3D (InetSocketAddress) { .host =3D g_strdup("127.0.0.1"), .port =3D NULL, /* Filled in later */ }; =20 test_io_channel(async, listen_addr, connect_addr, false); =20 - qapi_free_SocketAddressLegacy(listen_addr); - qapi_free_SocketAddressLegacy(connect_addr); + qapi_free_SocketAddress(listen_addr); + qapi_free_SocketAddress(connect_addr); } =20 =20 @@ -335,27 +333,25 @@ static void test_io_channel_ipv4_async(void) =20 static void test_io_channel_ipv6(bool async) { - SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); - SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); + SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); =20 - listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - listen_addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *listen_addr->u.inet.data =3D (InetSocketAddress) { + listen_addr->type =3D SOCKET_ADDRESS_TYPE_INET; + listen_addr->u.inet =3D (InetSocketAddress) { .host =3D g_strdup("::1"), .port =3D NULL, /* Auto-select */ }; =20 - connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - connect_addr->u.inet.data =3D g_new(InetSocketAddress, 1); - *connect_addr->u.inet.data =3D (InetSocketAddress) { + connect_addr->type =3D SOCKET_ADDRESS_TYPE_INET; + connect_addr->u.inet =3D (InetSocketAddress) { .host =3D g_strdup("::1"), .port =3D NULL, /* Filled in later */ }; =20 test_io_channel(async, listen_addr, connect_addr, false); =20 - qapi_free_SocketAddressLegacy(listen_addr); - qapi_free_SocketAddressLegacy(connect_addr); + qapi_free_SocketAddress(listen_addr); + qapi_free_SocketAddress(connect_addr); } =20 =20 @@ -374,22 +370,20 @@ static void test_io_channel_ipv6_async(void) #ifndef _WIN32 static void test_io_channel_unix(bool async) { - SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); - SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); + SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); =20 #define TEST_SOCKET "test-io-channel-socket.sock" - listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - listen_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - listen_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); + listen_addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + listen_addr->u.q_unix.path =3D g_strdup(TEST_SOCKET); =20 - connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - connect_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - connect_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); + connect_addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + connect_addr->u.q_unix.path =3D g_strdup(TEST_SOCKET); =20 test_io_channel(async, listen_addr, connect_addr, true); =20 - qapi_free_SocketAddressLegacy(listen_addr); - qapi_free_SocketAddressLegacy(connect_addr); + qapi_free_SocketAddress(listen_addr); + qapi_free_SocketAddress(connect_addr); g_assert(g_file_test(TEST_SOCKET, G_FILE_TEST_EXISTS) =3D=3D FALSE); } =20 @@ -407,8 +401,8 @@ static void test_io_channel_unix_async(void) =20 static void test_io_channel_unix_fd_pass(void) { - SocketAddressLegacy *listen_addr =3D g_new0(SocketAddressLegacy, 1); - SocketAddressLegacy *connect_addr =3D g_new0(SocketAddressLegacy, 1); + SocketAddress *listen_addr =3D g_new0(SocketAddress, 1); + SocketAddress *connect_addr =3D g_new0(SocketAddress, 1); QIOChannel *src, *dst; int testfd; int fdsend[3]; @@ -427,13 +421,11 @@ static void test_io_channel_unix_fd_pass(void) fdsend[1] =3D testfd; fdsend[2] =3D testfd; =20 - listen_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - listen_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - listen_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); + listen_addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + listen_addr->u.q_unix.path =3D g_strdup(TEST_SOCKET); =20 - connect_addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - connect_addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - connect_addr->u.q_unix.data->path =3D g_strdup(TEST_SOCKET); + connect_addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + connect_addr->u.q_unix.path =3D g_strdup(TEST_SOCKET); =20 test_io_channel_setup_sync(listen_addr, connect_addr, &src, &dst); =20 @@ -488,8 +480,8 @@ static void test_io_channel_unix_fd_pass(void) =20 object_unref(OBJECT(src)); object_unref(OBJECT(dst)); - qapi_free_SocketAddressLegacy(listen_addr); - qapi_free_SocketAddressLegacy(connect_addr); + qapi_free_SocketAddress(listen_addr); + qapi_free_SocketAddress(connect_addr); unlink(TEST_SOCKET); unlink(TEST_FILE); close(testfd); diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c index c7fa9b6..3ade4a4 100644 --- a/ui/vnc-auth-sasl.c +++ b/ui/vnc-auth-sasl.c @@ -498,7 +498,7 @@ vnc_socket_ip_addr_string(QIOChannelSocket *ioc, bool local, Error **errp) { - SocketAddressLegacy *addr; + SocketAddress *addr; char *ret; =20 if (local) { @@ -510,13 +510,12 @@ vnc_socket_ip_addr_string(QIOChannelSocket *ioc, return NULL; } =20 - if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { + if (addr->type !=3D SOCKET_ADDRESS_TYPE_INET) { error_setg(errp, "Not an inet socket type"); return NULL; } - ret =3D g_strdup_printf("%s;%s", addr->u.inet.data->host, - addr->u.inet.data->port); - qapi_free_SocketAddressLegacy(addr); + ret =3D g_strdup_printf("%s;%s", addr->u.inet.host, addr->u.inet.port); + qapi_free_SocketAddress(addr); return ret; } =20 diff --git a/ui/vnc.c b/ui/vnc.c index 5090a25..9c4edcd 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -108,31 +108,31 @@ static void vnc_set_share_mode(VncState *vs, VncShare= Mode mode) } =20 =20 -static void vnc_init_basic_info(SocketAddressLegacy *addr, +static void vnc_init_basic_info(SocketAddress *addr, VncBasicInfo *info, Error **errp) { switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - info->host =3D g_strdup(addr->u.inet.data->host); - info->service =3D g_strdup(addr->u.inet.data->port); - if (addr->u.inet.data->ipv6) { + case SOCKET_ADDRESS_TYPE_INET: + info->host =3D g_strdup(addr->u.inet.host); + info->service =3D g_strdup(addr->u.inet.port); + if (addr->u.inet.ipv6) { info->family =3D NETWORK_ADDRESS_FAMILY_IPV6; } else { info->family =3D NETWORK_ADDRESS_FAMILY_IPV4; } break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: + case SOCKET_ADDRESS_TYPE_UNIX: info->host =3D g_strdup(""); - info->service =3D g_strdup(addr->u.q_unix.data->path); + info->service =3D g_strdup(addr->u.q_unix.path); info->family =3D NETWORK_ADDRESS_FAMILY_UNIX; break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: - case SOCKET_ADDRESS_LEGACY_KIND_FD: + case SOCKET_ADDRESS_TYPE_VSOCK: + case SOCKET_ADDRESS_TYPE_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressLegacyKind_lookup[addr->type]); + SocketAddressType_lookup[addr->type]); break; default: abort(); @@ -145,7 +145,7 @@ static void vnc_init_basic_info_from_server_addr(QIOCha= nnelSocket *ioc, VncBasicInfo *info, Error **errp) { - SocketAddressLegacy *addr =3D NULL; + SocketAddress *addr =3D NULL; =20 if (!ioc) { error_setg(errp, "No listener socket available"); @@ -158,14 +158,14 @@ static void vnc_init_basic_info_from_server_addr(QIOC= hannelSocket *ioc, } =20 vnc_init_basic_info(addr, info, errp); - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); } =20 static void vnc_init_basic_info_from_remote_addr(QIOChannelSocket *ioc, VncBasicInfo *info, Error **errp) { - SocketAddressLegacy *addr =3D NULL; + SocketAddress *addr =3D NULL; =20 addr =3D qio_channel_socket_get_remote_address(ioc, errp); if (!addr) { @@ -173,7 +173,7 @@ static void vnc_init_basic_info_from_remote_addr(QIOCha= nnelSocket *ioc, } =20 vnc_init_basic_info(addr, info, errp); - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); } =20 static const char *vnc_auth_name(VncDisplay *vd) { @@ -377,7 +377,7 @@ VncInfo *qmp_query_vnc(Error **errp) { VncInfo *info =3D g_malloc0(sizeof(*info)); VncDisplay *vd =3D vnc_display_find(NULL); - SocketAddressLegacy *addr =3D NULL; + SocketAddress *addr =3D NULL; =20 if (vd =3D=3D NULL || !vd->nlsock) { info->enabled =3D false; @@ -398,26 +398,26 @@ VncInfo *qmp_query_vnc(Error **errp) } =20 switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - info->host =3D g_strdup(addr->u.inet.data->host); - info->service =3D g_strdup(addr->u.inet.data->port); - if (addr->u.inet.data->ipv6) { + case SOCKET_ADDRESS_TYPE_INET: + info->host =3D g_strdup(addr->u.inet.host); + info->service =3D g_strdup(addr->u.inet.port); + if (addr->u.inet.ipv6) { info->family =3D NETWORK_ADDRESS_FAMILY_IPV6; } else { info->family =3D NETWORK_ADDRESS_FAMILY_IPV4; } break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: + case SOCKET_ADDRESS_TYPE_UNIX: info->host =3D g_strdup(""); - info->service =3D g_strdup(addr->u.q_unix.data->path); + info->service =3D g_strdup(addr->u.q_unix.path); info->family =3D NETWORK_ADDRESS_FAMILY_UNIX; break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: - case SOCKET_ADDRESS_LEGACY_KIND_FD: + case SOCKET_ADDRESS_TYPE_VSOCK: + case SOCKET_ADDRESS_TYPE_FD: error_setg(errp, "Unsupported socket address type %s", - SocketAddressLegacyKind_lookup[addr->type]); + SocketAddressType_lookup[addr->type]); goto out_error; default: abort(); @@ -431,11 +431,11 @@ VncInfo *qmp_query_vnc(Error **errp) info->auth =3D g_strdup(vnc_auth_name(vd)); } =20 - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); return info; =20 out_error: - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); qapi_free_VncInfo(info); return NULL; } @@ -455,7 +455,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOCh= annelSocket *ioc, VncServerInfo2List *list; VncServerInfo2 *info; Error *err =3D NULL; - SocketAddressLegacy *addr; + SocketAddress *addr; =20 addr =3D qio_channel_socket_get_local_address(ioc, &err); if (!addr) { @@ -465,7 +465,7 @@ static VncServerInfo2List *qmp_query_server_entry(QIOCh= annelSocket *ioc, =20 info =3D g_new0(VncServerInfo2, 1); vnc_init_basic_info(addr, qapi_VncServerInfo2_base(info), &err); - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); if (err) { qapi_free_VncServerInfo2(info); error_free(err); @@ -3149,7 +3149,7 @@ int vnc_display_pw_expire(const char *id, time_t expi= res) =20 static void vnc_display_print_local_addr(VncDisplay *vd) { - SocketAddressLegacy *addr; + SocketAddress *addr; Error *err =3D NULL; =20 if (!vd->nlsock) { @@ -3161,14 +3161,14 @@ static void vnc_display_print_local_addr(VncDisplay= *vd) return; } =20 - if (addr->type !=3D SOCKET_ADDRESS_LEGACY_KIND_INET) { - qapi_free_SocketAddressLegacy(addr); + if (addr->type !=3D SOCKET_ADDRESS_TYPE_INET) { + qapi_free_SocketAddress(addr); return; } error_printf_unless_qmp("VNC server running on %s:%s\n", - addr->u.inet.data->host, - addr->u.inet.data->port); - qapi_free_SocketAddressLegacy(addr); + addr->u.inet.host, + addr->u.inet.port); + qapi_free_SocketAddress(addr); } =20 static QemuOptsList qemu_vnc_opts =3D { @@ -3414,18 +3414,17 @@ static int vnc_display_get_address(const char *addr= str, bool has_ipv6, bool ipv4, bool ipv6, - SocketAddressLegacy **retaddr, + SocketAddress **retaddr, Error **errp) { int ret =3D -1; - SocketAddressLegacy *addr =3D NULL; + SocketAddress *addr =3D NULL; =20 - addr =3D g_new0(SocketAddressLegacy, 1); + addr =3D g_new0(SocketAddress, 1); =20 if (strncmp(addrstr, "unix:", 5) =3D=3D 0) { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); - addr->u.q_unix.data->path =3D g_strdup(addrstr + 5); + addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + addr->u.q_unix.path =3D g_strdup(addrstr + 5); =20 if (websocket) { error_setg(errp, "UNIX sockets not supported with websock"); @@ -3461,8 +3460,8 @@ static int vnc_display_get_address(const char *addrst= r, } } =20 - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - inet =3D addr->u.inet.data =3D g_new0(InetSocketAddress, 1); + addr->type =3D SOCKET_ADDRESS_TYPE_INET; + inet =3D &addr->u.inet; if (addrstr[0] =3D=3D '[' && addrstr[hostlen - 1] =3D=3D ']') { inet->host =3D g_strndup(addrstr + 1, hostlen - 2); } else { @@ -3518,21 +3517,21 @@ static int vnc_display_get_address(const char *addr= str, =20 cleanup: if (ret < 0) { - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); } return ret; } =20 static int vnc_display_get_addresses(QemuOpts *opts, bool reverse, - SocketAddressLegacy ***retsaddr, + SocketAddress ***retsaddr, size_t *retnsaddr, - SocketAddressLegacy ***retwsaddr, + SocketAddress ***retwsaddr, size_t *retnwsaddr, Error **errp) { - SocketAddressLegacy *saddr =3D NULL; - SocketAddressLegacy *wsaddr =3D NULL; + SocketAddress *saddr =3D NULL; + SocketAddress *wsaddr =3D NULL; QemuOptsIter addriter; const char *addr; int to =3D qemu_opt_get_number(opts, "to", 0); @@ -3577,7 +3576,7 @@ static int vnc_display_get_addresses(QemuOpts *opts, if (displaynum =3D=3D -1) { displaynum =3D rv; } - *retsaddr =3D g_renew(SocketAddressLegacy *, *retsaddr, *retnsaddr= + 1); + *retsaddr =3D g_renew(SocketAddress *, *retsaddr, *retnsaddr + 1); (*retsaddr)[(*retnsaddr)++] =3D saddr; } =20 @@ -3601,16 +3600,15 @@ static int vnc_display_get_addresses(QemuOpts *opts, * address for websocket too */ if (*retnsaddr =3D=3D 1 && - (*retsaddr)[0]->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && - wsaddr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_INET && - g_str_equal(wsaddr->u.inet.data->host, "") && - !g_str_equal((*retsaddr)[0]->u.inet.data->host, "")) { - g_free(wsaddr->u.inet.data->host); - wsaddr->u.inet.data->host =3D - g_strdup((*retsaddr)[0]->u.inet.data->host); + (*retsaddr)[0]->type =3D=3D SOCKET_ADDRESS_TYPE_INET && + wsaddr->type =3D=3D SOCKET_ADDRESS_TYPE_INET && + g_str_equal(wsaddr->u.inet.host, "") && + !g_str_equal((*retsaddr)[0]->u.inet.host, "")) { + g_free(wsaddr->u.inet.host); + wsaddr->u.inet.host =3D g_strdup((*retsaddr)[0]->u.inet.host); } =20 - *retwsaddr =3D g_renew(SocketAddressLegacy *, *retwsaddr, *retnwsa= ddr + 1); + *retwsaddr =3D g_renew(SocketAddress *, *retwsaddr, *retnwsaddr + = 1); (*retwsaddr)[(*retnwsaddr)++] =3D wsaddr; } =20 @@ -3618,11 +3616,11 @@ static int vnc_display_get_addresses(QemuOpts *opts, cleanup: if (ret < 0) { for (i =3D 0; i < *retnsaddr; i++) { - qapi_free_SocketAddressLegacy((*retsaddr)[i]); + qapi_free_SocketAddress((*retsaddr)[i]); } g_free(*retsaddr); for (i =3D 0; i < *retnwsaddr; i++) { - qapi_free_SocketAddressLegacy((*retwsaddr)[i]); + qapi_free_SocketAddress((*retwsaddr)[i]); } g_free(*retwsaddr); *retsaddr =3D *retwsaddr =3D NULL; @@ -3632,9 +3630,9 @@ static int vnc_display_get_addresses(QemuOpts *opts, } =20 static int vnc_display_connect(VncDisplay *vd, - SocketAddressLegacy **saddr, + SocketAddress **saddr, size_t nsaddr, - SocketAddressLegacy **wsaddr, + SocketAddress **wsaddr, size_t nwsaddr, Error **errp) { @@ -3648,8 +3646,8 @@ static int vnc_display_connect(VncDisplay *vd, error_setg(errp, "Expected a single address in reverse mode"); return -1; } - /* TODO SOCKET_ADDRESS_LEGACY_KIND_FD when fd has AF_UNIX */ - vd->is_unix =3D saddr[0]->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; + /* TODO SOCKET_ADDRESS_TYPE_FD when fd has AF_UNIX */ + vd->is_unix =3D saddr[0]->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX; sioc =3D qio_channel_socket_new(); qio_channel_set_name(QIO_CHANNEL(sioc), "vnc-reverse"); if (qio_channel_socket_connect_sync(sioc, saddr[0], errp) < 0) { @@ -3662,7 +3660,7 @@ static int vnc_display_connect(VncDisplay *vd, =20 =20 static int vnc_display_listen_addr(VncDisplay *vd, - SocketAddressLegacy *addr, + SocketAddress *addr, const char *name, QIOChannelSocket ***lsock, guint **lsock_tag, @@ -3670,7 +3668,7 @@ static int vnc_display_listen_addr(VncDisplay *vd, Error **errp) { QIODNSResolver *resolver =3D qio_dns_resolver_get_instance(); - SocketAddressLegacy **rawaddrs =3D NULL; + SocketAddress **rawaddrs =3D NULL; size_t nrawaddrs =3D 0; Error *listenerr =3D NULL; bool listening =3D false; @@ -3700,7 +3698,7 @@ static int vnc_display_listen_addr(VncDisplay *vd, } =20 for (i =3D 0; i < nrawaddrs; i++) { - qapi_free_SocketAddressLegacy(rawaddrs[i]); + qapi_free_SocketAddress(rawaddrs[i]); } g_free(rawaddrs); =20 @@ -3724,9 +3722,9 @@ static int vnc_display_listen_addr(VncDisplay *vd, =20 =20 static int vnc_display_listen(VncDisplay *vd, - SocketAddressLegacy **saddr, + SocketAddress **saddr, size_t nsaddr, - SocketAddressLegacy **wsaddr, + SocketAddress **wsaddr, size_t nwsaddr, Error **errp) { @@ -3761,7 +3759,7 @@ void vnc_display_open(const char *id, Error **errp) { VncDisplay *vd =3D vnc_display_find(id); QemuOpts *opts =3D qemu_opts_find(&qemu_vnc_opts, id); - SocketAddressLegacy **saddr =3D NULL, **wsaddr =3D NULL; + SocketAddress **saddr =3D NULL, **wsaddr =3D NULL; size_t nsaddr, nwsaddr; const char *share, *device_id; QemuConsole *con; @@ -3997,10 +3995,10 @@ void vnc_display_open(const char *id, Error **errp) =20 cleanup: for (i =3D 0; i < nsaddr; i++) { - qapi_free_SocketAddressLegacy(saddr[i]); + qapi_free_SocketAddress(saddr[i]); } for (i =3D 0; i < nwsaddr; i++) { - qapi_free_SocketAddressLegacy(wsaddr[i]); + qapi_free_SocketAddress(wsaddr[i]); } return; =20 diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 801aa7a..9e65ebe 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -22,6 +22,7 @@ #endif /* CONFIG_AF_VSOCK */ =20 #include "monitor/monitor.h" +#include "qapi/clone-visitor.h" #include "qapi/error.h" #include "qemu/sockets.h" #include "qemu/main-loop.h" @@ -1029,73 +1030,69 @@ int unix_connect(const char *path, Error **errp) } =20 =20 -SocketAddressLegacy *socket_parse(const char *str, Error **errp) +SocketAddress *socket_parse(const char *str, Error **errp) { - SocketAddressLegacy *addr; + SocketAddress *addr; =20 - addr =3D g_new0(SocketAddressLegacy, 1); + addr =3D g_new0(SocketAddress, 1); if (strstart(str, "unix:", NULL)) { if (str[5] =3D=3D '\0') { error_setg(errp, "invalid Unix socket address"); goto fail; } else { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - addr->u.q_unix.data =3D g_new(UnixSocketAddress, 1); - addr->u.q_unix.data->path =3D g_strdup(str + 5); + addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + addr->u.q_unix.path =3D g_strdup(str + 5); } } else if (strstart(str, "fd:", NULL)) { if (str[3] =3D=3D '\0') { error_setg(errp, "invalid file descriptor address"); goto fail; } else { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; - addr->u.fd.data =3D g_new(String, 1); - addr->u.fd.data->str =3D g_strdup(str + 3); + addr->type =3D SOCKET_ADDRESS_TYPE_FD; + addr->u.fd.str =3D g_strdup(str + 3); } } else if (strstart(str, "vsock:", NULL)) { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; - addr->u.vsock.data =3D g_new(VsockSocketAddress, 1); - if (vsock_parse(addr->u.vsock.data, str + strlen("vsock:"), errp))= { + addr->type =3D SOCKET_ADDRESS_TYPE_VSOCK; + if (vsock_parse(&addr->u.vsock, str + strlen("vsock:"), errp)) { goto fail; } } else { - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D g_new(InetSocketAddress, 1); - if (inet_parse(addr->u.inet.data, str, errp)) { + addr->type =3D SOCKET_ADDRESS_TYPE_INET; + if (inet_parse(&addr->u.inet, str, errp)) { goto fail; } } return addr; =20 fail: - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); return NULL; } =20 -int socket_connect(SocketAddressLegacy *addr, NonBlockingConnectHandler *c= allback, +int socket_connect(SocketAddress *addr, NonBlockingConnectHandler *callbac= k, void *opaque, Error **errp) { int fd; =20 switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - fd =3D inet_connect_saddr(addr->u.inet.data, callback, opaque, err= p); + case SOCKET_ADDRESS_TYPE_INET: + fd =3D inet_connect_saddr(&addr->u.inet, callback, opaque, errp); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: - fd =3D unix_connect_saddr(addr->u.q_unix.data, callback, opaque, e= rrp); + case SOCKET_ADDRESS_TYPE_UNIX: + fd =3D unix_connect_saddr(&addr->u.q_unix, callback, opaque, errp); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_FD: - fd =3D monitor_get_fd(cur_mon, addr->u.fd.data->str, errp); + case SOCKET_ADDRESS_TYPE_FD: + fd =3D monitor_get_fd(cur_mon, addr->u.fd.str, errp); if (fd >=3D 0 && callback) { qemu_set_nonblock(fd); callback(fd, NULL, opaque); } break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: - fd =3D vsock_connect_saddr(addr->u.vsock.data, callback, opaque, e= rrp); + case SOCKET_ADDRESS_TYPE_VSOCK: + fd =3D vsock_connect_saddr(&addr->u.vsock, callback, opaque, errp); break; =20 default: @@ -1104,25 +1101,25 @@ int socket_connect(SocketAddressLegacy *addr, NonBl= ockingConnectHandler *callbac return fd; } =20 -int socket_listen(SocketAddressLegacy *addr, Error **errp) +int socket_listen(SocketAddress *addr, Error **errp) { int fd; =20 switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - fd =3D inet_listen_saddr(addr->u.inet.data, 0, false, errp); + case SOCKET_ADDRESS_TYPE_INET: + fd =3D inet_listen_saddr(&addr->u.inet, 0, false, errp); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: - fd =3D unix_listen_saddr(addr->u.q_unix.data, false, errp); + case SOCKET_ADDRESS_TYPE_UNIX: + fd =3D unix_listen_saddr(&addr->u.q_unix, false, errp); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_FD: - fd =3D monitor_get_fd(cur_mon, addr->u.fd.data->str, errp); + case SOCKET_ADDRESS_TYPE_FD: + fd =3D monitor_get_fd(cur_mon, addr->u.fd.str, errp); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: - fd =3D vsock_listen_saddr(addr->u.vsock.data, errp); + case SOCKET_ADDRESS_TYPE_VSOCK: + fd =3D vsock_listen_saddr(&addr->u.vsock, errp); break; =20 default: @@ -1133,34 +1130,34 @@ int socket_listen(SocketAddressLegacy *addr, Error = **errp) =20 void socket_listen_cleanup(int fd, Error **errp) { - SocketAddressLegacy *addr; + SocketAddress *addr; =20 addr =3D socket_local_address(fd, errp); =20 - if (addr->type =3D=3D SOCKET_ADDRESS_LEGACY_KIND_UNIX - && addr->u.q_unix.data->path) { - if (unlink(addr->u.q_unix.data->path) < 0 && errno !=3D ENOENT) { + if (addr->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX + && addr->u.q_unix.path) { + if (unlink(addr->u.q_unix.path) < 0 && errno !=3D ENOENT) { error_setg_errno(errp, errno, "Failed to unlink socket %s", - addr->u.q_unix.data->path); + addr->u.q_unix.path); } } =20 - qapi_free_SocketAddressLegacy(addr); + qapi_free_SocketAddress(addr); } =20 -int socket_dgram(SocketAddressLegacy *remote, SocketAddressLegacy *local, = Error **errp) +int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp) { int fd; =20 /* - * TODO SOCKET_ADDRESS_LEGACY_KIND_FD when fd is AF_INET or AF_INET6 + * TODO SOCKET_ADDRESS_TYPE_FD when fd is AF_INET or AF_INET6 * (although other address families can do SOCK_DGRAM, too) */ switch (remote->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - fd =3D inet_dgram_saddr(remote->u.inet.data, - local ? local->u.inet.data : NULL, errp); + case SOCKET_ADDRESS_TYPE_INET: + fd =3D inet_dgram_saddr(&remote->u.inet, + local ? &local->u.inet : NULL, errp); break; =20 default: @@ -1171,14 +1168,14 @@ int socket_dgram(SocketAddressLegacy *remote, Socke= tAddressLegacy *local, Error } =20 =20 -static SocketAddressLegacy * +static SocketAddress * socket_sockaddr_to_address_inet(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { char host[NI_MAXHOST]; char serv[NI_MAXSERV]; - SocketAddressLegacy *addr; + SocketAddress *addr; InetSocketAddress *inet; int ret; =20 @@ -1192,9 +1189,9 @@ socket_sockaddr_to_address_inet(struct sockaddr_stora= ge *sa, return NULL; } =20 - addr =3D g_new0(SocketAddressLegacy, 1); - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - inet =3D addr->u.inet.data =3D g_new0(InetSocketAddress, 1); + addr =3D g_new0(SocketAddress, 1); + addr->type =3D SOCKET_ADDRESS_TYPE_INET; + inet =3D &addr->u.inet; inet->host =3D g_strdup(host); inet->port =3D g_strdup(serv); if (sa->ss_family =3D=3D AF_INET) { @@ -1208,20 +1205,18 @@ socket_sockaddr_to_address_inet(struct sockaddr_sto= rage *sa, =20 =20 #ifndef WIN32 -static SocketAddressLegacy * +static SocketAddress * socket_sockaddr_to_address_unix(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { - SocketAddressLegacy *addr; + SocketAddress *addr; struct sockaddr_un *su =3D (struct sockaddr_un *)sa; =20 - addr =3D g_new0(SocketAddressLegacy, 1); - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - addr->u.q_unix.data =3D g_new0(UnixSocketAddress, 1); + addr =3D g_new0(SocketAddress, 1); + addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; if (su->sun_path[0]) { - addr->u.q_unix.data->path =3D g_strndup(su->sun_path, - sizeof(su->sun_path)); + addr->u.q_unix.path =3D g_strndup(su->sun_path, sizeof(su->sun_pat= h)); } =20 return addr; @@ -1229,18 +1224,18 @@ socket_sockaddr_to_address_unix(struct sockaddr_sto= rage *sa, #endif /* WIN32 */ =20 #ifdef CONFIG_AF_VSOCK -static SocketAddressLegacy * +static SocketAddress * socket_sockaddr_to_address_vsock(struct sockaddr_storage *sa, socklen_t salen, Error **errp) { - SocketAddressLegacy *addr; + SocketAddress *addr; VsockSocketAddress *vaddr; struct sockaddr_vm *svm =3D (struct sockaddr_vm *)sa; =20 - addr =3D g_new0(SocketAddressLegacy, 1); - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; - addr->u.vsock.data =3D vaddr =3D g_new0(VsockSocketAddress, 1); + addr =3D g_new0(SocketAddress, 1); + addr->type =3D SOCKET_ADDRESS_TYPE_VSOCK; + vaddr =3D &addr->u.vsock; vaddr->cid =3D g_strdup_printf("%u", svm->svm_cid); vaddr->port =3D g_strdup_printf("%u", svm->svm_port); =20 @@ -1248,7 +1243,7 @@ socket_sockaddr_to_address_vsock(struct sockaddr_stor= age *sa, } #endif /* CONFIG_AF_VSOCK */ =20 -SocketAddressLegacy * +SocketAddress * socket_sockaddr_to_address(struct sockaddr_storage *sa, socklen_t salen, Error **errp) @@ -1277,7 +1272,7 @@ socket_sockaddr_to_address(struct sockaddr_storage *s= a, } =20 =20 -SocketAddressLegacy *socket_local_address(int fd, Error **errp) +SocketAddress *socket_local_address(int fd, Error **errp) { struct sockaddr_storage ss; socklen_t sslen =3D sizeof(ss); @@ -1292,7 +1287,7 @@ SocketAddressLegacy *socket_local_address(int fd, Err= or **errp) } =20 =20 -SocketAddressLegacy *socket_remote_address(int fd, Error **errp) +SocketAddress *socket_remote_address(int fd, Error **errp) { struct sockaddr_storage ss; socklen_t sslen =3D sizeof(ss); @@ -1306,14 +1301,14 @@ SocketAddressLegacy *socket_remote_address(int fd, = Error **errp) return socket_sockaddr_to_address(&ss, sslen, errp); } =20 -char *socket_address_to_string(struct SocketAddressLegacy *addr, Error **e= rrp) +char *socket_address_to_string(struct SocketAddress *addr, Error **errp) { char *buf; InetSocketAddress *inet; =20 switch (addr->type) { - case SOCKET_ADDRESS_LEGACY_KIND_INET: - inet =3D addr->u.inet.data; + case SOCKET_ADDRESS_TYPE_INET: + inet =3D &addr->u.inet; if (strchr(inet->host, ':') =3D=3D NULL) { buf =3D g_strdup_printf("%s:%s", inet->host, inet->port); } else { @@ -1321,18 +1316,18 @@ char *socket_address_to_string(struct SocketAddress= Legacy *addr, Error **errp) } break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_UNIX: - buf =3D g_strdup(addr->u.q_unix.data->path); + case SOCKET_ADDRESS_TYPE_UNIX: + buf =3D g_strdup(addr->u.q_unix.path); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_FD: - buf =3D g_strdup(addr->u.fd.data->str); + case SOCKET_ADDRESS_TYPE_FD: + buf =3D g_strdup(addr->u.fd.str); break; =20 - case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + case SOCKET_ADDRESS_TYPE_VSOCK: buf =3D g_strdup_printf("%s:%s", - addr->u.vsock.data->cid, - addr->u.vsock.data->port); + addr->u.vsock.cid, + addr->u.vsock.port); break; =20 default: @@ -1371,3 +1366,38 @@ SocketAddressLegacy *socket_address_crumple(SocketAd= dress *addr_flat) =20 return addr; } + +SocketAddress *socket_address_flatten(SocketAddressLegacy *addr_legacy) +{ + SocketAddress *addr =3D g_new(SocketAddress, 1); + + if (!addr_legacy) { + return NULL; + } + + switch (addr_legacy->type) { + case SOCKET_ADDRESS_LEGACY_KIND_INET: + addr->type =3D SOCKET_ADDRESS_TYPE_INET; + QAPI_CLONE_MEMBERS(InetSocketAddress, &addr->u.inet, + addr_legacy->u.inet.data); + break; + case SOCKET_ADDRESS_LEGACY_KIND_UNIX: + addr->type =3D SOCKET_ADDRESS_TYPE_UNIX; + QAPI_CLONE_MEMBERS(UnixSocketAddress, &addr->u.q_unix, + addr_legacy->u.q_unix.data); + break; + case SOCKET_ADDRESS_LEGACY_KIND_VSOCK: + addr->type =3D SOCKET_ADDRESS_TYPE_VSOCK; + QAPI_CLONE_MEMBERS(VsockSocketAddress, &addr->u.vsock, + addr_legacy->u.vsock.data); + break; + case SOCKET_ADDRESS_LEGACY_KIND_FD: + addr->type =3D SOCKET_ADDRESS_TYPE_FD; + QAPI_CLONE_MEMBERS(String, &addr->u.fd, addr_legacy->u.fd.data); + break; + default: + abort(); + } + + return addr; +} --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317610838263.93912263412426; Tue, 9 May 2017 01:13:30 -0700 (PDT) Received: from localhost ([::1]:35657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Gv-0005hH-Cb for importer@patchew.org; Tue, 09 May 2017 04:13:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44105) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085J-0s for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Yy-FQ for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38540) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Xv-70 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 42700D7141 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0B7C853C35 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 79225114CF8C; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 42700D7141 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 42700D7141 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:36 +0200 Message-Id: <1494317205-2211-20-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@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.38]); Tue, 09 May 2017 08:06:50 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 19/28] sockets: Delete unused helper socket_address_crumple() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Message-Id: <1493192202-3184-8-git-send-email-armbru@redhat.com> Reviewed-by: Eric Blake [Commit message typo fixed] --- include/qemu/sockets.h | 11 ----------- util/qemu-sockets.c | 31 ------------------------------- 2 files changed, 42 deletions(-) diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h index a0b5cae..5c326db 100644 --- a/include/qemu/sockets.h +++ b/include/qemu/sockets.h @@ -121,17 +121,6 @@ SocketAddress *socket_remote_address(int fd, Error **e= rrp); char *socket_address_to_string(struct SocketAddress *addr, Error **errp); =20 /** - * socket_address_crumple: - * @addr_flat: the socket address to crumple - * - * Convert SocketAddress to SocketAddressLegacy. Caller is responsible - * for freeing with qapi_free_SocketAddressLegacy(). - * - * Returns: the argument converted to SocketAddressLegacy. - */ -SocketAddressLegacy *socket_address_crumple(SocketAddress *addr); - -/** * socket_address_flatten: * @addr: the socket address to flatten * diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c index 9e65ebe..d8183f7 100644 --- a/util/qemu-sockets.c +++ b/util/qemu-sockets.c @@ -1336,37 +1336,6 @@ char *socket_address_to_string(struct SocketAddress = *addr, Error **errp) return buf; } =20 -SocketAddressLegacy *socket_address_crumple(SocketAddress *addr_flat) -{ - SocketAddressLegacy *addr =3D g_new(SocketAddressLegacy, 1); - - switch (addr_flat->type) { - case SOCKET_ADDRESS_TYPE_INET: - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_INET; - addr->u.inet.data =3D QAPI_CLONE(InetSocketAddress, - &addr_flat->u.inet); - break; - case SOCKET_ADDRESS_TYPE_UNIX: - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX; - addr->u.q_unix.data =3D QAPI_CLONE(UnixSocketAddress, - &addr_flat->u.q_unix); - break; - case SOCKET_ADDRESS_TYPE_VSOCK: - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_VSOCK; - addr->u.vsock.data =3D QAPI_CLONE(VsockSocketAddress, - &addr_flat->u.vsock); - break; - case SOCKET_ADDRESS_TYPE_FD: - addr->type =3D SOCKET_ADDRESS_LEGACY_KIND_FD; - addr->u.fd.data =3D QAPI_CLONE(String, &addr_flat->u.fd); - break; - default: - abort(); - } - - return addr; -} - SocketAddress *socket_address_flatten(SocketAddressLegacy *addr_legacy) { SocketAddress *addr =3D g_new(SocketAddress, 1); --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317670314288.97456435475624; Tue, 9 May 2017 01:14:30 -0700 (PDT) Received: from localhost ([::1]:35660 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Hs-0006nt-BF for importer@patchew.org; Tue, 09 May 2017 04:14:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44103) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Aa-00085G-WE for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Yg-DB for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35182) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Xu-78 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 41AD8804F0 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0E19688202 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7ABBC114CF95; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 41AD8804F0 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 41AD8804F0 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:37 +0200 Message-Id: <1494317205-2211-21-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.27]); Tue, 09 May 2017 08:06:50 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 20/28] qmp: Improve QMP dispatch error messages X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake Message-Id: <1493282486-28338-2-git-send-email-armbru@redhat.com> Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qapi/qmp-dispatch.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c index dc50212..5ad36f8 100644 --- a/qapi/qmp-dispatch.c +++ b/qapi/qmp-dispatch.c @@ -30,7 +30,7 @@ static QDict *qmp_dispatch_check_obj(const QObject *reque= st, Error **errp) =20 dict =3D qobject_to_qdict(request); if (!dict) { - error_setg(errp, "Expected '%s' in QMP input", "object"); + error_setg(errp, "QMP input must be a JSON object"); return NULL; } =20 @@ -41,26 +41,26 @@ static QDict *qmp_dispatch_check_obj(const QObject *req= uest, Error **errp) =20 if (!strcmp(arg_name, "execute")) { if (qobject_type(arg_obj) !=3D QTYPE_QSTRING) { - error_setg(errp, "QMP input object member '%s' expects '%s= '", - "execute", "string"); + error_setg(errp, + "QMP input member 'execute' must be a string"); return NULL; } has_exec_key =3D true; } else if (!strcmp(arg_name, "arguments")) { if (qobject_type(arg_obj) !=3D QTYPE_QDICT) { - error_setg(errp, "QMP input object member '%s' expects '%s= '", - "arguments", "object"); + error_setg(errp, + "QMP input member 'arguments' must be an object= "); return NULL; } } else { - error_setg(errp, "QMP input object member '%s' is unexpected", + error_setg(errp, "QMP input member '%s' is unexpected", arg_name); return NULL; } } =20 if (!has_exec_key) { - error_setg(errp, "Expected '%s' in QMP input", "execute"); + error_setg(errp, "QMP input lacks member 'execute'"); return NULL; } =20 --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149431781560685.13209869132163; Tue, 9 May 2017 01:16:55 -0700 (PDT) Received: from localhost ([::1]:35675 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80KE-0000bP-2e for importer@patchew.org; Tue, 09 May 2017 04:16:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44120) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085X-3q for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Z6-HQ for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44298) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Y2-By for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 66F3E37E67 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3485A83DAC for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7D8C3114CF9B; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 66F3E37E67 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 66F3E37E67 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:38 +0200 Message-Id: <1494317205-2211-22-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.29]); Tue, 09 May 2017 08:06:50 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 21/28] qobject-input-visitor: Document full_name_nth() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Message-Id: <1493282486-28338-3-git-send-email-armbru@redhat.com> Reviewed-by: Marc-Andr=C3=A9 Lureau --- qapi/qobject-input-visitor.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c index 865e948..2530959 100644 --- a/qapi/qobject-input-visitor.c +++ b/qapi/qobject-input-visitor.c @@ -55,6 +55,17 @@ static QObjectInputVisitor *to_qiv(Visitor *v) return container_of(v, QObjectInputVisitor, visitor); } =20 +/* + * Find the full name of something @qiv is currently visiting. + * @qiv is visiting something named @name in the stack of containers + * @qiv->stack. + * If @n is zero, return its full name. + * If @n is positive, return the full name of the @n-th container + * counting from the top. The stack of containers must have at least + * @n elements. + * The returned string is valid until the next full_name_nth(@v) or + * destruction of @v. + */ static const char *full_name_nth(QObjectInputVisitor *qiv, const char *nam= e, int n) { --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317620502386.67110732068625; Tue, 9 May 2017 01:13:40 -0700 (PDT) Received: from localhost ([::1]:35659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80H4-0005rk-UM for importer@patchew.org; Tue, 09 May 2017 04:13:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44113) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085Q-32 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007ZC-JM for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35198) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Y7-Cl for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 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 6E69F804E0 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 39123171DE for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 804B51110D47; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6E69F804E0 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 6E69F804E0 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:39 +0200 Message-Id: <1494317205-2211-23-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.27]); Tue, 09 May 2017 08:06:50 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 22/28] qapi: Document intended use of @name within alternate visits X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Message-Id: <1493282486-28338-4-git-send-email-armbru@redhat.com> Reviewed-by: Marc-Andr=C3=A9 Lureau --- include/qapi/visitor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h index 1a1b620..b0e233d 100644 --- a/include/qapi/visitor.h +++ b/include/qapi/visitor.h @@ -63,8 +63,10 @@ * The @name parameter of visit_type_FOO() describes the relation * between this QAPI value and its parent container. When visiting * the root of a tree, @name is ignored; when visiting a member of an - * object, @name is the key associated with the value; and when - * visiting a member of a list, @name is NULL. + * object, @name is the key associated with the value; when visiting a + * member of a list, @name is NULL; and when visiting the member of an + * alternate, @name should equal the name used for visiting the + * alternate. * * The visit_type_FOO() functions expect a non-null @obj argument; * they allocate *@obj during input visits, leave it unchanged on --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318718822966.2441428487596; Tue, 9 May 2017 01:31:58 -0700 (PDT) Received: from localhost ([::1]:35763 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Yn-0005tF-2x for importer@patchew.org; Tue, 09 May 2017 04:31:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085T-3T for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007ZM-K5 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55758) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007Y1-Br for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 68B5B81240 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 34B255C7A8 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 832CB110CFE5; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 68B5B81240 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 68B5B81240 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:40 +0200 Message-Id: <1494317205-2211-24-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 09 May 2017 08:06:50 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 23/28] qobject-input-visitor: Catch misuse of end_struct vs. end_list X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Message-Id: <1493282486-28338-5-git-send-email-armbru@redhat.com> Reviewed-by: Marc-Andr=C3=A9 Lureau [More elaborate assertions for clarity] --- qapi/qobject-input-visitor.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c index 2530959..d0f0002 100644 --- a/qapi/qobject-input-visitor.c +++ b/qapi/qobject-input-visitor.c @@ -291,6 +291,15 @@ static void qobject_input_start_struct(Visitor *v, con= st char *name, void **obj, } } =20 +static void qobject_input_end_struct(Visitor *v, void **obj) +{ + QObjectInputVisitor *qiv =3D to_qiv(v); + StackObject *tos =3D QSLIST_FIRST(&qiv->stack); + + assert(qobject_type(tos->obj) =3D=3D QTYPE_QDICT && tos->h); + qobject_input_pop(v, obj); +} + =20 static void qobject_input_start_list(Visitor *v, const char *name, GenericList **list, size_t size, @@ -346,6 +355,14 @@ static void qobject_input_check_list(Visitor *v, Error= **errp) } } =20 +static void qobject_input_end_list(Visitor *v, void **obj) +{ + QObjectInputVisitor *qiv =3D to_qiv(v); + StackObject *tos =3D QSLIST_FIRST(&qiv->stack); + + assert(qobject_type(tos->obj) =3D=3D QTYPE_QLIST && !tos->h); + qobject_input_pop(v, obj); +} =20 static void qobject_input_start_alternate(Visitor *v, const char *name, GenericAlternate **obj, size_t s= ize, @@ -645,11 +662,11 @@ static QObjectInputVisitor *qobject_input_visitor_bas= e_new(QObject *obj) v->visitor.type =3D VISITOR_INPUT; v->visitor.start_struct =3D qobject_input_start_struct; v->visitor.check_struct =3D qobject_input_check_struct; - v->visitor.end_struct =3D qobject_input_pop; + v->visitor.end_struct =3D qobject_input_end_struct; v->visitor.start_list =3D qobject_input_start_list; v->visitor.next_list =3D qobject_input_next_list; v->visitor.check_list =3D qobject_input_check_list; - v->visitor.end_list =3D qobject_input_pop; + v->visitor.end_list =3D qobject_input_end_list; v->visitor.start_alternate =3D qobject_input_start_alternate; v->visitor.optional =3D qobject_input_optional; v->visitor.free =3D qobject_input_free; --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318334758706.7966513241937; Tue, 9 May 2017 01:25:34 -0700 (PDT) Received: from localhost ([::1]:35724 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Sb-0000BR-6S for importer@patchew.org; Tue, 09 May 2017 04:25:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ac-00086a-Rd for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AX-0007bg-T8 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55842) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AX-0007aj-Kk for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AE7747F6AC for ; Tue, 9 May 2017 08:06:52 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 394217E91C; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 86009110CFEE; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com AE7747F6AC Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com AE7747F6AC From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:41 +0200 Message-Id: <1494317205-2211-25-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 09 May 2017 08:06:52 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 24/28] qmp-shell: add persistent command history X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: John Snow Use the existing readline history function we are utilizing to provide persistent command history across instances of qmp-shell. This assists entering debug commands across sessions that may be interrupted by QEMU sessions terminating, where the qmp-shell has to be relaunched. Signed-off-by: John Snow Message-Id: <20170427223628.20893-1-jsnow@redhat.com> Reviewed-by: Stefan Hajnoczi Reviewed-by: Kashyap Chamarthy Tested-by: Kashyap Chamarthy Signed-off-by: Markus Armbruster --- scripts/qmp/qmp-shell | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index eccb88a..6ece6e7 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -70,6 +70,9 @@ import json import ast import readline import sys +import os +import errno +import atexit =20 class QMPCompleter(list): def complete(self, text, state): @@ -109,6 +112,8 @@ class QMPShell(qmp.QEMUMonitorProtocol): self._pretty =3D pretty self._transmode =3D False self._actions =3D list() + self._histfile =3D os.path.join(os.path.expanduser('~'), + '.qmp-shell_history') =20 def __get_address(self, arg): """ @@ -132,11 +137,27 @@ class QMPShell(qmp.QEMUMonitorProtocol): def __completer_setup(self): self._completer =3D QMPCompleter() self._fill_completion() + readline.set_history_length(1024) readline.set_completer(self._completer.complete) readline.parse_and_bind("tab: complete") # XXX: default delimiters conflict with some command names (eg. qu= ery-), # clearing everything as it doesn't seem to matter readline.set_completer_delims('') + try: + readline.read_history_file(self._histfile) + except Exception as e: + if isinstance(e, IOError) and e.errno =3D=3D errno.ENOENT: + # File not found. No problem. + pass + else: + print "Failed to read history '%s'; %s" % (self._histfile,= e) + atexit.register(self.__save_history) + + def __save_history(self): + try: + readline.write_history_file(self._histfile) + except Exception as e: + print "Failed to save history file '%s'; %s" % (self._histfile= , e) =20 def __parse_value(self, val): try: --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494317980485605.9616383208735; Tue, 9 May 2017 01:19:40 -0700 (PDT) Received: from localhost ([::1]:35684 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ms-0003B3-Bo for importer@patchew.org; Tue, 09 May 2017 04:19:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44132) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085o-Iv for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AX-0007bI-N5 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:57 -0400 Received: from mx1.redhat.com ([209.132.183.28]:6511) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AX-0007aY-Gp for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 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 8624D61D15 for ; Tue, 9 May 2017 08:06:52 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3A2BD78349; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 88E26110CFF7; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8624D61D15 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8624D61D15 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:42 +0200 Message-Id: <1494317205-2211-26-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.39]); Tue, 09 May 2017 08:06:52 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 25/28] qmp-shell: add -N option to skip negotiate X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau qemu-ga doesn't have negotiate phase. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170504125432.21653-2-marcandre.lureau@redhat.com> Reviewed-by: Eric Blake Signed-off-by: Markus Armbruster --- scripts/qmp/qmp-shell | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index 6ece6e7..b4d2dbd 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -277,8 +277,8 @@ class QMPShell(qmp.QEMUMonitorProtocol): self._print(resp) return True =20 - def connect(self): - self._greeting =3D qmp.QEMUMonitorProtocol.connect(self) + def connect(self, negotiate): + self._greeting =3D qmp.QEMUMonitorProtocol.connect(self, negotiate) self.__completer_setup() =20 def show_banner(self, msg=3D'Welcome to the QMP low-level shell!'): @@ -390,7 +390,7 @@ def die(msg): def fail_cmdline(option=3DNone): if option: sys.stderr.write('ERROR: bad command-line option \'%s\'\n' % optio= n) - sys.stderr.write('qemu-shell [ -v ] [ -p ] [ -H ] < UNIX socket path> = | < TCP address:port >\n') + sys.stderr.write('qemu-shell [ -v ] [ -p ] [ -H ] [ -N ] < UNIX socket= path> | < TCP address:port >\n') sys.exit(1) =20 def main(): @@ -399,6 +399,7 @@ def main(): hmp =3D False pretty =3D False verbose =3D False + negotiate =3D True =20 try: for arg in sys.argv[1:]: @@ -408,6 +409,8 @@ def main(): hmp =3D True elif arg =3D=3D "-p": pretty =3D True + elif arg =3D=3D "-N": + negotiate =3D False elif arg =3D=3D "-v": verbose =3D True else: @@ -425,7 +428,7 @@ def main(): die('bad port number in command-line') =20 try: - qemu.connect() + qemu.connect(negotiate) except qmp.QMPConnectError: die('Didn\'t get QMP greeting message') except qmp.QMPCapabilitiesError: --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318073959473.2957282537815; Tue, 9 May 2017 01:21:13 -0700 (PDT) Received: from localhost ([::1]:35695 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80OO-0004V6-A2 for importer@patchew.org; Tue, 09 May 2017 04:21:12 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44261) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Af-00089h-IH for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AX-0007as-8D for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40462) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AX-0007aC-2X for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 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 22D9D80C0A for ; Tue, 9 May 2017 08:06:52 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 39515881F8; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8BE75110CFFC; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 22D9D80C0A Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 22D9D80C0A From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:43 +0200 Message-Id: <1494317205-2211-27-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.26]); Tue, 09 May 2017 08:06:52 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 26/28] qmp-shell: Cope with query-commands error X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau qemu-ga doesn't implement it. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170504125432.21653-3-marcandre.lureau@redhat.com> Reviewed-by: Eric Blake [Commit message tweaked] Signed-off-by: Markus Armbruster --- scripts/qmp/qmp-shell | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index b4d2dbd..1182f82 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -131,7 +131,10 @@ class QMPShell(qmp.QEMUMonitorProtocol): return arg =20 def _fill_completion(self): - for cmd in self.cmd('query-commands')['return']: + cmds =3D self.cmd('query-commands') + if cmds.has_key('error'): + return + for cmd in cmds['return']: self._completer.append(cmd['name']) =20 def __completer_setup(self): --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1494318078533483.13607461954985; Tue, 9 May 2017 01:21:18 -0700 (PDT) Received: from localhost ([::1]:35696 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80OS-0004Y6-8j for importer@patchew.org; Tue, 09 May 2017 04:21:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ab-00085V-3q for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AV-0007Zr-Tj for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:56 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50406) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AV-0007YU-OS for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:51 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BEB58C059733 for ; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4F1B27EDA7; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8ECD5110CFB8; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com BEB58C059733 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com BEB58C059733 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:44 +0200 Message-Id: <1494317205-2211-28-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 09 May 2017 08:06:50 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 27/28] qmp-shell: don't show version greeting if unavailable X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau qemu-ga doesn't have greeting. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170504125432.21653-4-marcandre.lureau@redhat.com> Reviewed-by: Eric Blake Signed-off-by: Markus Armbruster --- scripts/qmp/qmp-shell | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index 1182f82..5986e37 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -286,6 +286,9 @@ class QMPShell(qmp.QEMUMonitorProtocol): =20 def show_banner(self, msg=3D'Welcome to the QMP low-level shell!'): print msg + if not self._greeting: + print 'Connected' + return version =3D self._greeting['QMP']['version']['qemu'] print 'Connected to QEMU %d.%d.%d\n' % (version['major'],version['= minor'],version['micro']) =20 --=20 2.7.4 From nobody Sat May 4 05:21:24 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149431821778076.89314950127005; Tue, 9 May 2017 01:23:37 -0700 (PDT) Received: from localhost ([::1]:35713 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Qi-0006og-EH for importer@patchew.org; Tue, 09 May 2017 04:23:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44182) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d80Ac-00086G-Fj for qemu-devel@nongnu.org; Tue, 09 May 2017 04:07:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d80AX-0007bT-P3 for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55840) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d80AX-0007af-Jb for qemu-devel@nongnu.org; Tue, 09 May 2017 04:06:53 -0400 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 A6F5E7F6A4 for ; Tue, 9 May 2017 08:06:52 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-149.ams2.redhat.com [10.36.116.149]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5325F171EB; Tue, 9 May 2017 08:06:50 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 91CB5110CFBB; Tue, 9 May 2017 10:06:45 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A6F5E7F6A4 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=armbru@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com A6F5E7F6A4 From: Markus Armbruster To: qemu-devel@nongnu.org Date: Tue, 9 May 2017 10:06:45 +0200 Message-Id: <1494317205-2211-29-git-send-email-armbru@redhat.com> In-Reply-To: <1494317205-2211-1-git-send-email-armbru@redhat.com> References: <1494317205-2211-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 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.25]); Tue, 09 May 2017 08:06:52 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v3 28/28] qmp-shell: improve help X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Marc-Andr=C3=A9 Lureau Describe the arguments & fix the tool name. Signed-off-by: Marc-Andr=C3=A9 Lureau Message-Id: <20170504125432.21653-5-marcandre.lureau@redhat.com> Reviewed-by: Eric Blake Signed-off-by: Markus Armbruster --- scripts/qmp/qmp-shell | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell index 5986e37..860ffb2 100755 --- a/scripts/qmp/qmp-shell +++ b/scripts/qmp/qmp-shell @@ -396,7 +396,11 @@ def die(msg): def fail_cmdline(option=3DNone): if option: sys.stderr.write('ERROR: bad command-line option \'%s\'\n' % optio= n) - sys.stderr.write('qemu-shell [ -v ] [ -p ] [ -H ] [ -N ] < UNIX socket= path> | < TCP address:port >\n') + sys.stderr.write('qmp-shell [ -v ] [ -p ] [ -H ] [ -N ] < UNIX socket = path> | < TCP address:port >\n') + sys.stderr.write(' -v Verbose (echo command sent and received)\= n') + sys.stderr.write(' -p Pretty-print JSON\n') + sys.stderr.write(' -H Use HMP interface\n') + sys.stderr.write(' -N Skip negotiate (for qemu-ga)\n') sys.exit(1) =20 def main(): --=20 2.7.4