libvirt/src/ch/ch_capabilities.c
Praveen K Paladugu b2e43609fd ch: Add Cap checks for unix backend of serial port
Unix Socket backend is only supported for serial port in
cloud-hypervisor. Add relevant checks in chValidateDomainDeviceDef.

Signed-off-by: Praveen K Paladugu <prapal@linux.microsoft.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2024-03-07 15:27:12 +01:00

71 lines
2.2 KiB
C

/*
* Copyright Microsoft Corp. 2023
*
* ch_capabilities.h: CH capabilities
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include "ch_capabilities.h"
static void
virCHCapsSet(virBitmap *chCaps,
virCHCapsFlags flag)
{
ignore_value(virBitmapSetBit(chCaps, flag));
}
/**
* virCHCapsInitCHVersionCaps:
*
* Set all CH capabilities based on version of CH.
*/
virBitmap *
virCHCapsInitCHVersionCaps(int version)
{
g_autoptr(virBitmap) chCaps = NULL;
chCaps = virBitmapNew(CH_CAPS_LAST);
/* Version 28 deprecated kernel API:
* https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v28.0
*/
if (version >= 28000000)
virCHCapsSet(chCaps, CH_KERNEL_API_DEPRCATED);
/* Starting Version 18, serial and console can be used in parallel */
if (version >= 18000000)
virCHCapsSet(chCaps, CH_SERIAL_CONSOLE_IN_PARALLEL);
/* Starting Version 22, add-net api can accept multiple FDs in the request
* This is required to be able to configure queues for virtio-net devices
* from libvirt.
* This capability will be used to gate networking support for ch guests.
* https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v22.0
*/
if (version >= 22000000)
virCHCapsSet(chCaps, CH_MULTIFD_IN_ADDNET);
/* Starting v36, Cloud-Hypervisor accepts Unix Socket as a backend for
* guest's serial port.
* https://github.com/cloud-hypervisor/cloud-hypervisor/releases/tag/v36.0 */
if (version >= 36000000)
virCHCapsSet(chCaps, CH_SOCKET_BACKEND_SERIAL_PORT);
return g_steal_pointer(&chCaps);
}