From nobody Sun Feb 8 22:07:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1644512788; cv=pass; d=zohomail.com; s=zohoarc; b=lDSLyOmg0yD+B0FMw7CJjPOTSvlF/p1kI33GUWSmcCmjQ4x2d1P3jVGWqQbRInHHkryawrrz2tGmPx9b50pvQrrrLTMMwddbjXC8DI9vfpGyRaNhYBRk+tnxMb3oZy/TJ8+HF8wpxtLEiZuIKZIrnKNZwbnJYssEgkJftvHZ87E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644512788; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=aadJ4ExH3KQ+75/4/9k8ql2bl0KZ61ZerqL7j1feb2w=; b=RxsJ2L0YvaLz68Ki8J0/Ye2YYO38gH4nHfJPadn/+qG0OF9czp6VlbkStX0kN/1UCMt9gn3gX7QU05zLprbBHKPyh/fz90+sDK7V+39RdysJtV2Pxt3YEQlDuxnxTi7PTdjqTGVbXxSm7sLelIMApROjFcySe6vpnWD/zMVyqas= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644512788506898.7626850923725; Thu, 10 Feb 2022 09:06:28 -0800 (PST) Received: from localhost ([::1]:57546 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nICtn-00032H-DI for importer@patchew.org; Thu, 10 Feb 2022 12:06:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34434) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIATm-0005XV-9H for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:31:26 -0500 Received: from [2a01:111:f400:fe1e::72c] (port=41191 helo=EUR01-HE1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIATF-0005X3-U4 for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:30:56 -0500 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) by AM7PR08MB5413.eurprd08.prod.outlook.com (2603:10a6:20b:10a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 14:15:11 +0000 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714]) by AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 14:15:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S3rurBybYzkoKwHTbGU3+D1Bf3N4+1rlyX/et7zRfC0AZBVndQJy881/+waAagVgrcYhub7eOBCReR6PTINnMa26qR+L1t6qmOVsgYrXq7isqbbOyGHDVaPLB9XVRz4jZuQc9xCMBVTA181cqApmigS+OTGuuCqsL4Yfu58qYAhUVQRsJ5M8S71tNdU0Q09kEiI+eCBO6b0zCbVbHrbCWp6kehTXAcWNZ/pVXQ9bXfhDTn5vJJx6y2X7FJWhn+Kg3xvm7Q6Mp8Nr9bXfh4H8c/iznpLVf/IXr7JuVvbbKcHkeLMzF/xc5QKzPQNnC7LdmUf7aurMU0zRarSjBiB9HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aadJ4ExH3KQ+75/4/9k8ql2bl0KZ61ZerqL7j1feb2w=; b=CE8tiHRhAN0xN9BsdRm0x5UUlkjXkDVE3J9SKYpiz0iHIxh5CaIWKzwJo+jL6zICtD35CrNvAyhU29jNprj4IjNJVYamdNmbMDAancliNnPh/1KoZPgH7n8bTt5Khp1T4f/0M2HChKuOhh7alMI+lPCbeiff9XKaVIXMQd5fjNDQM4A12DrSY2cZGJMfYQx3nlXScorswIh9Pw8nNnc3KqpOf2n8KZLKE5XFROMCC/a/YQ16LEayXGZnYke0R+r1Dmg/bJGmI09nI4OHtGT5fr4gva5TjCo49YpuSpV1g5tvU0fKyqL/Z6yDNVnd2Jbz3uSyUikTTkizkzwRe2bZ3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aadJ4ExH3KQ+75/4/9k8ql2bl0KZ61ZerqL7j1feb2w=; b=Mf1gaMsx2Cm/sV69DlCK/DisGp57K7cnV0osZCJUj+4sej8eQEFsfVEOVeZYmR3D7x/lUETdNZg2rIgSNhZ6rM9/ESwFU+GvAUwFnuCJgd/mRcaz+PToeoLlHAtkPrAqV0CjaJiXdA0ieTbgo4/kK5ySVuv4+HWT+0AkibnehyM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Cc: bleal@redhat.com, wainersm@redhat.com, f4bug@amsat.org, crosa@redhat.com, eblake@redhat.com, armbru@redhat.com, kraxel@redhat.com, vsementsov@virtuozzo.com, berrange@redhat.com, marcandre.lureau@redhat.com Subject: [PATCH v4 1/3] ui/vnc: refactor arrays of addresses to SocketAddressList Date: Thu, 10 Feb 2022 15:14:55 +0100 Message-Id: <20220210141457.539582-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220210141457.539582-1-vsementsov@virtuozzo.com> References: <20220210141457.539582-1-vsementsov@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6PR05CA0036.eurprd05.prod.outlook.com (2603:10a6:20b:2e::49) To AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 68c5237d-18c4-4ed7-13ba-08d9ec9fbf1d X-MS-TrafficTypeDiagnostic: AM7PR08MB5413:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:454; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WOkqc3Yqi89MkFJzizTShp7n2NOvjdpV+4amD5J27fK30VorW4UwBoEgFimNkE/XxmxHunyQm8MY9++DQ2JYrWig1+9Y25ohlSUKkEm7K8/DH+nDZoX0SxR5aLvy+NfI/QCOQizUt23C0WrzThoupJJCFML3x85LbKtDdWUu8l9dwrqyk2bm0qlJHbwpZT4dEk779wjab8Z45M1dLZfWFJNU0ruie4NGlkWiA+HlqPh6j4/eJIjXfpxiEr9cGCJqC6xPy5R4gtfaiWK6xgbWc6C+Zn7mA6rxL5L4hCt6xhOgvYy7b2C+qmmx1lOB0sJAE4wnTF7jiMpevTBcKCevWjj6xcp17KlylPdHRqo+D39ogthu02dp+0U+KKFG1ffnhj99zuTN40jiK2Xb8c+Ua1ifhPoTUSAZxhwHdsN//rq0daTcjKoVbziwRtUtc+ctFYqkF3idtBYAb7Xx0LH56pR7hBrdj+XlPic80p5G3TJ8xaBojA+p/Yi9bs3KFMmS789AgAJ5VUoJPx2ekCTdJMJ5zMRX0yK6zgtEf7kqKmq9/V2R76dswWmw35m6ef9N8CGuk25GTX17jj24GOpZurl1SBAg93iBG63eKLG2beUgmMXTe60Q0ZfoxPo6j75vwP32byCSxUh5mrDLZe7TBNaLb5wd80A9MqnE/Q5zRAcz5yBKtM9d23w9ekdz0YbHOB82lqd17T5xpxbp9oQTCw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR08MB6737.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(26005)(186003)(52116002)(2616005)(2906002)(6506007)(38100700002)(316002)(86362001)(6916009)(38350700002)(66946007)(1076003)(66556008)(66476007)(4326008)(8676002)(5660300002)(8936002)(6486002)(6512007)(83380400001)(7416002)(6666004)(508600001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aXJ2YUdSS2R3c0h0U1J6YXUwNlFIbTliNS9pT0t3aTdEOXJGUlpkc3B0dW1V?= =?utf-8?B?ZUtDT292UlhwSjFJamdyRDFCb2NhTmlIM0t3OTR4ZDRKcXNMWDg4QzliNlpV?= =?utf-8?B?RGhVY24vUUJqNnVkcHpyUWRlTk9pTDZlN3pBTTFSM3ZDRmtBaG5uaUhscE9H?= =?utf-8?B?aEROODR3Y3MwTEsvaU1IK281SEdzbCtFVmYzQysxbmUxSlF3Z1dBR2Q4Rkgr?= =?utf-8?B?OXB5OVUwQzlKa1R0eEREY3dERVplazE5UHk5TnJjenF1Nnc4UzZkMXhucG9H?= =?utf-8?B?RnBRdFpMcm1VbXRVOVBITHhMUXh6TmVoemNJYjdtd1BZZ25CL1ZkYU9GMW42?= =?utf-8?B?NkpTQ1FzT3hwRlFob3VSaitWNXM0RGpGQnBqTlhzY0VlV0NVSE1IN1FodFUx?= =?utf-8?B?MnhSWXphalVPL2JkWDIvMGxoa3p4VzFFU3ZrUWdSQy9NVnI2MHljRS9BVkhP?= =?utf-8?B?OExNNjhOVzdwaEFlUXk2QWRJMjJzUmVOaTBzb1lDOXBZYmF0RUREL1JnZnI3?= =?utf-8?B?R2dlaW0wbTI5SGNXak1KQUpwMVE5VnRvMWtiWXVySlRUUjl0RmF2VnQxTjV6?= =?utf-8?B?TW9paXF1eEdVU3piWlAvS21UVnRpVW1ja1d4dlBRdHIwOCtlSEl0anZJa0s1?= =?utf-8?B?VHZGRXFvRGxWY2dlOE00TkVRM0M3R0tIV0UyeEhqZHVMQ3dORkJMSkNxdUtP?= =?utf-8?B?UStBL1lSUW5UYzl2WjQwVmc2Ti9PTVhSUWVUbkF2c2xHNis1MWY3cEZwSHQr?= =?utf-8?B?bTRrZGdLWnlqWmZPVEs5Q1lSNlkyTWVRaSttZ1ZoS3kzTWhrUkN1cW13ZDZ0?= =?utf-8?B?dFJRMWNva1d6b1EwUHdWVVNvSFNzZUxROWtyUVRSdFpFT0FJWkc0Vnp1Qy9K?= =?utf-8?B?V0M4bXQwQi9wRCtiRzh5b1pNY0dIQS9scFJHUmpjN0pDeHZEU21ycnlidTdZ?= =?utf-8?B?ZmY3QkNYczFTQThRbUV3L2swd1IvcVVqaiszRXlTZ29VVVRnSytaSGxDRXBv?= =?utf-8?B?QjVWNE92eTE0a0VXZlpCVkQrRFZ4NXBUZDlFYklnNWFPcnVoV2xrV0J6cjA5?= =?utf-8?B?bEVFYkhQb2dOcnNaR3hJMmtqRnRMMnZZalJnc2NsREF0MytMMlkzOXN1Y2Q5?= =?utf-8?B?WW81SlYzNkY1bENjN0dyVTlNaEF0UytOMzZQbzNFYTRIRkZIMDgxYkcxdjk1?= =?utf-8?B?LzRTS0xvZ1Z2dS9TOGNkRVRyUDZGWHVTNHgycVM4dGIvWDNlTEdERXp1K1Zv?= =?utf-8?B?ZzArRHRpR0gvaDBFbmxqRGpZOWtmcFA0YWw2b2w0SnZIcnhsRmRJM0FTZ1FI?= =?utf-8?B?UFF1NzVWcVk4bm5nL1pSbzQ5bkZvYmNobVBxa0lGcXZ5UDhRaEJkZkZkcTln?= =?utf-8?B?RWNyakx3cmtxNGoyYnJZR3M1MVdDcmtMQnlxRlNROXEwSitlWDBMRmdMcFY0?= =?utf-8?B?dFBQbUxCdGVxMGMxcXdFSE50L2QvYm00UjFXTnVWUkNVbWFLcUhVZUF6dC83?= =?utf-8?B?cHIrL3IyMDBNZHRueisvYjlDVGxUV2RMUXR3Sit4VkNaWlRHRFBTVmZpOUJx?= =?utf-8?B?ZnI0Q2tEdVpGKzQ2Wk5GSDRWVUxZSUdRUXUzc2x5SkpHN2FzTnBYaWYzeGk1?= =?utf-8?B?azZoQnZwaGw3aUhrcXVMRytZbGhZS1lWMUg4SXJlWTVCMC9UWTB1cENpUEJi?= =?utf-8?B?cjBUVE9OM0ZrWXRSckhoQVYzT2p1VHIzS2FzM1k5b1RBeE5CakkvclAvdDBm?= =?utf-8?B?UUcwUlE2TlUrVXpPU0p4WWtZelZwK0xJQUZIZUV5ODlxazNyYXE3dmZDMnNv?= =?utf-8?B?OUJERmlCMVA3Um1pTGNiejU3YlVTNWRkK0NzZVp1cjRkaFMwSHB4MUNRUEtF?= =?utf-8?B?NElFL2FjVnRyRE4za1FiT2FyL2V6LzJMNmdZdTdhQXpHYkVmam4vUSsxc1hW?= =?utf-8?B?N1lpUHVZQ1l2eVZ4aHFCVEJxMk1sZVAweVBUYXlkUnpDZTdpNDk4RlhaTWxz?= =?utf-8?B?ekNBQmdGdnJpazZ4TElUWldOQ1NPdEhueGdsTzlsR2ZMUGFhcHI3SmtyUEN6?= =?utf-8?B?V3ljRGlYU09CaG5QY0pMVldnSUR4Q2JkK29LUHY5VW9wdERTMzIwVHRhQWdR?= =?utf-8?B?UzNLREorRWxMWVZ0L3k3bFhnc0tMS0FTQkx1eVRPVEx6RjZUOGZpTkpyT0NJ?= =?utf-8?B?ZytQMEcxZURnTkl4b3dBUmY2REcrSnNXdUVMelNHa2JZTnNnZ3BqNlp1OC9H?= =?utf-8?B?T1dNY3IzWTF1M3RyWEs5cjJsMDJRPT0=?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68c5237d-18c4-4ed7-13ba-08d9ec9fbf1d X-MS-Exchange-CrossTenant-AuthSource: AM9PR08MB6737.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 14:15:10.8385 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +etmNaEF6AIeMsHbLGyecB6w766ScPjft2mhQjBjM+KZaGwc/wYFvS7fqLhqWloFKWahxP+HeLRc+kQiXygUtAyM91qzOVW+923Z3i3cwg4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5413 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:111:f400:fe1e::72c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe1e::72c; envelope-from=vsementsov@virtuozzo.com; helo=EUR01-HE1-obe.outbound.protection.outlook.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1644512791029100001 Let's use SocketAddressList instead of dynamic arrays. Benefits: - Automatic cleanup: don't need specific freeing function and drop some gotos. - Less indirection: no triple asterix anymore! - Prepare for the following commit, which will reuse new interface of vnc_display_listen(). Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 --- ui/vnc.c | 129 ++++++++++++++++++++++--------------------------------- 1 file changed, 51 insertions(+), 78 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index 3ccd33dedc..fa0fb736d3 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3812,30 +3812,19 @@ static int vnc_display_get_address(const char *addr= str, return ret; } =20 -static void vnc_free_addresses(SocketAddress ***retsaddr, - size_t *retnsaddr) -{ - size_t i; - - for (i =3D 0; i < *retnsaddr; i++) { - qapi_free_SocketAddress((*retsaddr)[i]); - } - g_free(*retsaddr); - - *retsaddr =3D NULL; - *retnsaddr =3D 0; -} - static int vnc_display_get_addresses(QemuOpts *opts, bool reverse, - SocketAddress ***retsaddr, - size_t *retnsaddr, - SocketAddress ***retwsaddr, - size_t *retnwsaddr, + SocketAddressList **saddr_list_ret, + SocketAddressList **wsaddr_list_ret, Error **errp) { SocketAddress *saddr =3D NULL; SocketAddress *wsaddr =3D NULL; + g_autoptr(SocketAddressList) saddr_list =3D NULL; + SocketAddressList **saddr_tail =3D &saddr_list; + SocketAddress *single_saddr =3D NULL; + g_autoptr(SocketAddressList) wsaddr_list =3D NULL; + SocketAddressList **wsaddr_tail =3D &wsaddr_list; QemuOptsIter addriter; const char *addr; int to =3D qemu_opt_get_number(opts, "to", 0); @@ -3844,23 +3833,16 @@ static int vnc_display_get_addresses(QemuOpts *opts, bool ipv4 =3D qemu_opt_get_bool(opts, "ipv4", false); bool ipv6 =3D qemu_opt_get_bool(opts, "ipv6", false); int displaynum =3D -1; - int ret =3D -1; - - *retsaddr =3D NULL; - *retnsaddr =3D 0; - *retwsaddr =3D NULL; - *retnwsaddr =3D 0; =20 addr =3D qemu_opt_get(opts, "vnc"); if (addr =3D=3D NULL || g_str_equal(addr, "none")) { - ret =3D 0; - goto cleanup; + return 0; } if (qemu_opt_get(opts, "websocket") && !qcrypto_hash_supports(QCRYPTO_HASH_ALG_SHA1)) { error_setg(errp, "SHA1 hash support is required for websockets"); - goto cleanup; + return -1; } =20 qemu_opt_iter_init(&addriter, opts, "vnc"); @@ -3871,7 +3853,7 @@ static int vnc_display_get_addresses(QemuOpts *opts, ipv4, ipv6, &saddr, errp); if (rv < 0) { - goto cleanup; + return -1; } /* Historical compat - first listen address can be used * to set the default websocket port @@ -3879,13 +3861,16 @@ 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)[(*retnsaddr)++] =3D saddr; + QAPI_LIST_APPEND(saddr_tail, saddr); } =20 - /* If we had multiple primary displays, we don't do defaults - * for websocket, and require explicit config instead. */ - if (*retnsaddr > 1) { + if (saddr_list && !saddr_list->next) { + single_saddr =3D saddr_list->value; + } else { + /* + * If we had multiple primary displays, we don't do defaults + * for websocket, and require explicit config instead. + */ displaynum =3D -1; } =20 @@ -3895,57 +3880,50 @@ static int vnc_display_get_addresses(QemuOpts *opts, has_ipv4, has_ipv6, ipv4, ipv6, &wsaddr, errp) < 0) { - goto cleanup; + return -1; } =20 /* Historical compat - if only a single listen address was * provided, then this is used to set the default listen * address for websocket too */ - if (*retnsaddr =3D=3D 1 && - (*retsaddr)[0]->type =3D=3D SOCKET_ADDRESS_TYPE_INET && + if (single_saddr && + single_saddr->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_str_equal(single_saddr->u.inet.host, "")) { g_free(wsaddr->u.inet.host); - wsaddr->u.inet.host =3D g_strdup((*retsaddr)[0]->u.inet.host); + wsaddr->u.inet.host =3D g_strdup(single_saddr->u.inet.host); } =20 - *retwsaddr =3D g_renew(SocketAddress *, *retwsaddr, *retnwsaddr + = 1); - (*retwsaddr)[(*retnwsaddr)++] =3D wsaddr; + QAPI_LIST_APPEND(wsaddr_tail, wsaddr); } =20 - ret =3D 0; - cleanup: - if (ret < 0) { - vnc_free_addresses(retsaddr, retnsaddr); - vnc_free_addresses(retwsaddr, retnwsaddr); - } - return ret; + *saddr_list_ret =3D g_steal_pointer(&saddr_list); + *wsaddr_list_ret =3D g_steal_pointer(&wsaddr_list); + return 0; } =20 static int vnc_display_connect(VncDisplay *vd, - SocketAddress **saddr, - size_t nsaddr, - SocketAddress **wsaddr, - size_t nwsaddr, + SocketAddressList *saddr_list, + SocketAddressList *wsaddr_list, Error **errp) { /* connect to viewer */ QIOChannelSocket *sioc =3D NULL; - if (nwsaddr !=3D 0) { + if (wsaddr_list) { error_setg(errp, "Cannot use websockets in reverse mode"); return -1; } - if (nsaddr !=3D 1) { + if (!saddr_list || saddr_list->next) { error_setg(errp, "Expected a single address in reverse mode"); return -1; } /* TODO SOCKET_ADDRESS_TYPE_FD when fd has AF_UNIX */ - vd->is_unix =3D saddr[0]->type =3D=3D SOCKET_ADDRESS_TYPE_UNIX; + vd->is_unix =3D saddr_list->value->type =3D=3D SOCKET_ADDRESS_TYPE_UNI= X; 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) { + if (qio_channel_socket_connect_sync(sioc, saddr_list->value, errp) < 0= ) { object_unref(OBJECT(sioc)); return -1; } @@ -3956,20 +3934,18 @@ static int vnc_display_connect(VncDisplay *vd, =20 =20 static int vnc_display_listen(VncDisplay *vd, - SocketAddress **saddr, - size_t nsaddr, - SocketAddress **wsaddr, - size_t nwsaddr, + SocketAddressList *saddr_list, + SocketAddressList *wsaddr_list, Error **errp) { - size_t i; + SocketAddressList *el; =20 - if (nsaddr) { + if (saddr_list) { vd->listener =3D qio_net_listener_new(); qio_net_listener_set_name(vd->listener, "vnc-listen"); - for (i =3D 0; i < nsaddr; i++) { + for (el =3D saddr_list; el; el =3D el->next) { if (qio_net_listener_open_sync(vd->listener, - saddr[i], 1, + el->value, 1, errp) < 0) { return -1; } @@ -3979,12 +3955,12 @@ static int vnc_display_listen(VncDisplay *vd, vnc_listen_io, vd, NULL); } =20 - if (nwsaddr) { + if (wsaddr_list) { vd->wslistener =3D qio_net_listener_new(); qio_net_listener_set_name(vd->wslistener, "vnc-ws-listen"); - for (i =3D 0; i < nwsaddr; i++) { + for (el =3D wsaddr_list; el; el =3D el->next) { if (qio_net_listener_open_sync(vd->wslistener, - wsaddr[i], 1, + el->value, 1, errp) < 0) { return -1; } @@ -4002,8 +3978,8 @@ 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; - size_t nsaddr, nwsaddr; + g_autoptr(SocketAddressList) saddr_list =3D NULL; + g_autoptr(SocketAddressList) wsaddr_list =3D NULL; const char *share, *device_id; QemuConsole *con; bool password =3D false; @@ -4028,8 +4004,8 @@ void vnc_display_open(const char *id, Error **errp) } =20 reverse =3D qemu_opt_get_bool(opts, "reverse", false); - if (vnc_display_get_addresses(opts, reverse, &saddr, &nsaddr, - &wsaddr, &nwsaddr, errp) < 0) { + if (vnc_display_get_addresses(opts, reverse, &saddr_list, &wsaddr_list, + errp) < 0) { goto fail; } =20 @@ -4211,16 +4187,16 @@ void vnc_display_open(const char *id, Error **errp) } qkbd_state_set_delay(vd->kbd, key_delay_ms); =20 - if (saddr =3D=3D NULL) { - goto cleanup; + if (saddr_list =3D=3D NULL) { + return; } =20 if (reverse) { - if (vnc_display_connect(vd, saddr, nsaddr, wsaddr, nwsaddr, errp) = < 0) { + if (vnc_display_connect(vd, saddr_list, wsaddr_list, errp) < 0) { goto fail; } } else { - if (vnc_display_listen(vd, saddr, nsaddr, wsaddr, nwsaddr, errp) <= 0) { + if (vnc_display_listen(vd, saddr_list, wsaddr_list, errp) < 0) { goto fail; } } @@ -4229,14 +4205,11 @@ void vnc_display_open(const char *id, Error **errp) vnc_display_print_local_addr(vd); } =20 - cleanup: - vnc_free_addresses(&saddr, &nsaddr); - vnc_free_addresses(&wsaddr, &nwsaddr); + /* Success */ return; =20 fail: vnc_display_close(vd); - goto cleanup; } =20 void vnc_display_add_client(const char *id, int csock, bool skipauth) --=20 2.31.1 From nobody Sun Feb 8 22:07:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1644510753; cv=pass; d=zohomail.com; s=zohoarc; b=AzJFTMAO7bqq9W+Vilq4hPTZke4Fu8818We0UmZ9GPvY3cAPK4B6Js6MQBWK+MKIYOGSP48Opcic8EM09EDDYT4d7sdHrCkO+qf2f8UnVPzFvDVXmLO+qufTJySYTGNoZNeLY+/Eifyg6U8uyPSwhX8gE1pv9cXNMk0NhQyOpj4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644510753; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d9qLf2HmZWferDuV6qhpZKzALdt2LF+VsCTyvCRhCQE=; b=E10lrkA7fnKxXOMww6RfgDkA1O/dvPnFjDa9sWSPL3x8HymahUvkudCMDm1tDlBvRIv6DZlBvarXowFP9uQsptzGE3YS+5P/bPPbS+gRHoO/iSP6wLe3YOjkk6MRidCvepHjycjuqp0jlU9TNQTPsiQAcrwiSgEIUbwzZty+/3A= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644510753306369.39990799244504; Thu, 10 Feb 2022 08:32:33 -0800 (PST) Received: from localhost ([::1]:35804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nICMy-0001WO-0s for importer@patchew.org; Thu, 10 Feb 2022 11:32:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39370) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIAjn-0001EY-KP for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:47:59 -0500 Received: from [2a01:111:f400:fe0c::702] (port=44267 helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIAjl-00038U-JN for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:47:59 -0500 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) by AM7PR08MB5413.eurprd08.prod.outlook.com (2603:10a6:20b:10a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 14:15:12 +0000 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714]) by AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 14:15:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UwzxvabF9aEv0FuusY7eT5S7vyHYMR8mHsrYrnvwxSLCa6UdKAilP586+eV44OGuhVfCsgH35vRJjVgpkEVEylfZ/In42ZeUuFc9Ud6ouOyZhB/GW1xnHySd7kpnUw+YDW1k8ADkWQpHHsZXOC8MVWHVlP6O7Bx1M9XUow2Mpkrxu7SxTngwJF6dBwvshEf7EHH70dXqMaxrxqmSMamGgFsPCXcd/7TVMoQexkR6ew7SM6UxXWddfzzLjR4LP6j9BYDhvEAKMF8mXtopX0qXASaW8pilyHnft6xPKGaW84NHQk/qDUACbrmF82Hc99LMkbAr1Kd2wLUOXLZvES9mug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=d9qLf2HmZWferDuV6qhpZKzALdt2LF+VsCTyvCRhCQE=; b=MCuwrlaAqU5vGpUGMxJzm9kv1zXgM9uQIWpxkWMOQv+nWl2tRYHFn4NAp+MplTY/KPQj6JviMQKE1TLMlUEbQj7qmS2gbdVzWApFkXPaiL9LYCv7Xpy7Y13YdYr0P5Ywb7KuWYabgRhZomvGKxEsmJ20Ygj1dl5Ev8Y70uXskM623v0cpBYC/MbtE5n52zGGPJNrVQfkMH+EdFgF+7oZ5XFhO5W6k5prOTSqDiBw2UKaBJCXQWM0+IQkc532SSzDRPSaPUK8pGM7TQd/XgkFgq/EtLWob86fZon8asH9H7zLhhibEwQpHvDiWDMAdbLXSBA7TRvEW0WTrbS52wW1Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d9qLf2HmZWferDuV6qhpZKzALdt2LF+VsCTyvCRhCQE=; b=OJo6sY2O9pN323Jgrpb/Gg2tUUJCSfzoeK7FrOszmiVvVK+eLciLeirI5iSjwPhiOEOcHQHZIxdVUCZznb8mcYPtesbYY4VDIWJFFxSsHA5n0hSEzDF8rIP7ev5h8xO9t0onMePVU/WlXPEvGALvNmKOUkvMFfrQRoQnBA26BVc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Cc: bleal@redhat.com, wainersm@redhat.com, f4bug@amsat.org, crosa@redhat.com, eblake@redhat.com, armbru@redhat.com, kraxel@redhat.com, vsementsov@virtuozzo.com, berrange@redhat.com, marcandre.lureau@redhat.com Subject: [PATCH v4 2/3] qapi/ui: display-update: add possibility to change listen address Date: Thu, 10 Feb 2022 15:14:56 +0100 Message-Id: <20220210141457.539582-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220210141457.539582-1-vsementsov@virtuozzo.com> References: <20220210141457.539582-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6PR05CA0036.eurprd05.prod.outlook.com (2603:10a6:20b:2e::49) To AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c27e64c-3eee-4376-8788-08d9ec9fbfec X-MS-TrafficTypeDiagnostic: AM7PR08MB5413:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0bOVVJPm1tIo4hSCdSu+HkNQ5ejPUdJq6FrjdHUty9xVwPvH0coOwvsD82tUTlew37nRtTIsGnekhZG0+mUti7/SdKcrSoiIf6ndsu4pbDNr9e5G1EsE9XevyCMkH7pSRcOYZ3ypZk46mM8bp4/k9I5DeBqrBqXxkIfZMdSDuxjy9hbfFNfGA+j6ooj/PA3SYHBdHTh4wVG7Nz+vfytY5wZ+gPfNJZxS5FwUePMMrKAVj1Gv7kRQvSpjW3f8PcWkN0Vv9Ei2qXHBKtggEI9wzc9DnebQxMACajxiTe+4pEQWdd2/Kkig0hNJ8PUBVC+QiGDdmJGtSeD1Jq9CL+DtOsqcuGjLXKbOfj6NogfNd4rKEnEOtuSycgHq3qPNfPhn+tb3NqN9h48+ZIt9iWFovYF3pSUKzSIjCixL7oP5iypM9VfqD/zCPAt7aYb3dPfzEMO/MwDzsVo+EMp/2oE48sa3bu6zrgWefmIzjU0+O+sUpDPyLAYIMLrIpHTlghll4SyiHyCSm0eY4lGCIj2UwqKOO+z7m7Zc2jdpfSVi2VMFoUkR6MpoHmxYLRo5/nVJ8yi2khlJyJ9UnMOo2tiGm9hE1htL5RVgssDI90lH3ZLF6Zi8UIOsb+YTPVwS2LGBHQZpdxzwYNtdLmlgkIlwMK1hDq3HMLCIsNWqPu7yk59WFjHLSK+PEHaTrdPkrzOL9ByDF/zDrL2o4O/FZKxXQg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR08MB6737.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(26005)(186003)(52116002)(2616005)(15650500001)(2906002)(6506007)(38100700002)(316002)(86362001)(6916009)(38350700002)(66946007)(1076003)(66556008)(66476007)(4326008)(8676002)(5660300002)(8936002)(6486002)(6512007)(83380400001)(7416002)(6666004)(508600001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w4HBc6q6IYyU1A4Ig2dtTQ3FdB7CtaaG+xVzr+l15tE7VWWcVpmMfC+ts2Yc?= =?us-ascii?Q?6s53bzz/CXKErhtSP/aM2lKSpHdLEz+AXNkxtogkT7y1Q5C4o15OjjstIBz4?= =?us-ascii?Q?zO2zAOPbLauzPcHAKt4MzGNBOaBTMj7pjSNPtu3FZVcgPoLiDjj+AOgt4+0y?= =?us-ascii?Q?uOzkoZbelhjJeGx9QGdGnufkvUzwejlznxbRBq6GD0eaj6yOyu+CHAtnxmnj?= =?us-ascii?Q?zH2oP1M9LLYuakEE90EjRpbDAVb/sl7NWvQ/BEs6sptjnfBbHma/rNHoOnnE?= =?us-ascii?Q?kBi9msC3U2iDYLnHhGkAwcgaf2x0LBupT4xTUTTi8RqwG/DFdkagGKk/uPFH?= =?us-ascii?Q?mpchihKqnwo1FFDe3ac9RffFvcdixeTlUnYMopbW6aIIJrfgjDqxJPVza/XB?= =?us-ascii?Q?YexULOOWcpMSo+BndYwwkIM2imclrZ1JjD+5ULlVtABtdbhdgtKfhiaDm6uh?= =?us-ascii?Q?MZTEHnmj3xUayj9Cpw6UDmUaCCFflWJVMMOuhY+B47lWGOCvwMQaagZo02/Z?= =?us-ascii?Q?QgLTSd/MxuLCAM+84O349hHgtt31iF7KU9wAITy4uCWfOf1QQSg2JLAgJ1rf?= =?us-ascii?Q?51jwsDpqHihB3y6p48oZ4USKxNKuiBdsqDOlA2Aj92HyMhL0hmR/FfdbJYzL?= =?us-ascii?Q?5dxGyv0i594LyujoczAO/+XL8yojRm04joz5pSYKZ+Woi3LHP7VfVImPt0sN?= =?us-ascii?Q?Ol5JIEmNsr2g92kECfFQqOHScSkq9cw7O13KlXyK9/VSqQ3fxLFDEaJjxPuA?= =?us-ascii?Q?WGdG1WrdqBUkt1jC9hUKu2F8UnwKJ4rKGhH47CUZcXTKDLmc1uB9K1tYROOS?= =?us-ascii?Q?EkGRApjall5Akk7xyvDxdvdtQzQCB3TMr9M2ALYJ7iJlIKGO3H4Btkfbj0V/?= =?us-ascii?Q?F8HyQxqgY6w1i+rjyTEzxAaVrmLma/wvteYbJZHtgCf065rEu/ngg4FuuTds?= =?us-ascii?Q?Y1FAC7AZQcmOZSsb516D48pSj2Zi4FTwg+pYgHgh5bAE/mGg6q5gEtNMNysO?= =?us-ascii?Q?nPmh+NVLAu6pXQJeh/7WxC9Jbkdh4jiUgS5vOmFlfUZ4F4S4xsJOGT5cP59X?= =?us-ascii?Q?YYCQ+PjZahHUh/vZ5Y0ueruftrRAIMMg+svQqRrDIkmDGmQ6Wedm6HG+mE9v?= =?us-ascii?Q?/fHShyaYp28vnbPhrwEmIAldDAiaMct8eOBzOlpT5DFq3RlgLAjtGeXFaY2h?= =?us-ascii?Q?a+qZH4wIDqpZNVRMWeUqOvBog1FnXh1/azIS1z+p4Wgqu8aWCwq9el5GIwYU?= =?us-ascii?Q?7n6OY6J8a4FA5ZcvyujdSMg84pJiD2RNF+vOFvKreoovR0yiER1epnUHaji4?= =?us-ascii?Q?5FUJIlrVYNPvoLjFfkIhbmDwoomRdI6HCI/OmYjtvjqXN/aSlO/bdtA5e/ao?= =?us-ascii?Q?rY/gc1ZnG4Uk5gq0XjDIV6OvrE9w8ehtd7/VzRL27ECCan+/8gASuXUtJCSP?= =?us-ascii?Q?y3vtyOFJEVFY/2s+kmvnq7QAQ1T8Qx0waPGa75vZD7rATXwAf0LtKewLBQrS?= =?us-ascii?Q?BXBHOvySjevAG19+YhKz/BYbEKUIjHUYtnVTg583iOCWLi5Sh+p0dBMf+3vF?= =?us-ascii?Q?wIMGTZpeeRw3aTkFhbzbcH5dg7bdCcnJc4lL5jvwz+dIkZBzFyrmrB0+jToO?= =?us-ascii?Q?eALn4Avupknbc/ODV2W3QgEzSCdZaSBsZdu2Sy8OWlDrwaPpeGt7arjer5hB?= =?us-ascii?Q?4p/aJA=3D=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c27e64c-3eee-4376-8788-08d9ec9fbfec X-MS-Exchange-CrossTenant-AuthSource: AM9PR08MB6737.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 14:15:11.6664 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Jcb5RbNPbeyeCIxIKFNAx1ZycEWiH1Snu2thOFunTCFxL3PF/AIhvPni5gWZU4Bi6dA95mLSIfSb25xk2+Bi419OJRlNF/XSGsK+MTt8ayM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5413 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:111:f400:fe0c::702 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0c::702; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1644510758682100001 Content-Type: text/plain; charset="utf-8" Add possibility to change addresses where VNC server listens for new connections. Prior to 6.0 this functionality was available through 'change' qmp command which was deleted. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- docs/about/removed-features.rst | 3 +- qapi/ui.json | 65 +++++++++++++++++++++++++++++++++ include/ui/console.h | 1 + monitor/qmp-cmds.c | 15 ++++++++ ui/vnc.c | 23 ++++++++++++ 5 files changed, 106 insertions(+), 1 deletion(-) diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.= rst index 4c4da20d0f..63aba60873 100644 --- a/docs/about/removed-features.rst +++ b/docs/about/removed-features.rst @@ -355,7 +355,8 @@ documentation of ``query-hotpluggable-cpus`` for additi= onal details. ``change`` (removed in 6.0) ''''''''''''''''''''''''''' =20 -Use ``blockdev-change-medium`` or ``change-vnc-password`` instead. +Use ``blockdev-change-medium`` or ``change-vnc-password`` or +``display-update`` instead. =20 ``query-events`` (removed in 6.0) ''''''''''''''''''''''''''''''''' diff --git a/qapi/ui.json b/qapi/ui.json index 9354f4c467..a0851eeefa 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -1334,3 +1334,68 @@ { 'command': 'display-reload', 'data': 'DisplayReloadOptions', 'boxed' : true } + +## +# @DisplayUpdateType: +# +# Available DisplayUpdate types. +# +# @vnc: VNC display +# +# Since: 7.0 +# +## +{ 'enum': 'DisplayUpdateType', + 'data': ['vnc'] } + +## +# @DisplayUpdateOptionsVNC: +# +# Specify the VNC reload options. +# +# @addresses: If specified, change set of addresses +# to listen for connections. Addresses configured +# for websockets are not touched. +# +# Since: 7.0 +# +## +{ 'struct': 'DisplayUpdateOptionsVNC', + 'data': { '*addresses': ['SocketAddress'] } } + +## +# @DisplayUpdateOptions: +# +# Options of the display configuration reload. +# +# @type: Specify the display type. +# +# Since: 7.0 +# +## +{ 'union': 'DisplayUpdateOptions', + 'base': {'type': 'DisplayUpdateType'}, + 'discriminator': 'type', + 'data': { 'vnc': 'DisplayUpdateOptionsVNC' } } + +## +# @display-update: +# +# Update display configuration. +# +# Returns: Nothing on success. +# +# Since: 7.0 +# +# Example: +# +# -> { "execute": "display-reload", +# "arguments": { "type": "vnc", "addresses": +# [ { "type": "inet", "host": "0.0.0.0", +# "port": "5901" } ] } } +# <- { "return": {} } +# +## +{ 'command': 'display-update', + 'data': 'DisplayUpdateOptions', + 'boxed' : true } diff --git a/include/ui/console.h b/include/ui/console.h index f590819880..45f2ed4e2c 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -513,6 +513,7 @@ int vnc_display_pw_expire(const char *id, time_t expire= s); void vnc_parse(const char *str); int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp); bool vnc_display_reload_certs(const char *id, Error **errp); +bool vnc_display_update(DisplayUpdateOptionsVNC *arg, Error **errp); =20 /* input.c */ int index_from_key(const char *key, size_t key_length); diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index db4d186448..246c8c1202 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -368,6 +368,21 @@ void qmp_display_reload(DisplayReloadOptions *arg, Err= or **errp) } } =20 +void qmp_display_update(DisplayUpdateOptions *arg, Error **errp) +{ + switch (arg->type) { + case DISPLAY_UPDATE_TYPE_VNC: +#ifdef CONFIG_VNC + vnc_display_update(&arg->u.vnc, errp); +#else + error_setg(errp, "vnc is invalid, missing 'CONFIG_VNC'"); +#endif + break; + default: + abort(); + } +} + static int qmp_x_query_rdma_foreach(Object *obj, void *opaque) { RdmaProvider *rdma; diff --git a/ui/vnc.c b/ui/vnc.c index fa0fb736d3..c57146d9f8 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3973,6 +3973,29 @@ static int vnc_display_listen(VncDisplay *vd, return 0; } =20 +bool vnc_display_update(DisplayUpdateOptionsVNC *arg, Error **errp) +{ + VncDisplay *vd =3D vnc_display_find(NULL); + + if (!vd) { + error_setg(errp, "Can not find vnc display"); + return false; + } + + if (arg->has_addresses) { + if (vd->listener) { + qio_net_listener_disconnect(vd->listener); + object_unref(OBJECT(vd->listener)); + vd->listener =3D NULL; + } + + if (vnc_display_listen(vd, arg->addresses, NULL, errp) < 0) { + return false; + } + } + + return true; +} =20 void vnc_display_open(const char *id, Error **errp) { --=20 2.31.1 From nobody Sun Feb 8 22:07:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1644513557; cv=pass; d=zohomail.com; s=zohoarc; b=DnixF7QzeIfGLr8vVRDY0L+keQZWvXzDWXsSSVK0XK7qCamlm6DZ7indqW0EP14LrCBO08LG7dDrpZSS9vXiyQR2yneFYHrcY8OZgCshIg5BxDnyy7jNXbq3LQnZGPNSGW5hQcTYwXdIFWjNfVRhF7dSxYSEmYKTQhu3rYhJ9R0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1644513557; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=w9MWv8VsixDzIlWBcFWId4t9t43WSQXY3R+K47DAjSQ=; b=PFSMAof6yPnzFC0/fvKXPxqVuUG4j2WZHW4H08r8Az/BahQAf59z0KYKS1gbeYs6AWRFBpPb1Y9dWYYVjUrruu7Jv2QnWbYaNQDuSS0uBkO4vNKLTX40IWCy2WEZ25BNX22YnbZkiRdmXq+XGrRVVOP5oDbqE7Oycf/sgebksQ4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1644513557809497.66775744014035; Thu, 10 Feb 2022 09:19:17 -0800 (PST) Received: from localhost ([::1]:50204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nID6C-0001E9-TC for importer@patchew.org; Thu, 10 Feb 2022 12:19:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34576) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIATq-0005gZ-7t for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:31:30 -0500 Received: from [2a01:111:f400:fe0e::713] (port=59205 helo=EUR04-VI1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nIATl-0005YP-Uj for qemu-devel@nongnu.org; Thu, 10 Feb 2022 09:31:29 -0500 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) by AM7PR08MB5413.eurprd08.prod.outlook.com (2603:10a6:20b:10a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11; Thu, 10 Feb 2022 14:15:13 +0000 Received: from AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714]) by AM9PR08MB6737.eurprd08.prod.outlook.com ([fe80::49c:67e9:3e24:8714%4]) with mapi id 15.20.4975.011; Thu, 10 Feb 2022 14:15:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e3oqBuBhBosEQ8FhdmZWTk9FQsH/zIHi2MQZ674a5A5QBOdL5c04KMICJmbf8bFsYTOoMDUhL3najkAoW/qXwnPlGhlbGkO2CblEJAY2JFkBQsP/duCioTe68iUxi7UyJt5yRyrzpLBbAWWorNOi0VxH+kjTK+doKqk3GPdmTbX/6idDWWwzA7saDjYCd67xrMNfg3C6P8Z2t+QqHo8rHM3iyeh5C+O3/VgiviQ9UUSjKYoXKhUYauB3g3hiFeNKpF63jcue+93swrii6WgB2hz4g3QMB7e3z08KY7F33d22JB0i/2K73c9eGmvjNKo9ED8zchB9HnBkcTThOylAPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=w9MWv8VsixDzIlWBcFWId4t9t43WSQXY3R+K47DAjSQ=; b=I3WKf5sPBXGCGbIe3VwErp/F8fd6qSuUs8TlGKUu3Hc4/DtQYSqI+khpsx5Zawb3l+Zu4zbt/yOR/9tZttSzyN531YsfBgyHhhhBeeXBnoDTu+nWfzDtkgoQTCr6X9HMLn/LLadchmS0DN0Ci5mkEHh20YdPs+tZHNK1v8sIP8dfMQexBanYl+UDseUwYQisQ77yVF+S2C2W1GUjynPWIlmttmbPyczAZ8IKl+e/8TgIOqhM7miwKS0E2EVmfUQC8r19np87oVU3wFXX6tTQuHW1ycuRh7sM5wbVY/V+Q2/YXivsF6RWlRLgLliE4/2ESZ1YbKzmNH3J5i3zyvGKWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w9MWv8VsixDzIlWBcFWId4t9t43WSQXY3R+K47DAjSQ=; b=EOAks1Zfl5nISzwpar5ea4xYKegDpA2E6rACCtgzwPvtr8/DxorASBnPXrM7tUPRX9h3RJ3W4O01Pmu/MV1pAAfccbLLp6F8zy/KZYkjAbbC2p6Li3b3It4ikGzcdLfJWK0VKvCXNCVR0gDy7yyEFZhijy/LY0EYVRTblzjnxHY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org Cc: bleal@redhat.com, wainersm@redhat.com, f4bug@amsat.org, crosa@redhat.com, eblake@redhat.com, armbru@redhat.com, kraxel@redhat.com, vsementsov@virtuozzo.com, berrange@redhat.com, marcandre.lureau@redhat.com Subject: [PATCH v4 3/3] avocado/vnc: add test_change_listen Date: Thu, 10 Feb 2022 15:14:57 +0100 Message-Id: <20220210141457.539582-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220210141457.539582-1-vsementsov@virtuozzo.com> References: <20220210141457.539582-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6PR05CA0036.eurprd05.prod.outlook.com (2603:10a6:20b:2e::49) To AM9PR08MB6737.eurprd08.prod.outlook.com (2603:10a6:20b:304::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c775fec1-323d-4a78-6458-08d9ec9fc093 X-MS-TrafficTypeDiagnostic: AM7PR08MB5413:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8dQ1cdB/9sietSPMmiZmyFa41lV2HyjnplrJKWRYzv2yUgh3Ec6u1ZOgo6JqpdME3agYCTPjFfQlscPd5c/tNBxTpMbIAiIuTJqbLFqbRmTNoFI4o6p/99gAhCqoPmaWAvH+iPtcRXiOH/LIWkGz+jKHJclQGhg/1O1m/CrcwakSgH5OwPNLmKiwNCw5okQw1BU2kGJpGv2iXtd+yaVR8zKoCE4uJh7wv5feT/hXuk0pmSio2NRpC7dXNg9jlqGepnrVqsdU/tOSsBc9FyEXf7bFtMnu+OyrKX+epPWj0Bu/8MbB3BhVmkU0ali2isutrlGaMszzSsnGmRg76x2P4ucmTNfOEBFvVfh+PnQS/EgmtXxlhgzPgW6dLmiFekXB+xPxrUPXsWlOzuDzV23wJWVeppfduUjx7BfvsjWkIuUoBF6P8XXXGeXpBuHlTvUmKLCemRA4AdNTPKJEgCVN6ON0R18bXXWRzal+mdYs4mlP8/6ctJ9oW8+C7UBlvG03el7wwbVLwCYbuh72uj6eNRvMy7jsUHt2iscAvUDRc0DX4T1V62dM2LfCfEQK/PsY6vDz3vZ85k9aSGnNjNW0FUok024/G8WM+iIVvyObZfdAD1ToDzGSxwVggkz8YI3rwVT62V5fK8FmnX+xbfAPearwnIXSdrmYj4yDNV6y0e/FoieFKUHtVMF7trLHUGPDNUNR6oDMPDJ8Rpwc7dtlfQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR08MB6737.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(26005)(186003)(52116002)(2616005)(2906002)(6506007)(38100700002)(316002)(86362001)(6916009)(38350700002)(66946007)(1076003)(66556008)(66476007)(4326008)(8676002)(5660300002)(8936002)(6486002)(6512007)(83380400001)(7416002)(6666004)(508600001)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ARR2Sna7vkiBZYw9DaP18FQXN1w2SY17XijpezhuXBBFWDj4PBr2v122R6lZ?= =?us-ascii?Q?O7l5vU9nSIGg6EPJrqNR50Xpxoe8DVhYHT5+wpfv+yQ8ePTkpa+LzmTAQGPS?= =?us-ascii?Q?1glSQsC9kEG4zbzkWZBvM0KQw91e0N90OBNDKDHij/vAZLqDVJgKqxVnhq+1?= =?us-ascii?Q?4D+mNoFjzj05UB5n8HNFEdazkeNSGNdPtwqIB3/D5UtU/p51hHIdBCXNZ3Z3?= =?us-ascii?Q?13OsL84Q2I9Rb6HTQHRHzoHp0tAMjNFnIlvpg9nBBmDzjjzchKGNSVuHdDGM?= =?us-ascii?Q?FVQSnNEZcCo1MotlOpwvM2sh9lM8Set1V1rvEHod/acMOotJlz5xDB1N57MS?= =?us-ascii?Q?zTHFN4ZykDRej/9tAJTx+bjYO8yKKpevBq6kjJGbpJtuq2EyIwpqxyk1r2hb?= =?us-ascii?Q?B1hfzRdxh3iCcwFPUPyhkDz1pEFWSOQKgSks6wZgBgG1RUwDKv7eR3REOtGY?= =?us-ascii?Q?W6FA9BgS6cqy+eV5y1JoPIkaVg6FZTXokOp1nMyNjsS05X4SiM6oZts+P+fY?= =?us-ascii?Q?zlsCMvNjk8y74+KvYTq0z9gw34pUtyIrYxEV7Q3SiiHkd4IyLnI1ckb/Lufb?= =?us-ascii?Q?XCILrlERh+8LPNF2sFaybK+XfJrAnaWOplGGSSPRBAMFWh0FSMOeAy+vLmfy?= =?us-ascii?Q?ykh8+Toxm1Ry82+ZjGeUXoWXp4skfB2dNKLDekoKEs1GUtbHsxp5TX48HVRC?= =?us-ascii?Q?1oUEGOU1Gn3BIaZ6V1Ys9QUtRD1bwuX/L8F5dtPdfeACErrXO7pddigrgzjg?= =?us-ascii?Q?pEMEh6VxLBKmxYYXi7SVjIO6/LuBkkrIt8e8NPP+L/4h3SoIb/xT64IM32IZ?= =?us-ascii?Q?ZuJ+mYEErbW5MXTvug6vWEItxbuwBkhQzeQPdzZeni+SXSymvbuLKYTkw68O?= =?us-ascii?Q?x0wgo81lYu+sBBQ8z21goIgeOKMmmTC87bZurgBpqD7m9uzZSrA8BTl/rkBk?= =?us-ascii?Q?ybYC9OMlxtlThX3p5X5y4ktC5GsYYHgVi38QSbfqvBtGvYg7wcr7qg6FAmBi?= =?us-ascii?Q?EPR+JmRZmH+eI+IVCX4r6PLUCfQW9rjUpnGD+4RyXtSml1EE7hMzqU5u9z0l?= =?us-ascii?Q?6Uh5ZcVnoRVvrrjbWyRcWRtSWqME51SNzobkV05kK6K+SIKSqhwTSB7u6yZn?= =?us-ascii?Q?fs1Y6QwwxWn3fKK6e1XWzwGovsdSzUD/xqDF75s8AT8twRUOYcrj/l9iCx5E?= =?us-ascii?Q?FJHx4NwFmiEyqI0oZ2+7xVgjObMm6oVehSpLa72mNs3GWpzYOF6EVVAG9bMd?= =?us-ascii?Q?cmRchsxqvHdflZvPjHQZBQ4vV3QxSqF4cWKUlFOrEq60f8KKu0Uw+57eBui1?= =?us-ascii?Q?IvkQk9aF8HpJrEhn8Tu9jRuaXadMw32CFQ3O8cP5dz2VRiMhXHL25fA0Fhor?= =?us-ascii?Q?3J9Sb6ww+C28sJsQm5ND5tXLZksAEqJkI8vRbRFn59yC1CvwEDSxWEYLkDq2?= =?us-ascii?Q?16+8QSBnovDGTtrsNkx7Ayr3beTNQ9C4vtTIMDjxkeMScqh7L7CDSiil0j4k?= =?us-ascii?Q?h/Kp6W8ctjg5Wu2Vc6wCjTwNsJDTYLf0rhwhnSsJ5eLZ9g2/D88ccYYv4P6b?= =?us-ascii?Q?b+gTsQQ9V5jVqm/YoDay0ja8+6Z3W08LJMZX2LHCbwOwJHlhagTyZCZx8Hnp?= =?us-ascii?Q?VkFrhBFsapohG0Y7AgaeUrHXte+StdQWuaJZFeHeh7KlCBBh28RZpp/5gel5?= =?us-ascii?Q?FCdOTQ=3D=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: c775fec1-323d-4a78-6458-08d9ec9fc093 X-MS-Exchange-CrossTenant-AuthSource: AM9PR08MB6737.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2022 14:15:12.6987 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 458QR2x125Yg/Sodh1NxVq5fIALY5uEUD60G4mJj5kc3aHRwwh77kn0Sy+jz0fj4Ihn+wXV1gd/wdmog0SHmUp7z+l8K2stZexyet9fB9yw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5413 X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:111:f400:fe0e::713 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a01:111:f400:fe0e::713; envelope-from=vsementsov@virtuozzo.com; helo=EUR04-VI1-obe.outbound.protection.outlook.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 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-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1644513560629100001 Content-Type: text/plain; charset="utf-8" Add simple test-case for new display-update qmp command. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- tests/avocado/vnc.py | 63 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/tests/avocado/vnc.py b/tests/avocado/vnc.py index 096432988f..187fd3febc 100644 --- a/tests/avocado/vnc.py +++ b/tests/avocado/vnc.py @@ -8,9 +8,48 @@ # This work is licensed under the terms of the GNU GPL, version 2 or # later. See the COPYING file in the top-level directory. =20 +import socket +from typing import List + from avocado_qemu import QemuSystemTest =20 =20 +VNC_ADDR =3D '127.0.0.1' +VNC_PORT_START =3D 32768 +VNC_PORT_END =3D VNC_PORT_START + 1024 + + +def check_bind(port: int) -> bool: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + try: + sock.bind((VNC_ADDR, port)) + except OSError: + return False + + return True + + +def check_connect(port: int) -> bool: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: + try: + sock.connect((VNC_ADDR, port)) + except ConnectionRefusedError: + return False + + return True + + +def find_free_ports(count: int) -> List[int]: + result =3D [] + for port in range(VNC_PORT_START, VNC_PORT_END): + if check_bind(port): + result.append(port) + if len(result) >=3D count: + break + assert len(result) =3D=3D count + return result + + class Vnc(QemuSystemTest): """ :avocado: tags=3Dvnc,quick @@ -51,3 +90,27 @@ def test_change_password(self): set_password_response =3D self.vm.qmp('change-vnc-password', password=3D'new_password') self.assertEqual(set_password_response['return'], {}) + + def test_change_listen(self): + a, b, c =3D find_free_ports(3) + self.assertFalse(check_connect(a)) + self.assertFalse(check_connect(b)) + self.assertFalse(check_connect(c)) + + self.vm.add_args('-nodefaults', '-S', '-vnc', f'{VNC_ADDR}:{a - 59= 00}') + self.vm.launch() + self.assertEqual(self.vm.qmp('query-vnc')['return']['service'], st= r(a)) + self.assertTrue(check_connect(a)) + self.assertFalse(check_connect(b)) + self.assertFalse(check_connect(c)) + + res =3D self.vm.qmp('display-update', type=3D'vnc', + addresses=3D[{'type': 'inet', 'host': VNC_ADDR, + 'port': str(b)}, + {'type': 'inet', 'host': VNC_ADDR, + 'port': str(c)}]) + self.assertEqual(res['return'], {}) + self.assertEqual(self.vm.qmp('query-vnc')['return']['service'], st= r(b)) + self.assertFalse(check_connect(a)) + self.assertTrue(check_connect(b)) + self.assertTrue(check_connect(c)) --=20 2.31.1