This represents an interface connected to a VMWare Distributed Switch,
previously obscured as a dummy interface.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
docs/formatdomain.rst | 30 +++++++++++----
src/ch/ch_monitor.c | 1 +
src/conf/domain_conf.c | 64 +++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 7 ++++
src/conf/netdev_bandwidth_conf.c | 1 +
src/conf/schemas/domaincommon.rng | 23 +++++++++++
src/libxl/libxl_conf.c | 1 +
src/libxl/xen_common.c | 1 +
src/lxc/lxc_controller.c | 1 +
src/lxc/lxc_driver.c | 3 ++
src/lxc/lxc_process.c | 2 +
src/qemu/qemu_command.c | 4 ++
src/qemu/qemu_domain.c | 1 +
src/qemu/qemu_hotplug.c | 3 ++
src/qemu/qemu_interface.c | 2 +
src/qemu/qemu_process.c | 2 +
src/qemu/qemu_validate.c | 1 +
src/vmx/vmx.c | 1 +
tools/virsh-domain.c | 1 +
19 files changed, 141 insertions(+), 8 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index ed0d9c19593b..3a8aa96fdc0a 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -5244,22 +5244,36 @@ Dummy network interface
^^^^^^^^^^^^^^^^^^^^^^^
An unconnected network interface sounds pretty pointless, but can show up for
-example with VMWare when libvirt does not have any more information to provide.
-Two such scenarios are currently known:
+example with VMWare without any specified network to be connected to.
+:since:`Since 8.7.0`
-1) network interface exists, but is not connected to any existing network
-2) the interface is connected to something known as VMWare Distributed Switch
+::
+
+ ...
+ <devices>
+ <interface type='dummy'>
+ <mac address='52:54:00:22:c9:42'/>
+ </interface>
+ </devices>
+ ...
-The difference between these two is not (yet?) discoverable by libvirt, so at
-least the information gathered from the hypervisor is provided in the
-element. :since:`Since 8.7.0`
+VMWare Distributed Switch
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Interface can be connected to VMWare Distributed Switch, but since libvirt
+cannot provide information about that architecture, the information presented
+here is only what can be gathered from the VM configuration. VMs with this
+interface type can be created, so that editing of the XML works properly,
+however libvirt cannot guarantee that any changes in these parameters will be
+valid in the hypervisor. :since:`Since 8.7.0`
::
...
<devices>
- <interface type='dummy'>
+ <interface type='vds'>
<mac address='52:54:00:22:c9:42'/>
+ <source switchid='12345678-1234-1234-1234-123456789abc'
portid='6' portgroupid='pg-4321' connectionid='12345'/>
</interface>
</devices>
...
diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c
index 67ca4a7a0dcd..03f051edf67e 100644
--- a/src/ch/ch_monitor.c
+++ b/src/ch/ch_monitor.c
@@ -302,6 +302,7 @@ virCHMonitorBuildNetJson(virJSONValue *nets,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
default:
virReportEnumRangeError(virDomainNetType, netType);
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 0cfbe22dc099..2fc94b40efe2 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -574,6 +574,7 @@ VIR_ENUM_IMPL(virDomainNet,
"udp",
"vdpa",
"dummy",
+ "vds",
);
VIR_ENUM_IMPL(virDomainNetModel,
@@ -2497,6 +2498,7 @@ virDomainActualNetDefFree(virDomainActualNetDef *def)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -2621,6 +2623,10 @@ virDomainNetDefFree(virDomainNetDef *def)
virDomainHostdevDefClear(&def->data.hostdev.def);
break;
+ case VIR_DOMAIN_NET_TYPE_VDS:
+ g_free(def->data.vds.portgroup_id);
+ break;
+
case VIR_DOMAIN_NET_TYPE_ETHERNET:
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_DUMMY:
@@ -8899,6 +8905,8 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
g_autofree char *vhost_path = NULL;
g_autofree char *tap = NULL;
g_autofree char *vhost = NULL;
+ g_autofree char *switchid = NULL;
+ g_autofree char *connectionid = NULL;
const char *prefix = xmlopt ? xmlopt->config.netPrefix : NULL;
if (!(def = virDomainNetDefNew(xmlopt)))
@@ -8932,6 +8940,13 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
portid = virXMLPropString(source_node, "portid");
}
+ if (def->type == VIR_DOMAIN_NET_TYPE_VDS) {
+ switchid = virXMLPropString(source_node, "switchid");
+ portid = virXMLPropString(source_node, "portid");
+ portgroup = virXMLPropString(source_node, "portgroupid");
+ connectionid = virXMLPropString(source_node, "connectionid");
+ }
+
if (def->type == VIR_DOMAIN_NET_TYPE_INTERNAL)
internal = virXMLPropString(source_node, "name");
@@ -9313,6 +9328,36 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
}
break;
+ case VIR_DOMAIN_NET_TYPE_VDS:
+ if (!switchid) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("Missing source switchid for interface type
'%s'"),
+ virDomainNetTypeToString(def->type));
+ goto error;
+ }
+
+ if (virUUIDParse(switchid, def->data.vds.switch_id) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to parse switchid '%s'"),
switchid);
+ goto error;
+ }
+
+ if (virStrToLong_ll(portid, NULL, 0, &def->data.vds.port_id) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to parse portid '%s'"), portid);
+ goto error;
+ }
+
+ if (virStrToLong_ll(connectionid, NULL, 0, &def->data.vds.connection_id)
< 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to parse connectionid '%s'"),
connectionid);
+ goto error;
+ }
+
+ def->data.vds.portgroup_id = g_steal_pointer(&portgroup);
+
+ break;
+
case VIR_DOMAIN_NET_TYPE_ETHERNET:
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_DUMMY:
@@ -9495,6 +9540,7 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_VDPA:
break;
case VIR_DOMAIN_NET_TYPE_LAST:
@@ -23683,7 +23729,21 @@ virDomainNetDefFormat(virBuffer *buf,
def->data.vdpa.devicepath);
sourceLines++;
}
+ break;
+
+ case VIR_DOMAIN_NET_TYPE_VDS: {
+ char switchidstr[VIR_UUID_STRING_BUFLEN];
+
+ virUUIDFormat(def->data.vds.switch_id, switchidstr);
+ virBufferEscapeString(buf, "<source switchid='%s'",
switchidstr);
+ virBufferAsprintf(buf, " portid='%lld'",
def->data.vds.port_id);
+ virBufferEscapeString(buf, " portgroupid='%s'",
def->data.vds.portgroup_id);
+ virBufferAsprintf(buf, " connectionid='%lld'",
def->data.vds.connection_id);
+
+ sourceLines++;
+
break;
+ }
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_DUMMY:
@@ -28303,6 +28363,7 @@ virDomainNetGetActualVirtPortProfile(const virDomainNetDef
*iface)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -28317,6 +28378,7 @@ virDomainNetGetActualVirtPortProfile(const virDomainNetDef
*iface)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
default:
return NULL;
@@ -29314,6 +29376,7 @@ virDomainNetTypeSharesHostView(const virDomainNetDef *net)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -29576,6 +29639,7 @@ virDomainNetDefActualToNetworkPort(virDomainDef *dom,
case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unexpected network port type %s"),
virDomainNetTypeToString(virDomainNetGetActualType(iface)));
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 7b81acf5db3b..a1f6cf7a6fd0 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -940,6 +940,7 @@ typedef enum {
VIR_DOMAIN_NET_TYPE_UDP,
VIR_DOMAIN_NET_TYPE_VDPA,
VIR_DOMAIN_NET_TYPE_DUMMY,
+ VIR_DOMAIN_NET_TYPE_VDS,
VIR_DOMAIN_NET_TYPE_LAST
} virDomainNetType;
@@ -1133,6 +1134,12 @@ struct _virDomainNetDef {
struct {
virDomainHostdevDef def;
} hostdev;
+ struct {
+ unsigned char switch_id[VIR_UUID_BUFLEN];
+ char *portgroup_id;
+ long long port_id;
+ long long connection_id;
+ } vds;
} data;
/* virtPortProfile is used by network/bridge/direct/hostdev */
virNetDevVPortProfile *virtPortProfile;
diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_conf.c
index 58d166901a8c..b1ebfea6ddd7 100644
--- a/src/conf/netdev_bandwidth_conf.c
+++ b/src/conf/netdev_bandwidth_conf.c
@@ -296,6 +296,7 @@ bool virNetDevSupportsBandwidth(virDomainNetType type)
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index 5d530f957b0d..7f6ea1d8887d 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -3440,6 +3440,29 @@
<ref name="interface-options"/>
</group>
+ <group>
+ <attribute name="type">
+ <value>vds</value>
+ </attribute>
+ <interleave>
+ <element name="source">
+ <attribute name="switchid">
+ <ref name="UUID"/>
+ </attribute>
+ <attribute name="portid">
+ <data type="long"/>
+ </attribute>
+ <attribute name="portgroupid">
+ <data type="string"/>
+ </attribute>
+ <attribute name="connectionid">
+ <data type="long"/>
+ </attribute>
+ </element>
+ <ref name="interface-options"/>
+ </interleave>
+ </group>
+
</choice>
<optional>
<attribute name="trustGuestRxFilters">
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 92e4e0ee605f..ab736713271b 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -1392,6 +1392,7 @@ libxlMakeNic(virDomainDef *def,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unsupported interface type %s"),
diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c
index d90ec674e5f6..10ac8013739f 100644
--- a/src/libxl/xen_common.c
+++ b/src/libxl/xen_common.c
@@ -1678,6 +1678,7 @@ xenFormatNet(virConnectPtr conn,
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type
'%s'"),
virDomainNetTypeToString(net->type));
return -1;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index c63f4b14eaf8..9328f242df6a 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -423,6 +423,7 @@ static int virLXCControllerGetNICIndexes(virLXCController *ctrl)
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unsupported net type %s"),
virDomainNetTypeToString(actualType));
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 6bd2cdd205d4..8a7135ff4733 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -3466,6 +3466,7 @@ lxcDomainAttachDeviceNetLive(virLXCDriver *driver,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Network device type is not supported"));
goto cleanup;
@@ -3522,6 +3523,7 @@ lxcDomainAttachDeviceNetLive(virLXCDriver *driver,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
default:
/* no-op */
@@ -3965,6 +3967,7 @@ lxcDomainDetachDeviceNetLive(virDomainObj *vm,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Only bridged veth devices can be detached"));
goto cleanup;
diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index fab23fa2b11f..6b12bff25cb8 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -597,6 +597,7 @@ virLXCProcessSetupInterfaces(virLXCDriver *driver,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unsupported network type %s"),
@@ -1609,6 +1610,7 @@ virLXCProcessReconnectNotifyNets(virDomainDef *def)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 812176ab992e..1523ca704794 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3962,6 +3962,7 @@ qemuBuildHostNetProps(virDomainNetDef *net)
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
/* Should have been handled earlier via PCI/USB hotplug code. */
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -8182,6 +8183,7 @@ qemuBuildInterfaceConnect(virDomainObj *vm,
case VIR_DOMAIN_NET_TYPE_INTERNAL:
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -8280,6 +8282,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
case VIR_DOMAIN_NET_TYPE_INTERNAL:
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
/* nada */
break;
@@ -8319,6 +8322,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
/* These types don't use a network device on the host, but
* instead use some other type of connection to the emulated
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 9d5dd07958ad..45f00e162d63 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -9733,6 +9733,7 @@ qemuDomainNetSupportsMTU(virDomainNetType type)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 30f146f2f4d9..751fa84013b0 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1231,6 +1231,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
case VIR_DOMAIN_NET_TYPE_INTERNAL:
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
_("hotplug of interface type of %s is not implemented
yet"),
@@ -3387,6 +3388,7 @@ qemuDomainChangeNetFilter(virDomainObj *vm,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("filters not supported on interfaces of type %s"),
virDomainNetTypeToString(virDomainNetGetActualType(newdev)));
@@ -3739,6 +3741,7 @@ qemuDomainChangeNet(virQEMUDriver *driver,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
_("unable to change config on '%s' network
type"),
virDomainNetTypeToString(newdev->type));
diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c
index fa34ecd5130f..3ec92fdd7d36 100644
--- a/src/qemu/qemu_interface.c
+++ b/src/qemu/qemu_interface.c
@@ -119,6 +119,7 @@ qemuInterfaceStartDevice(virDomainNetDef *net)
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
/* these types all require no action */
break;
@@ -206,6 +207,7 @@ qemuInterfaceStopDevice(virDomainNetDef *net)
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
/* these types all require no action */
break;
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index cfcf879f5908..5c8413a6b64c 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3262,6 +3262,7 @@ qemuProcessNotifyNets(virDomainDef *def)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
@@ -8267,6 +8268,7 @@ void qemuProcessStop(virQEMUDriver *driver,
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
/* No special cleanup procedure for these types. */
break;
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 6e457f381412..41765bba3710 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -1761,6 +1761,7 @@ qemuValidateNetSupportsCoalesce(virDomainNetType type)
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
break;
}
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 7b705b895ed1..b7b997e83540 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -3973,6 +3973,7 @@ virVMXFormatEthernet(virDomainNetDef *def, int controller,
case VIR_DOMAIN_NET_TYPE_HOSTDEV:
case VIR_DOMAIN_NET_TYPE_UDP:
case VIR_DOMAIN_NET_TYPE_VDPA:
+ case VIR_DOMAIN_NET_TYPE_VDS:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported net type
'%s'"),
virDomainNetTypeToString(def->type));
return -1;
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 451f51d633d8..d2ea4d1c7b44 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -1070,6 +1070,7 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
case VIR_DOMAIN_NET_TYPE_VDPA:
case VIR_DOMAIN_NET_TYPE_INTERNAL:
case VIR_DOMAIN_NET_TYPE_DUMMY:
+ case VIR_DOMAIN_NET_TYPE_VDS:
case VIR_DOMAIN_NET_TYPE_LAST:
vshError(ctl, _("No support for %s in command
'attach-interface'"),
type);
--
2.37.2