From nobody Mon Jun 8 06:38:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1780739229; cv=none; d=zohomail.com; s=zohoarc; b=Kbj31CO7s2e5Mvkr/LFNB1y1U74/l8uwx18hbSvaOcE4gJgyxV7YdMy3cLuKLVoHeTgGEubtxwM/YosIxSaKv/LdRQBJWZttN+8dIFE3x+0vUx09vqmP/iJzIDGWZGV+GyWPHMgRwn7bXS/b41oD85gtkV8EUljSq79bGnxu4DA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780739229; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=3I1zD7dAHl8nBuFihEZShdsfIwN5265CXbOYFM8tnKA=; b=I56D68i3VGpJuTUtwnv8eG4A3py9F8wWTNM5pS7TxF2U27IRMhXyRLXlBaxcOf1yc2OAmgArSakU6Ebumo5e9UUZfBcckalY1AeKhC1NN792l0yLviRlQOf7xkoFraU7CTO5PlsuR5WT5t+31db4Li2zhtTQXJy0KpCjMgDRZ3g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1780739229775786.1059180406477; Sat, 6 Jun 2026 02:47:09 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A2D4B418FA; Sat, 6 Jun 2026 05:47:08 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 6D39B41BC5; Sat, 6 Jun 2026 05:45:19 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D32AD41ADA; Sat, 6 Jun 2026 05:45:04 -0400 (EDT) Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E5C0341AD4 for ; Sat, 6 Jun 2026 05:45:02 -0400 (EDT) Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-6886be3d39bso3696094a12.3 for ; Sat, 06 Jun 2026 02:45:02 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6914f3b583bsm797010a12.29.2026.06.06.02.45.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 02:45:01 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780739101; x=1781343901; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3I1zD7dAHl8nBuFihEZShdsfIwN5265CXbOYFM8tnKA=; b=IFR9TCrlRD1yI+YbHCmr7JboL1H5EtsZHF9lRyMzmZAaFxZNGTgXynJ4Iu2uUcGo10 L6U88SXMmgv6MWdhmkow3fM9W1OT6OOSRD1GFkeo4IaQAp+OCL9UHRA0mBlhjxU0Ix3i QGl1j0xgchMZigJo6iq5l4YAB7SpXdSWyEuYI1aVrchFMADEBa948a0v+rgMwpdbuxW7 OvCqt3vgRc4+F3TuRgu3I/qeFiXFU2oOc1TJ+NbbjKzGo+t2veV1oYo7iICxnrqUKGgL NtzZi91kn+40ZQa+38j74b6J7k1YO+6+1cI4phTEeYIaYx7BmfiXKWFJ3TLbMTYdZeaC /GYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780739101; x=1781343901; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3I1zD7dAHl8nBuFihEZShdsfIwN5265CXbOYFM8tnKA=; b=MuXBtEoCe5fYDhmbkkveeJsqiE/54f9njKBjDtUCBQmlIyeEOI/K0nMPLKXTX37ROc Fj1dVLtfcoSRzNBTfC8oOatN1JRSo+wfouFy3rWiXc8sZsTPy2Uoj8N519sTNONzwg6z oUKcLGwiH5XM2CPAIIL3NX7IAKCdlzmqqyold0c1AJ3fnSamDYK0RrAWTQUslZ1voEb4 ZIbf+mDloqN8kg5To4Xf+llmeIrUPVv1tPoYknvTLmLGj10WjDc7JrdiG1JLhf7rUzsV VGuRwzregI5OJwfekhI3lgaEuPskR6moW3LM82AqUW9tD2wd5kWEt3tuG1KmJl7G9gNx 6GPg== X-Gm-Message-State: AOJu0YxskAuCmJzFc+mff3DRJ3Uk8jQBnOyltnFJoqJj3Sy885JnUQIn X0sX7A1WMONJTfKdxz4k6QxFTOQjQzgyZYdo/WTx7Wuj6h0UaqAWEcBGKKxHTpsS X-Gm-Gg: Acq92OGh9zy+VuEWEXx6JmtzuPwQYbL5HnipWGc+e3NKZJM5hbcP9OkLdTQLTKDJ7gD M4LXTOWvEOn3/Y3OunmCbEaciwxq/XgMEJI7UXgNgqfqO+JDZfxCqrtIImIv5FUTLl2nupb/CKP ev5D6yrE3j30i9eMyard4hzSr+HW+WYQjL4f//SUT7TF6Z6JiIorF2Z3fDpKppy4YIib88EvcVk VktDom1cBEpnptl6G52Wagyf7JbMHKgb49TFae3dXXcH7eUNGdH45ksoxpFEdjgo8ho9zf72S0E z/N6sojjqlWNYZkDoHr1nTtI0W8yXKNHcNS5LZvrVxrvw/R0VHXkNvbmfoCPPnGsneSlFsSvAoD Vsh6VpVLh/cJ1FFFaxvcV3vSnfWj9/AMsym3QRkyNhIxJGzKslS+3BWadBcpdeSMDUDCTKpeaqs td/7krwoP88fgf4xjLEKkHa6Gq8m23cIR37c6HfEAnqrMQPomWmf5hbMxXU/AFwxknCVuWx0Ajt dWr02vQkYLKoitZwabI4EguC5Johxyl1gGFPyemAjEc5lZa X-Received: by 2002:a05:6402:2686:b0:68b:583:fb37 with SMTP id 4fb4d7f45d1cf-68fa4c26a35mr3530513a12.10.1780739101423; Sat, 06 Jun 2026 02:45:01 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/3] bhyve: implement domain{Get,Set}Time APIs Date: Sat, 6 Jun 2026 11:44:33 +0200 Message-ID: <20260606094435.10032-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260606094435.10032-1-bogorodskiy@gmail.com> References: <20260606094435.10032-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: FLBSG4S2U3CK7NTKB4XIOIBIXXOVLKYQ X-Message-ID-Hash: FLBSG4S2U3CK7NTKB4XIOIBIXXOVLKYQ X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1780739230277158500 Content-Type: text/plain; charset="utf-8" Implement the domain{Get,Set}Time APIs for getting and setting domain time. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_driver.c | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 2e7a534396..f99ce3bb8b 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2375,6 +2375,97 @@ bhyveDomainGetFSInfo(virDomainPtr dom, return ret; } =20 +static int +bhyveDomainGetTime(virDomainPtr domain, + long long *seconds, + unsigned int *nseconds, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuAgent *agent; + int ret =3D -1; + int rv; + + virCheckFlags(0, ret); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return ret; + + if (virDomainGetTimeEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_QUERY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + rv =3D qemuAgentGetTime(agent, seconds, nseconds); + bhyveDomainObjExitAgent(vm, agent); + + if (rv < 0) + goto endjob; + + ret =3D 0; + + endjob: + virDomainObjEndAgentJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + +static int +bhyveDomainSetTime(virDomainPtr domain, + long long seconds, + unsigned int nseconds, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuAgent *agent; + bool rtcSync =3D flags & VIR_DOMAIN_TIME_SYNC; + int ret =3D -1; + int rv; + + virCheckFlags(VIR_DOMAIN_TIME_SYNC, ret); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return ret; + + if (virDomainSetTimeEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + rv =3D qemuAgentSetTime(agent, seconds, nseconds, rtcSync); + bhyveDomainObjExitAgent(vm, agent); + + if (rv < 0) + goto endjob; + + ret =3D 0; + + endjob: + virDomainObjEndAgentJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -2447,6 +2538,8 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainGetMemoryParameters =3D bhyveDomainGetMemoryParameters, /* 12.4= .0 */ .domainSetMemoryParameters =3D bhyveDomainSetMemoryParameters, /* 12.4= .0 */ .domainGetFSInfo =3D bhyveDomainGetFSInfo, /* 12.5.0 */ + .domainGetTime =3D bhyveDomainGetTime, /* 12.6.0 */ + .domainSetTime =3D bhyveDomainSetTime, /* 12.6.0 */ }; =20 =20 --=20 2.52.0 From nobody Mon Jun 8 06:38:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1780739348; cv=none; d=zohomail.com; s=zohoarc; b=B+tn7TxHTvREAgxstrbGXfu/F0TcF/oZz5XgVu6FBA3SWlz7DhocydEqvLgN+PYWYmYazSzFTf8IMHWzk46WJFe349heOOYoIgyc6hB04EtLUR7D6DZkh0RSG+O7m+DIGUfAt/MSQRCIG1Qn9oPzoXqzmOP4b/0UH4ccCglwemQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780739348; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=AJgOYtYyS6hHDPvZGrxF6hx5jyZ1Kakb/MUBIJ6Kx6U=; b=gXxLQa/4pDLATeUfvMU+HHzxJaJwd7gPxFxgjHvfiVxHL6j1WTROxA1Y66GeDkhHn6C9F/YO4DTRI6H8Ii+GkRq8PG99ZQQB62Nytaog06N3Qontep9lYvx+JDJoaLv9EyLXhBRgUJ2Xdm5neBTTUIvDmN0BUoi8E+ohhqw35i4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1780739348214121.30289711814703; Sat, 6 Jun 2026 02:49:08 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F2B2841AEB; Sat, 6 Jun 2026 05:49:06 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id F32E641DD4; Sat, 6 Jun 2026 05:45:29 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id AB91C3F94D; Sat, 6 Jun 2026 05:45:05 -0400 (EDT) Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 87F5541AD9 for ; Sat, 6 Jun 2026 05:45:03 -0400 (EDT) Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-befd83e0521so725790966b.1 for ; Sat, 06 Jun 2026 02:45:03 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6914f3b583bsm797010a12.29.2026.06.06.02.45.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 02:45:01 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780739102; x=1781343902; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AJgOYtYyS6hHDPvZGrxF6hx5jyZ1Kakb/MUBIJ6Kx6U=; b=k3qmEDQ1RozrRj59O2aWbopXuEFMWM36P/wzar6qbCa+3zhAZ0Vbu8uPLdbdKIQdWk I91rKfpW9bxE7SUs4B7mlcz88kzuFNDeYeHrYiUyo2MKFAZcmQZ6YI6K7sirhXtFnm+4 /sEsA2WdwJ3CcfqckuEsk3VfU261hjfY23agZW1Bj11g5tnxw+V43Mewa7XWZzJhcuKq e4pNjF9TRScmmGHtEoYYRn8biBWUYBRajdHyiEdohUxIofygdVXrvDQ9rrmdiWErhHWD WV6bFrVcEiJoze57M7gnyWuf9HP2BpJF/qHYx/NdsNrFuLi4fctO7YC7cVtyUBMO2FqW T2dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780739102; x=1781343902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AJgOYtYyS6hHDPvZGrxF6hx5jyZ1Kakb/MUBIJ6Kx6U=; b=rlpNO3Q87VouzJY+x1y/W65KwOHpvPY1L6B2vntw/uqM8SrbT8rUkvCayNPMmu15fL 3bSHtzh5cZaop2M5ke/bzb8knH0ZVFtqZfagrhVRew9PLvk0RqS1HquDr2/DK+9jbkqa TSl8WZWsMlqlQBXzHi9d0W95ccMoZhRlS+Ejdey7y+y8Wrdj+/vA51V4KoIuMU+2j9jO pvZatT/o093uh1tNAXdoeKqXsI/nuuGqpyIj3kOTO+kHF6V2dpNeyNJEBhQv1Ux1haQC FBWOJiRg2S96B1y64SSNo9Bn/uaEFQ6oMES8ryN/U4bw1k+4AABolqEqR57vCAUMCoEa 8L2A== X-Gm-Message-State: AOJu0Yxorl4EVXYSASxp05Fqbao3r/Ty/hKHnuk/r4lKkbuOTGjeHV4X 9nJPbPcDTcbnLmJrN5pZUxAgrkpAf9Z9TuFnAiJQtJ8GTUOdETzcCZKSqPNDum9/ X-Gm-Gg: Acq92OEjjNJQkauK6ZncijYtqCsf+ocOSpvvxOzBGLK2QDZxzgrLcJOClqMBcncd+XR wwDnoWVKoLQKIdz5koFRUETtNfRoPlxPOKWecPcRn6ccV6ElsmgY6iKtYJjjcG/E2Nbdukh8XtH 3vKOKuhtwc04zxkWFACp97pTFMIwP0an9q4mHHSJ5KKI2MxqktjGrponyw4yWavGjaTe50SAjKE NaNB+yPIsbm5AnNnoMZ3d1EMMhN0Ra3TX8c4uUN2t/nNJYj6pVeHUCnlYPKDQbMKTe0KrVpRup9 9Q2egGwMSAY4zZONtt6NwuGxsL1Hn0/4P7TIcKQ0WLx1PEO7SAlejLAsumW1TdwGviQ1NFNmljV K3AoD4HG9ZubxRuXqo5JuhbRHIdvYZrGTPJe0qfnolOyKUDoO0z5R/ILrT4X6TwmnuMSfRCx1j2 2REsvRn2cwFzC2DAIWMbpcCAQPYYGDwz+HsW15odwY9f3/6VNF8py4uT80joLnTyA3JpDi+Hfor LlmeR//7G1mj1hUsAU6WS3pQPl/eAimJAOUxqiQcSNamNBp X-Received: by 2002:a17:907:1c83:b0:bee:d654:a00e with SMTP id a640c23a62f3a-bf3a900facemr314395266b.28.1780739101889; Sat, 06 Jun 2026 02:45:01 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/3] bhyve: implement domainSetUserPassword API Date: Sat, 6 Jun 2026 11:44:34 +0200 Message-ID: <20260606094435.10032-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260606094435.10032-1-bogorodskiy@gmail.com> References: <20260606094435.10032-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: IT46LPRELJ2BDTCRXWPZQPHKDUIM7NZQ X-Message-ID-Hash: IT46LPRELJ2BDTCRXWPZQPHKDUIM7NZQ X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1780739348645158500 Content-Type: text/plain; charset="utf-8" Implement the domainSetUserPassword API for setting user password using the guest agent. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_driver.c | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index f99ce3bb8b..d5f22b18bd 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2466,6 +2466,52 @@ bhyveDomainSetTime(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainSetUserPassword(virDomainPtr domain, + const char *user, + const char *password, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuAgent *agent; + int ret =3D -1; + int rv; + + virCheckFlags(VIR_DOMAIN_PASSWORD_ENCRYPTED, -1); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return ret; + + if (virDomainSetUserPasswordEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + rv =3D qemuAgentSetUserPassword(agent, user, password, + flags & VIR_DOMAIN_PASSWORD_ENCRYPTED); + bhyveDomainObjExitAgent(vm, agent); + + if (rv < 0) + goto endjob; + + ret =3D 0; + + endjob: + virDomainObjEndAgentJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -2540,6 +2586,7 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainGetFSInfo =3D bhyveDomainGetFSInfo, /* 12.5.0 */ .domainGetTime =3D bhyveDomainGetTime, /* 12.6.0 */ .domainSetTime =3D bhyveDomainSetTime, /* 12.6.0 */ + .domainSetUserPassword =3D bhyveDomainSetUserPassword, /* 12.6.0 */ }; =20 =20 --=20 2.52.0 From nobody Mon Jun 8 06:38:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1780739285; cv=none; d=zohomail.com; s=zohoarc; b=LpzU5OSIKKN44/OmSlHP94l13J3lsUy4SMYcvSYXODDhr4rqdq26xT+oj88t9dQ9FKnnCmGl0oCjX3deuYl1E/irvSTy5xmKsF0om9qCUp3DxKMTqWVDORCHseAooURXWsNhym508M07gHHTM8prU01m4FpuaX8UFxwufplCYas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780739285; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=1ADscp86486qO7eZkhnSz2R6AZ+YsjhA6mpfrNvpPVU=; b=ECklTl4tRPIUjMI/YSmGf47o2KWrUV0hbG1JwGLpGvOUHodGzBDUOycjNOPreZqIjdc+/sULmH7B/rJNOARhc7r3l7OKPLaxhZBr7jjct9quEqWnYenxX2O6q6UoswM2LMagB9vBLjPhn8GCs2Zaz8ILzK41/NQnJ6TvYlDPDLI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1780739285732555.1861122808168; Sat, 6 Jun 2026 02:48:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 774FA41B3F; Sat, 6 Jun 2026 05:48:04 -0400 (EDT) Received: from [172.19.199.4] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 4BF6E41D95; Sat, 6 Jun 2026 05:45:24 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 040C241AD3; Sat, 6 Jun 2026 05:45:04 -0400 (EDT) Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id C202241AE2 for ; Sat, 6 Jun 2026 05:45:03 -0400 (EDT) Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-68ae265815aso5055619a12.1 for ; Sat, 06 Jun 2026 02:45:03 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6914f3b583bsm797010a12.29.2026.06.06.02.45.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 02:45:02 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780739103; x=1781343903; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1ADscp86486qO7eZkhnSz2R6AZ+YsjhA6mpfrNvpPVU=; b=gaU2GBSOm2wbOIMB31rLlfNoqzQ98WWS1vbXnRzjqT1s5W08A5c2E9y5wvOfwTZMPL 56Wr/h7WdXqvYE0psptxLaIOedcH+fykpu/WXofyUI98suFct20Q1MYjP6NtcYtYhHOe CzIyYRftSJlrk89yqAkg97g2daV4YJReXY8zvAxQNtzUc52eqweyJ7mrIFxoS3u06TqO eDx11FTayjhF6qWB59JTbWfkQeEpNAXG51eb5e3TtY/bFpka8+A3hXZvdtP6PPfn48sY uAyU8MG0KDwz9BHQf8PXEcd83T9rkh672iYjZWztfkKaoR58TsMXyP0aehUxaazE+8Eu DrDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780739103; x=1781343903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1ADscp86486qO7eZkhnSz2R6AZ+YsjhA6mpfrNvpPVU=; b=ezcwAjhqvFC1Lqy/e75pkxgCYNUHBlABj+XdSMKw+1gb44qp1Ts7lemJU6pCgqSHYs zbTDBj7fUdiJHROjTHZO+3EJC/cCF+xssXofw3TGPMA+MpBsDw6MSoxP+lUIajsOG+FD DpJxjcfiXu0MUq+stD+IKZI1vxfP/YOLUreCTSthvncH+jWENHMWviduC8lnfaRN0g57 e0QLIlysZjSujqBB2+Ov6JJR9GG7iNZiJfWmriIsQII4dLD3o8pEutjWlHCQS2PBpuOr vZa48GxWvA/CCjWXH/K8kNWJ235x/eIFzmStuWnuB7fhzrxBe4gWTlEE7mHcd5hpGTuG 1Bpw== X-Gm-Message-State: AOJu0YwmdUnV1ZmFOfD3o9ceWykjH9SBqwzNHDtkMrIaLrOEnVXZBXja 48/g8C1ujpoHTqIyego52Pw0BD+zijQyF5oywFGfFlDj3R5ZeNJ9HIrqIoAKlcFA X-Gm-Gg: Acq92OGUkWRGtQGABrb/CfWs+uWoRERr+P5a62SM6XX6we8BwddcvzcRPQH+QCxiSr8 ZkPNlTtO+Ek+BrzX3R69FF2mVEIIiHwU6LuNjKjfrfx28EhA7oF9LheVH11kEqkVFGq6aNYZshH DkmDRPSsoYpuHbRTEmqert53iBb/tAW15jwHGmwnSBPHISHCBHxMfOmPIqzCqtMmt0pdOHstit8 wFIV6Yc27vz22YXEXt1SfcJlnp3uCO8ZI6+gbg6wUQQmI2lUX9rEBusOHkaTIO3DDY9AZhlPPWY 2+s0Ru+kHQZHxU6/JaG3MLLl87QXNPWXWUE+MqGnF071cr+IAHDQ1+Gl4W6+OlRQ8sHNf+YBssW 7IMH3in+N1MZIP0igofJHW8BR7ZulJRhLYSsffXaWEkm5e+eHP4HvEa+bufkQy0wOaAPznROAO0 5t2LVCTZ07NyCf85fBd0rGZ8MggZA8sSvTvEQXoYc4vhgCNUZHGujv09SNj++SfLa0t655HxJ0u gBlgc7O45dUoSqnEQYhTUsmZyD5VInkMYjhR3HlY6vKOYA7 X-Received: by 2002:a05:6402:1eca:b0:67f:9124:8815 with SMTP id 4fb4d7f45d1cf-68fa5148da8mr3693090a12.17.1780739102517; Sat, 06 Jun 2026 02:45:02 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 3/3] bhyve: implement domainAuthorizedSSHKeys{Get,Set} APIs Date: Sat, 6 Jun 2026 11:44:35 +0200 Message-ID: <20260606094435.10032-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260606094435.10032-1-bogorodskiy@gmail.com> References: <20260606094435.10032-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DA77SKHPSRATGHFFL3YWRNDQQYOFESA7 X-Message-ID-Hash: DA77SKHPSRATGHFFL3YWRNDQQYOFESA7 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1780739286349158500 Content-Type: text/plain; charset="utf-8" Implement the domainAuthorizedSSHKeys{Get,Set} APIs using the guest agent. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_driver.c | 85 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index d5f22b18bd..ed03c16ea8 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -2512,6 +2512,89 @@ bhyveDomainSetUserPassword(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainAuthorizedSSHKeysGet(virDomainPtr domain, + const char *user, + char ***keys, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuAgent *agent; + int rv =3D -1; + + virCheckFlags(0, -1); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainAuthorizedSshKeysGetEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_QUERY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + rv =3D qemuAgentSSHGetAuthorizedKeys(agent, user, keys); + bhyveDomainObjExitAgent(vm, agent); + + endjob: + virDomainObjEndAgentJob(vm); + cleanup: + virDomainObjEndAPI(&vm); + return rv; +} + +static int +bhyveDomainAuthorizedSSHKeysSet(virDomainPtr domain, + const char *user, + const char **keys, + unsigned int nkeys, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuAgent *agent; + const bool append =3D flags & VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEN= D; + const bool remove =3D flags & VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOV= E; + int rv =3D -1; + + virCheckFlags(VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND | + VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE, -1); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainAuthorizedSshKeysSetEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + if (bhyveDomainEnsureAgent(vm, true) < 0) + goto endjob; + + agent =3D bhyveDomainObjEnterAgent(vm); + if (remove) + rv =3D qemuAgentSSHRemoveAuthorizedKeys(agent, user, keys, nkeys); + else + rv =3D qemuAgentSSHAddAuthorizedKeys(agent, user, keys, nkeys, !ap= pend); + bhyveDomainObjExitAgent(vm, agent); + + endjob: + virDomainObjEndAgentJob(vm); + cleanup: + virDomainObjEndAPI(&vm); + return rv; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -2587,6 +2670,8 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainGetTime =3D bhyveDomainGetTime, /* 12.6.0 */ .domainSetTime =3D bhyveDomainSetTime, /* 12.6.0 */ .domainSetUserPassword =3D bhyveDomainSetUserPassword, /* 12.6.0 */ + .domainAuthorizedSSHKeysGet =3D bhyveDomainAuthorizedSSHKeysGet, /* 12= .6.0 */ + .domainAuthorizedSSHKeysSet =3D bhyveDomainAuthorizedSSHKeysSet, /* 12= .6.0 */ }; =20 =20 --=20 2.52.0