From nobody Mon Sep 8 17:08:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752683554951295.42802259776397; Wed, 16 Jul 2025 09:32:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id DF1F4149D; Wed, 16 Jul 2025 12:32:33 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 1FC351531; Wed, 16 Jul 2025 12:31:31 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 97C39129A; Wed, 16 Jul 2025 12:31:25 -0400 (EDT) Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 554D511F0 for ; Wed, 16 Jul 2025 12:31:24 -0400 (EDT) Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-ae0c4945c76so2924366b.3 for ; Wed, 16 Jul 2025 09:31:24 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e82645fdsm1228404866b.97.2025.07.16.09.31.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 09:31:21 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752683483; x=1753288283; 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=8UN3pi5BJMQmcquHH2YIm988unSmbb3yLWYIJwy9vss=; b=TMX+6npGv4FSq9iBDNhH91609seqdxAwhIDt8iXe4NwDUZGfCz2SDMThQ5oWZp+RKv 78Ycl8Z90hQ8uFlIrJNp+IQlJ1zQN9TcuUHYyXokqux4l/U4rzFzEVYTwIYBpdNSW7G1 /Hd62DuCqjW0FX9XsDpblJ5opYuC5aqhufn0IvwBTjzK0j4DxJ7vVsJe9r/X8e/24a0Z hwQ0Ha6ztUzHpSGykXJImtnRCRI/UiH4/2o5eRfSddT9Aqy2a0Fv28L6nWriW4FO3FTb aQnVxZ+qWTrAhOtoDJaaEv6ELlQkcPoZMqlv+943DV1nGeajbRQzXCWTwO4wTVLnq4MZ YjVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752683483; x=1753288283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8UN3pi5BJMQmcquHH2YIm988unSmbb3yLWYIJwy9vss=; b=hHMQFKplX87NK6cCrC1scQvs/GVj6QaJR+RXQR2UKmHesBS5L6+D1XnRIW8bH8EGJo 4AFudftW0nkP1btRwwrO52HH94QEMJaCOHhx2rlqLcssErICbrm3lxM9Iz60TvTzyBUA tV4kqS2H163E2MhhDO09gtHHhUG2c+/xOawN+oVNwxU9B757GgI+0kCF1yoNiFSilUxh v5lvn/MSNXEvqHfRDglhBVfN0ckdieTdzn1nZlrgkz3+YawA4nXp0W3gHhaDUE4X7q6e qqk2mnGeTjfyGi9QfJhu8cq4sY6KM48bSNVf6gdoqDZ3C+mIPa2oaFRli63feF2aRrCl Ug3w== X-Gm-Message-State: AOJu0YxZtTAssqyfmGm6vkzRs243uMYD9bAeW1ePmV8J2vnPvOQtiN0X bjcrwQv8bGOPnJuNkFshTNwU8wmOdUSED8uMyyc2ef2RsxqKTOEEE4PLegWTGoM9BCIfeA== X-Gm-Gg: ASbGncv9BGy6YiyijWq8LMC0p2wjfuyvFNlYJS7cW2vMwOPvy7uy0OljCzVHIv34ihJ wUG0osdV2fMSMW0T2FH43L0r5cYvI+b7XKbETqtNLVR7VxbhIVGVTs18X7QDiFUQ0ziwGu+D7OG ntT6le01QpwEy46Sf/416Ik/NtGP+ExWvA0DTdBTsQbx1Xi3jtT5i8u64g7kvoqVD5ncEQ3dSh0 QWy4LdOVTdXMPN+dIbusKwGbCJY7OlxEMTKXiLGHBUzORW9o56sohehkGk4vm9dJkexaG8C9vjx hDbajMylFN7paHvgdmMkT50tmU+et+kNoueZaBD3UDrj2pernqq+sRmS+FXUOX5Ds0wOg2A76On Mox70lZTkDsVbZkeY1XkuSgRWwesucBaZ82QcobESr5vBFMrMgphvGNzXgWzJ9zWvlZ7l+54= X-Google-Smtp-Source: AGHT+IHA3gQU1W6/XRg1mShOF+wB1ms9Km7sxVRVI8dFXj05LoCs34HICxXlqmN+RxVZRMudrBY5Rg== X-Received: by 2002:a17:907:1b05:b0:ae6:e1ba:30a with SMTP id a640c23a62f3a-ae9ce17de91mr341964066b.54.1752683482271; Wed, 16 Jul 2025 09:31:22 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 1/5] bhyve: support serial type 'tcp' Date: Wed, 16 Jul 2025 18:28:43 +0200 Message-ID: <20250716162847.57145-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250716162847.57145-1-bogorodskiy@gmail.com> References: <20250716162847.57145-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: S3KVM6VNEYYNERMOQXYTVHMHFDJFVS43 X-Message-ID-Hash: S3KVM6VNEYYNERMOQXYTVHMHFDJFVS43 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752683557813116600 Content-Type: text/plain; charset="utf-8" In addition to the nmdm consoles, bhyve also supports a tcp console. It's configured with: .. -l com1,tcp=3D127.0.0.1:12345 Then a user could connect to the guest console port 0 by making a tcp connection to the host's 127.0.0.1:12345. In the domain XML this configuration is represented as: Also, update domain capabilities to include the TCP console support. Unfortunately, there's no way to detect that from the bhyve binary before trying to start a VM, so there's no capability probing for this feature. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_capabilities.c | 3 +- src/bhyve/bhyve_command.c | 42 +++++++++++------ .../bhyvexml2argv-serial-tcp.args | 12 +++++ .../bhyvexml2argv-serial-tcp.ldargs | 4 ++ .../bhyvexml2argv-serial-tcp.xml | 27 +++++++++++ tests/bhyvexml2argvtest.c | 1 + .../bhyvexml2xmlout-serial-tcp.xml | 46 +++++++++++++++++++ tests/bhyvexml2xmltest.c | 1 + tests/domaincapsdata/bhyve_basic.x86_64.xml | 1 + tests/domaincapsdata/bhyve_fbuf.x86_64.xml | 1 + tests/domaincapsdata/bhyve_uefi.x86_64.xml | 1 + 11 files changed, 123 insertions(+), 16 deletions(-) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 59fc81d26c..04a5a4cf29 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -128,7 +128,8 @@ virBhyveDomainCapsFill(virDomainCaps *caps, caps->console.supported =3D VIR_TRISTATE_BOOL_YES; caps->console.type.report =3D true; VIR_DOMAIN_CAPS_ENUM_SET(caps->console.type, - VIR_DOMAIN_CHR_TYPE_NMDM); + VIR_DOMAIN_CHR_TYPE_NMDM, + VIR_DOMAIN_CHR_TYPE_TCP); =20 return 0; } diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index c82a07c2eb..89648f76cb 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -159,29 +159,41 @@ bhyveBuildNetArgStr(const virDomainDef *def, static int bhyveBuildConsoleArgStr(const virDomainDef *def, virCommand *cmd) { + size_t i =3D 0; virDomainChrDef *chr =3D NULL; =20 if (!def->nserials) return 0; =20 - chr =3D def->serials[0]; + for (i =3D 0; i < def->nserials; i++) { + chr =3D def->serials[i]; =20 - if (chr->source->type !=3D VIR_DOMAIN_CHR_TYPE_NMDM) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only nmdm console types are supported")); - return -1; - } + /* bhyve supports only two ports: com1 and com2 */ + if (chr->target.port > 2) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only two serial ports are supported")); + return -1; + } =20 - /* bhyve supports only two ports: com1 and com2 */ - if (chr->target.port > 2) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only two serial ports are supported")); - return -1; - } + virCommandAddArg(cmd, "-l"); =20 - virCommandAddArg(cmd, "-l"); - virCommandAddArgFormat(cmd, "com%d,%s", - chr->target.port + 1, chr->source->data.file.pa= th); + switch (chr->source->type) { + case VIR_DOMAIN_CHR_TYPE_NMDM: + virCommandAddArgFormat(cmd, "com%d,%s", + chr->target.port + 1, chr->source->data= .file.path); + break; + case VIR_DOMAIN_CHR_TYPE_TCP: + virCommandAddArgFormat(cmd, "com%d,tcp=3D%s:%s", + chr->target.port + 1, + chr->source->data.tcp.host, + chr->source->data.tcp.service); + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only nmdm and tcp console types are supporte= d")); + return -1; + } + } =20 return 0; } diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args b/tests/= bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args new file mode 100644 index 0000000000..8e4072d897 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args @@ -0,0 +1,12 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,tcp=3D127.0.0.1:12345 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs b/test= s/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml b/tests/b= hyvexml2argvdata/bhyvexml2argv-serial-tcp.xml new file mode 100644 index 0000000000..61c9440e44 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml @@ -0,0 +1,27 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 58b404ca7d..d1786ff165 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -254,6 +254,7 @@ mymain(void) DO_TEST_FAILURE("virtio-rnd-transitional"); driver.bhyvecaps &=3D ~BHYVE_CAP_VIRTIO_RND; DO_TEST_FAILURE("virtio-rnd"); + DO_TEST("serial-tcp"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml b/tes= ts/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml new file mode 100644 index 0000000000..641efcd602 --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml @@ -0,0 +1,46 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + +
+ + +
+ + + + + +
+ + + + + + + + + + + + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 98006dac04..0b858731a6 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -115,6 +115,7 @@ mymain(void) DO_TEST_DIFFERENT("isa-controller"); DO_TEST_DIFFERENT("fs-9p"); DO_TEST_DIFFERENT("virtio-rnd"); + DO_TEST_DIFFERENT("serial-tcp"); =20 /* Address allocation tests */ DO_TEST_DIFFERENT("addr-single-sata-disk"); diff --git a/tests/domaincapsdata/bhyve_basic.x86_64.xml b/tests/domaincaps= data/bhyve_basic.x86_64.xml index d1211a5b5e..0c386c79d2 100644 --- a/tests/domaincapsdata/bhyve_basic.x86_64.xml +++ b/tests/domaincapsdata/bhyve_basic.x86_64.xml @@ -29,6 +29,7 @@ + tcp nmdm diff --git a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml b/tests/domaincapsd= ata/bhyve_fbuf.x86_64.xml index 8d5e42dd82..2936281857 100644 --- a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml +++ b/tests/domaincapsdata/bhyve_fbuf.x86_64.xml @@ -46,6 +46,7 @@ + tcp nmdm diff --git a/tests/domaincapsdata/bhyve_uefi.x86_64.xml b/tests/domaincapsd= ata/bhyve_uefi.x86_64.xml index 3a6f178dd4..fa87fd3640 100644 --- a/tests/domaincapsdata/bhyve_uefi.x86_64.xml +++ b/tests/domaincapsdata/bhyve_uefi.x86_64.xml @@ -38,6 +38,7 @@ + tcp nmdm --=20 2.49.0 From nobody Mon Sep 8 17:08:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752683603364215.0139139548636; Wed, 16 Jul 2025 09:33:23 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4E32499C; Wed, 16 Jul 2025 12:33:22 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B264F1457; Wed, 16 Jul 2025 12:31:34 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 5FEB411F0; Wed, 16 Jul 2025 12:31:26 -0400 (EDT) Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 2E7A0126C for ; Wed, 16 Jul 2025 12:31:25 -0400 (EDT) Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-60768f080d8so4291a12.1 for ; Wed, 16 Jul 2025 09:31:25 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e82645fdsm1228404866b.97.2025.07.16.09.31.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 09:31:22 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752683483; x=1753288283; 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=HiiYGHqyHbW2/8cBTUgMnjYaIxUu+oFS8rG/7lHt9+A=; b=V//lHz4cSiNQBUQrv0yoi8dennnpKZh9sNT8DvDmkelWh0dqpj2+axRXEzk7H/BK7u qZ7jVC/ObYZpA34P/Ym6/b6zWKurI90iZ9+Ni2xiGfja5PMCRmw2bY36+63TB21gYSrQ l7CjC2Ar8DN8xTMxifa+IitolDjS5Si0zJ8i4Olc/5oJ2sjkifcWO4BZRELm6U/b0jjK f/z4BaBgiedw15Y65q2TpOOABpBb6boY1zzqK+U2D3oKXoYoMSOYUTKEuccZAo5hprBv FhQK46UvU+JvYQi+Zb4TsoSBGaeiczEwfTnqzeyHg1iqy4i/nBjeK5E+VJS8PQDNHh0X 7ccw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752683483; x=1753288283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HiiYGHqyHbW2/8cBTUgMnjYaIxUu+oFS8rG/7lHt9+A=; b=NLUzic7Rtt5pWLgRaMtOcaJodoLnbk1zIVwDUBNH3PILuvvsWAoU044CRXn401n+b+ sV8BNlFoQluhkSaX0sZR3Sd+tSXfrbYHJ54PkFPnGQCaWwzusMdI+kUlpGc/WGlPEAxo jwyrx0f6oRvsoL9P0JO3074aT9Ez9sW84Oz1hlDAhb/p9Jkw1rEohiCqSam8FlHeNcpb j0YlR5cEhyP81rQacwQY17CAyz97Q8NtnrUM5eB6qf6eQRwIi5nuZlpZ4w2fukCY0lN1 62d0JkQtvSdCn8EdMQEQHJcctfkWjNkyDUp1tx01ut+HU7q3dzXPxZlxrbFqqyCgG/yq GtfQ== X-Gm-Message-State: AOJu0YxGKIny3cbyVoRfg9CZdi1lco8zRe1ttyWr9k4z9bYDc8o3aEtV mTF8sfJwrVbSB6zsggzhjp5yu7537yXdxZfnPuCQdS3k6soZPDg4im4NYZI6GL4WcffaBg== X-Gm-Gg: ASbGncseSKl19VIspbS5+3Qz/2c6xY/PjMv5rE+XF9nJLZLDHTJpueOSZ6mRZOMc6XB vVE6ujHSgicsADEYERNNgjjLY9xRzlGghQymxognDw1Rt6q6InOdEv/eAX2jL4yJ3sDd1rDuznK DUDA690Uffyljr5dmnb655dTXDehpeoS4fY6dWYHnIv+ST7Sc7jHxNMC9LEMiDj5q4r+XiRAJpk ckwiZXeR42J79HzmTknQ6btOY6ITXoHlsMPtJ9BOoUa57coQvxurz5x7LBYHV8RD51AA7/yNbSR vw1UqhALXhsegdw8+P/FqxhE2cEZy83km9v60zs6vMrQEebyXzMInA58wRfgZf7rYDv40AV2uG6 ZKSu7+ieDWxbKQnx0oWQ9fOHo2k3kHgfkZpOyOebgmGoxeN0B4wnyF10Y/5td4rM/UYXMZOA= X-Google-Smtp-Source: AGHT+IF5kpSQgHciQJZhYfZg6XFNyU/MlzUhfYdV+vU2fv/wlTqpL9mws6B3fdjukNR25AWU7Zrm5A== X-Received: by 2002:a17:907:7286:b0:ae3:d1fe:f953 with SMTP id a640c23a62f3a-ae9ce0dc601mr321273366b.43.1752683483245; Wed, 16 Jul 2025 09:31:23 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 2/5] bhyve: increase number of supported consoles to 4 Date: Wed, 16 Jul 2025 18:28:44 +0200 Message-ID: <20250716162847.57145-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250716162847.57145-1-bogorodskiy@gmail.com> References: <20250716162847.57145-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6E2N2OSD7PJVWN4TLXLUHTI2654XDFM2 X-Message-ID-Hash: 6E2N2OSD7PJVWN4TLXLUHTI2654XDFM2 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752683604248116600 Content-Type: text/plain; charset="utf-8" Recent versions of bhyve support 4 com ports instead of just 2. Thus, allow to use 4 console devices. Also, there was a bug previously because the condition was "if (chr->target.port > 2)", but as target.port start with 0 and "com" ports start with 1, this condition allows com3 to be used. As bhyve supports 4 com ports already long enough, and all supported FreeBSD versions include this capability, do not introduce driver capability for that. Add a couple of tests for that: - A domain that uses 4 serials, 2 of type 'nmdm' and the other 2 of type 'tcp' - A domain that uses unsupported port, such as target.port=3D4 which translates into com5. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_command.c | 4 +- .../bhyvexml2argv-4-consoles.args | 15 +++++ .../bhyvexml2argv-4-consoles.ldargs | 4 ++ .../bhyvexml2argv-4-consoles.xml | 35 +++++++++++ .../bhyvexml2argv-serial-invalid-port.args | 12 ++++ .../bhyvexml2argv-serial-invalid-port.ldargs | 4 ++ .../bhyvexml2argv-serial-invalid-port.xml | 28 +++++++++ .../bhyvexml2argv-serial-tcp.xml | 2 +- tests/bhyvexml2argvtest.c | 2 + .../bhyvexml2xmlout-4-consoles.xml | 58 +++++++++++++++++++ .../bhyvexml2xmlout-serial-tcp.xml | 4 +- tests/bhyvexml2xmltest.c | 1 + 12 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 89648f76cb..18f65cf757 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -168,8 +168,8 @@ bhyveBuildConsoleArgStr(const virDomainDef *def, virCom= mand *cmd) for (i =3D 0; i < def->nserials; i++) { chr =3D def->serials[i]; =20 - /* bhyve supports only two ports: com1 and com2 */ - if (chr->target.port > 2) { + /* bhyve supports 4 ports: com1, com2, com3, com4 */ + if (chr->target.port > 3) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("only two serial ports are supported")); return -1; diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args b/tests/= bhyvexml2argvdata/bhyvexml2argv-4-consoles.args new file mode 100644 index 0000000000..16c7bd7638 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args @@ -0,0 +1,15 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,/dev/nmdmdf3be7e7-a104-11e3-aeb0-50e5492bd3dcA \ +-l com2,tcp=3D127.0.0.1:12345 \ +-l com3,tcp=3D0.0.0.0:54321 \ +-l com4,/dev/nmdm0A \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs b/test= s/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml b/tests/b= hyvexml2argvdata/bhyvexml2argv-4-consoles.xml new file mode 100644 index 0000000000..c32680aa34 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml @@ -0,0 +1,35 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args= b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args new file mode 100644 index 0000000000..8e4072d897 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args @@ -0,0 +1,12 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,tcp=3D127.0.0.1:12345 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldar= gs b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml = b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml new file mode 100644 index 0000000000..36ecd1a9f1 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml @@ -0,0 +1,28 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml b/tests/b= hyvexml2argvdata/bhyvexml2argv-serial-tcp.xml index 61c9440e44..a52b507dda 100644 --- a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml @@ -20,7 +20,7 @@
- + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index d1786ff165..2838b20c29 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -255,6 +255,8 @@ mymain(void) driver.bhyvecaps &=3D ~BHYVE_CAP_VIRTIO_RND; DO_TEST_FAILURE("virtio-rnd"); DO_TEST("serial-tcp"); + DO_TEST("4-consoles"); + DO_TEST_FAILURE("serial-invalid-port"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml b/tes= ts/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml new file mode 100644 index 0000000000..fba7d37a4b --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml @@ -0,0 +1,58 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml b/tes= ts/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml index 641efcd602..529f1e8f02 100644 --- a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml @@ -33,12 +33,12 @@
- + - + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 0b858731a6..df093a5539 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -116,6 +116,7 @@ mymain(void) DO_TEST_DIFFERENT("fs-9p"); DO_TEST_DIFFERENT("virtio-rnd"); DO_TEST_DIFFERENT("serial-tcp"); + DO_TEST_DIFFERENT("4-consoles"); =20 /* Address allocation tests */ DO_TEST_DIFFERENT("addr-single-sata-disk"); --=20 2.49.0 From nobody Mon Sep 8 17:08:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752683622409425.04040114283555; Wed, 16 Jul 2025 09:33:42 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 6C8CA138F; Wed, 16 Jul 2025 12:33:41 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 0873C134E; Wed, 16 Jul 2025 12:31:40 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 9E44C145E; Wed, 16 Jul 2025 12:31:34 -0400 (EDT) Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id CE9D61293 for ; Wed, 16 Jul 2025 12:31:26 -0400 (EDT) Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-ae0a0cd709bso212311166b.0 for ; Wed, 16 Jul 2025 09:31:26 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e82645fdsm1228404866b.97.2025.07.16.09.31.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 09:31:23 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752683485; x=1753288285; 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=71eSg8Hm0dsshuAJRIfIQIynf8ZwVI4dPN7lvM1muJY=; b=HFiEAMDwHj81w80xnofUECF+OBzyJ/0OBojGYvt3zm2Hl/P2FERMEyzccA/Xi/p0Vi 8aivr9/Roa+ff5YlD0JJeWWMnNykzhpRRVSrWElmqi0fF++YDE2JrGEgkQjg3UWoQAbD 0YaFtHUms/QPrWKdsiK6QKQ0ryoDoLl+rC+13DfJ+DzqP1KA6REASMYSIvnH9tkuvjQT aOO21BVOC21W4+fZPHvVUCgMCu5YaFrMxqsH3zHAgKEmcULfGL4twHswB8jgQkq64rJ4 3GhyvDbYWuMZy9CBWh8x4FgfsOQTFMDywml5jRLQ0jsb1IIlQLgcLsE4+FmURxr8/JhN XbuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752683485; x=1753288285; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=71eSg8Hm0dsshuAJRIfIQIynf8ZwVI4dPN7lvM1muJY=; b=MWxPArz6+OUD6NRZQaTe0SaAnmyL/9dcF6SUCiQHNqa/glvw4LsQJOcl7esuZjN23W gtB3k7v90WNZ+L6GPMRD6k1T5s6kstt2MJXTcBb00SIiRSWwJXomMunZNcc1A+EZi5QI 0wQvwNxa4o+Ac1CQHPkxk/+JaxeUGx2eMLNGWzWeLjDU97msePYyhx8kTxUfMzT5b80g aUiCCctEnYSEwUq3O71AMGYa79MnypoXb1og8/fhIiif0ZhOmi4txuJuE+AZIqy6foHa y/fJxscizr6NAb182179iZ891GCAgjtBpATKbjxiMnykM7f9s+ZNlUneWOpO6Vdo1xM4 R1wg== X-Gm-Message-State: AOJu0YzQ9wAzaYL9uhwud2UdvsExhwC0LfBMJzzi8YvvC/8KNr72h/ED Qo41fYnL7WB2zWYEWZTRUl9HiIKTBDX28P30GqdAa6VXYx/h04GLgwqhaMMG3UOHXc0PUA== X-Gm-Gg: ASbGncsRBLMKiXFRbD2pg9l0BQFN23kXl2zthTUy/ecKJpAxJvjjg6ZgBiI9RwR+QJ6 TrQHZOl0H1sB3TuckYDgf2nvrErf3Up4uiE36UK1rcAgxpJ+yMsYC/H3HZLUeVwKj9l4LdyYss2 wW5XWCqffHt+YzKeHWGxCvb4mU55eT+YJYYQWMYCQZ0F8ioAWWPXnWfUP+LQm6YI+MwOGRSEZtz PIF/Xd18a8VELwfd98Nf7FoHgvCvtlpLJiJYO0FZsjntqBnozcGUT2wBixtD5n3FIf31kkwAb4V oPzSpX3BYwLTz/JnS6DjvBhp3wc+iUUCiH6ckEIlkfwTyz3AtEmGkqXPhfyYclimpvH9pHWzQEC 7WtqWiVrtam8qZUp87MOP/t2Nt6NWopolHLzVB13udnLANszybsHGkKecntf9xtGiDrO0wsk= X-Google-Smtp-Source: AGHT+IGtUNhM/nJgOlcqjWmgUO6r3Jg58vQSLKUR1HS3A9i3Au0f9JiU1ziDl5iGBXmR92UVz+FqyA== X-Received: by 2002:a17:907:d87:b0:ae3:a753:615b with SMTP id a640c23a62f3a-aec4d76553fmr7173466b.19.1752683484697; Wed, 16 Jul 2025 09:31:24 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 3/5] docs: drvbhyve: document TCP console support Date: Wed, 16 Jul 2025 18:28:45 +0200 Message-ID: <20250716162847.57145-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250716162847.57145-1-bogorodskiy@gmail.com> References: <20250716162847.57145-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DGDWBFGXHI2QR3336VVXYOBXXSWH3FEL X-Message-ID-Hash: DGDWBFGXHI2QR3336VVXYOBXXSWH3FEL X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752683623973116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- docs/drvbhyve.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/drvbhyve.rst b/docs/drvbhyve.rst index 7eec4a2123..0962bccef4 100644 --- a/docs/drvbhyve.rst +++ b/docs/drvbhyve.rst @@ -619,3 +619,22 @@ Example: ... + +TCP console +~~~~~~~~~~~ +:since:`Since 11.6.0` it's possible to configure TCP console. + +Example: + +:: + + ... + + + + + ... + +Note: there's no direct way to check if the actual ``bhyve`` binary suppor= ts +the TCP console. Thus, libvirt always assumes it's supported. Please +refer to the ``bhyve(1)`` manual page to make sure. --=20 2.49.0 From nobody Mon Sep 8 17:08:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752683639145419.82180579435703; Wed, 16 Jul 2025 09:33:59 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2AF4C1542; Wed, 16 Jul 2025 12:33:58 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id DF3B1151E; Wed, 16 Jul 2025 12:31:44 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D5D451559; Wed, 16 Jul 2025 12:31:38 -0400 (EDT) Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5EA9114A6 for ; Wed, 16 Jul 2025 12:31:28 -0400 (EDT) Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-ae9c2754a00so4558666b.2 for ; Wed, 16 Jul 2025 09:31:28 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e82645fdsm1228404866b.97.2025.07.16.09.31.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 09:31:25 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752683487; x=1753288287; 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=5M9dpQbJJzSUJOxiJhIN1Xqcly0NpknDrz11s+qnnDc=; b=M03UTBqi1QM4AQ5FSXOSovjXeGABQBTQkSPtE8gaataQSILLpQFpCSLY+1klFMGTrw NKb3BBNj3w385mX8H0fjGbTIrYq13eRhkVE5wOJiote7OUksGaac2qZmHBeNsFOLeG1D 3R/RLAvctWK27+cE70bC4AO6EfW/K9TLBBFq+UJgQfRAaW0Kp+BaSWiiTA7GjSy9tZXZ jS9b+UrN0VE2H/EXZMHyA3fPsO+l17P/OqPtYqkOjeutCafm42QXUGFWYnYymNc44Qof PACYjxmu2ZfJPbFQK+6jY2We+dLgRVDwQaUO9c0dMCoEr5Pec8fu+YdUOf+5ZOZ3ugsI nxxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752683487; x=1753288287; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5M9dpQbJJzSUJOxiJhIN1Xqcly0NpknDrz11s+qnnDc=; b=lch74ZleJOYfvG0XiWDX8+AFub1rF2Z3XzwKTRpCFLJAClOSTMPGf3hA7j5cTJGFC6 6GSLE+aGVSHRVBifNDqxA/Rw8PvBXZKc1IfTFbzK5TbL1C/mHKqd3jRZ9GyrzMnE8QEw KOk+7x2W+WSNNTRP1jYNtF6c7B56mGOa69iz11092Gce7zNyJrfPr3ClpdOGR06ttPZI 3kmCLpdZj/BW2UXVCJhMGWbnV5zCroMmOdgpOfMlxzHXh44/as0y2/HRZAZlFaQM1Vm/ RCvixTDf++emSnVqMbdfP0Y/3UYmn5RKKwCc+amA6ra8D2+pEh0TFnw6BgNqhJAwtQ70 FAcw== X-Gm-Message-State: AOJu0YyfhkvQSdQObig+cAOGxnX7Dbwq7Vph6VeMDyxrPwCVzT1G9XV3 p4SoWGXDH9w4sbB3catRwU6KUsXkMVvtSdm6rwoAbF0wIP+Xv0dN0KM4MCMIRctEhHnLWQ== X-Gm-Gg: ASbGncsZrH6qmt1GmpRhdvI+CBWsFTZy/ZaQiyqluLNwcbkXagHOp3y8Mr+Oc3PY8i3 xmYA0xJ3LerblJJF/zVXY2wp8VldLfZt12tE74ey09ydCkmeJFySx55E7nh2QenPK5tSQpepl76 X8AUJBgg0hvzwf2pUQAoTiclObr+rpoab5RgYnzhh/DyD4LTdATCwkd72uPfSJQBq6Ao1EIB24P kXzLbNljTMSM8vg6+j0AioLWkm4D4d7wktXMZwtfRJCBAGxb/67X9hZLFNF+B2CyM5F3Hci1M9/ ftbcYnGgc6vbsO19JT8Etp/nIxKPQKFjEuF9ZqY2QJ2SKvHE50a79ljiAlHuCkyHMQt/2+tQQzI 3sdcv81tRw7zLwRZW1XU+x3/PGELaZ4IT5H+zRMCV72W5qfaKK1upIg+NoDOcnEM4Jmd78so= X-Google-Smtp-Source: AGHT+IGs6CkZroVAveVGVa0tsg9AvVWF55taBJSvJ6IUbHMJILdo1CohReKp7sR8TKf7Qeu8FgZ7sA== X-Received: by 2002:a17:907:1b13:b0:ae3:cac0:f47c with SMTP id a640c23a62f3a-ae9c99d7f44mr394686166b.26.1752683486346; Wed, 16 Jul 2025 09:31:26 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 4/5] bhyve: validate serial devices validation Date: Wed, 16 Jul 2025 18:28:46 +0200 Message-ID: <20250716162847.57145-5-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250716162847.57145-1-bogorodskiy@gmail.com> References: <20250716162847.57145-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3LKBRW33HDTSM67OV3DYLHFKXWTES3EQ X-Message-ID-Hash: 3LKBRW33HDTSM67OV3DYLHFKXWTES3EQ X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752683640596116600 Content-Type: text/plain; charset="utf-8" Extend bhyveDomainDeviceDefValidate() to check that: - only 'nmdm' or 'tcp' serial devices are used, - serial device count is not more than supported, - only listening raw TCP sockets are used. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_domain.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index c9bbf27d83..9dec300a99 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -263,6 +263,33 @@ bhyveDomainDeviceDefValidate(const virDomainDeviceDef = *dev, _("Only 'virio' RNG device model is supported")= ); return -1; } + } else if (dev->type =3D=3D VIR_DOMAIN_DEVICE_CHR && + dev->data.chr->deviceType =3D=3D VIR_DOMAIN_CHR_DEVICE_TYPE= _SERIAL) { + virDomainChrDef *chr =3D dev->data.chr; + if (chr->source->type !=3D VIR_DOMAIN_CHR_TYPE_NMDM && + chr->source->type !=3D VIR_DOMAIN_CHR_TYPE_TCP) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only 'nmdm' and 'tcp' console types are supp= orted")); + return -1; + } + if (chr->target.port > 3) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only four serial ports are supported")); + return -1; + } + if (chr->source->type =3D=3D VIR_DOMAIN_CHR_TYPE_TCP) { + if (chr->source->data.tcp.listen =3D=3D false) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only listening TCP sockets are supported= ")); + return -1; + } + + if (chr->source->data.tcp.protocol !=3D VIR_DOMAIN_CHR_TCP_PRO= TOCOL_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only 'raw' protocol is supported for TCP= sockets")); + return -1; + } + } } =20 return 0; --=20 2.49.0 From nobody Mon Sep 8 17:08:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752683655575305.1919559757505; Wed, 16 Jul 2025 09:34:15 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 9432D1323; Wed, 16 Jul 2025 12:34:14 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 939FC1574; Wed, 16 Jul 2025 12:31:47 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4D25314DD; Wed, 16 Jul 2025 12:31:41 -0400 (EDT) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 10BD214E3 for ; Wed, 16 Jul 2025 12:31:29 -0400 (EDT) Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ae0df6f5758so8810966b.0 for ; Wed, 16 Jul 2025 09:31:28 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae6e82645fdsm1228404866b.97.2025.07.16.09.31.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jul 2025 09:31:26 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752683487; x=1753288287; 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=uvutzzVEOd0WARZ66+7RgkoTwI6Ojyr4hfe3QcXxpU0=; b=Qfw9f9XopKgtRpclm+inzWlLsK8SBOdxFq41KEDCN73lJs4u4g93/GMbTn0+mBc8zy mW7O5z2yXnNptAPg1ONn3dJzbB2TReOcaowzaOfwqWQwG61sLiVTbsn0gBT2zIRPqnIh bsRfaFio4mnn43W8QP5fu2TTVhfSAe5qId6y7rsXvFZIeuJA190Z7GYNpsNA7jiWVEqE NPx5m0xt02SoOamCPfhF+8D5uDIm5XTEZatCLzjjY7PESvjv3bx0wfP4q74Q0CRapJjM 5tvjksLyOpHCS/Bp0AWOVO8GNAcxNhHSjNWpHRGFOLa8Q0Fv5x259E3YGNnrxF6mKZbg JxVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752683487; x=1753288287; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uvutzzVEOd0WARZ66+7RgkoTwI6Ojyr4hfe3QcXxpU0=; b=hYvzs2Hc35OsFmOSHMl5JiNft1fNN4mv8p0pBikV9WTbhtYVvonq1chaD0PVelVzpU lWyvibnLjRL97FDPnHVMVcovrLQoTAdDGWAQUrC5E5lutldwoEoZ2TDNHLpL+CIWG7gH 54rOUiLoEJ5s/11D4CLmiMoSG6RMpKKhguKZjozpvQS1ANrdfkjKx2EL26LQW/4w0d5i zrSbO7ZP5HfWHhvJZ6SFAYir2ftKN2jYoMvxDqrAnVPPadeVWDnLUTlTqOWkeY/oq9NX HEZJF2Jx8BJ0gR6eOzWAFDJKw2XHKq+RMfxQweiQC5qHloZGG0VtEr+w+oEB1C/N6/Zw bWpA== X-Gm-Message-State: AOJu0YzSn4YzJEcdgDcHrIrx6SYvxgiJz0tckfrIqFDIrAt+nRhc8FU7 ynvgy78b46Hd4cfF0Y+7ocqULDOKrTLiB0t8OiqBkxCtwoIT/bMQx9ZQ9D/ZpmbOB9k15g== X-Gm-Gg: ASbGncuEnNN1JKywh2jNtRBxz8Yh6QvFSzKo5DqwzwfobBsu3C/Sddu8f7vFV9I/6Wl EceJtRLdjlBG7MVCRmm1Q68V6I8s5M+blhrW7zToPWG0EdPpMlu6UcL68Q0RHZMEK1jJD10lgq9 1dWOtUReiDIDBEjirFUfYgfl8BHyN/GdjrTNxKLIy+HL80fOpie5+uHGsYnQ5XZFcvfe8vTn8P3 cIYTin87vxMQej2WUcdG4zbVUlRwzUUvObM0Sw77HyopNifDNVd9/6yVdDQ05GH3C/GMdAuDlDz KyLzkE6CBUc5TfUkRb8OxdkeAeg892hYH0d6/fASlwX2kVFSo6axutnFktblEI75H9U9iBEFpKE hWfiknlMNB296GwTf/EnmCcBS2y1gfuX0ocE+VjWniXcLtu2oe37aEqioXsdAAgI2FCA2vIs= X-Google-Smtp-Source: AGHT+IH4RHmHG+lFd2ehAiuqiLYz8O3DsHiPxAiCRNHprld8rpwym5TM2BC3qRo1qv1Fre6nhp1Tng== X-Received: by 2002:a17:907:894b:b0:ade:470b:d5ac with SMTP id a640c23a62f3a-ae9ce196ca1mr313536566b.56.1752683487251; Wed, 16 Jul 2025 09:31:27 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH v2 5/5] bhyve: sync error messages Date: Wed, 16 Jul 2025 18:28:47 +0200 Message-ID: <20250716162847.57145-6-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250716162847.57145-1-bogorodskiy@gmail.com> References: <20250716162847.57145-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: B6C6CB4M6KDAHMCEJSESAQIWTK7M423D X-Message-ID-Hash: B6C6CB4M6KDAHMCEJSESAQIWTK7M423D X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752683656568116600 Content-Type: text/plain; charset="utf-8" Use the same error messages for serial devices validation which are already used in bhyve_domain.c Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_command.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 18f65cf757..5757a41e7e 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -171,7 +171,7 @@ bhyveBuildConsoleArgStr(const virDomainDef *def, virCom= mand *cmd) /* bhyve supports 4 ports: com1, com2, com3, com4 */ if (chr->target.port > 3) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only two serial ports are supported")); + _("Only four serial ports are supported")); return -1; } =20 @@ -190,7 +190,7 @@ bhyveBuildConsoleArgStr(const virDomainDef *def, virCom= mand *cmd) break; default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only nmdm and tcp console types are supporte= d")); + _("Only 'nmdm' and 'tcp' console types are supp= orted")); return -1; } } --=20 2.49.0