From: Roman Bogorodskiy Date: Tue, 15 Jul 2025 18:20:12 +0000 (+0200) Subject: bhyve: extend serial devices validation X-Git-Tag: v11.6.0-rc1~97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79456b79f3ed88c6e1b8f02b612948036ed620fd;p=thirdparty%2Flibvirt.git bhyve: extend serial devices validation 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é --- 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 == VIR_DOMAIN_DEVICE_CHR && + dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL) { + virDomainChrDef *chr = dev->data.chr; + if (chr->source->type != VIR_DOMAIN_CHR_TYPE_NMDM && + chr->source->type != VIR_DOMAIN_CHR_TYPE_TCP) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only 'nmdm' and 'tcp' console types are supported")); + 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 == VIR_DOMAIN_CHR_TYPE_TCP) { + if (chr->source->data.tcp.listen == false) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only listening TCP sockets are supported")); + return -1; + } + + if (chr->source->data.tcp.protocol != VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only 'raw' protocol is supported for TCP sockets")); + return -1; + } + } } return 0;