mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-30 01:43:23 +00:00
network: Add midonet virtual port type support to qemu
Use the utilities introduced in the previous patches so the qemu driver is able to create tap devices that are bound (and unbound on domain destroyal) to Midonet virtual ports. Signed-off-by: Antoni Segura Puimedon <toni+libvirt@midokura.com>
This commit is contained in:
parent
a9fbe3b157
commit
d490f47ba3
@ -47,6 +47,7 @@
|
||||
#include "virnetdev.h"
|
||||
#include "virnetdevbridge.h"
|
||||
#include "virnetdevtap.h"
|
||||
#include "virnetdevmidonet.h"
|
||||
#include "device_conf.h"
|
||||
#include "virstoragefile.h"
|
||||
#include "virstring.h"
|
||||
@ -1139,9 +1140,15 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
}
|
||||
|
||||
vport = virDomainNetGetActualVirtPortProfile(net);
|
||||
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
||||
if (vport) {
|
||||
if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_MIDONET) {
|
||||
ignore_value(virNetDevMidonetUnbindPort(vport));
|
||||
} else if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) {
|
||||
ignore_value(virNetDevOpenvswitchRemovePort(
|
||||
virDomainNetGetActualBridgeName(net), net->ifname));
|
||||
virDomainNetGetActualBridgeName(net),
|
||||
net->ifname));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virDomainNetRemoveHostdev(vm->def, net);
|
||||
@ -2934,10 +2941,15 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
vport = virDomainNetGetActualVirtPortProfile(net);
|
||||
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
||||
if (vport) {
|
||||
if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_MIDONET) {
|
||||
ignore_value(virNetDevMidonetUnbindPort(vport));
|
||||
} else if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) {
|
||||
ignore_value(virNetDevOpenvswitchRemovePort(
|
||||
virDomainNetGetActualBridgeName(net),
|
||||
net->ifname));
|
||||
}
|
||||
}
|
||||
|
||||
networkReleaseActualDevice(vm->def, net);
|
||||
virDomainNetDefFree(net);
|
||||
|
@ -62,6 +62,7 @@
|
||||
#include "virprocess.h"
|
||||
#include "virtime.h"
|
||||
#include "virnetdevtap.h"
|
||||
#include "virnetdevmidonet.h"
|
||||
#include "virbitmap.h"
|
||||
#include "viratomic.h"
|
||||
#include "virnuma.h"
|
||||
@ -5235,10 +5236,15 @@ void qemuProcessStop(virQEMUDriverPtr driver,
|
||||
/* release the physical device (or any other resources used by
|
||||
* this interface in the network driver
|
||||
*/
|
||||
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
||||
if (vport) {
|
||||
if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_MIDONET) {
|
||||
ignore_value(virNetDevMidonetUnbindPort(vport));
|
||||
} else if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) {
|
||||
ignore_value(virNetDevOpenvswitchRemovePort(
|
||||
virDomainNetGetActualBridgeName(net),
|
||||
net->ifname));
|
||||
}
|
||||
}
|
||||
|
||||
/* kick the device out of the hostdev list too */
|
||||
virDomainNetRemoveHostdev(def, net);
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "virnetdevtap.h"
|
||||
#include "virnetdev.h"
|
||||
#include "virnetdevbridge.h"
|
||||
#include "virnetdevmidonet.h"
|
||||
#include "virnetdevopenvswitch.h"
|
||||
#include "virerror.h"
|
||||
#include "virfile.h"
|
||||
@ -580,8 +581,12 @@ int virNetDevTapCreateInBridgePort(const char *brname,
|
||||
goto error;
|
||||
|
||||
if (virtPortProfile) {
|
||||
if (virtPortProfile->virtPortType == VIR_NETDEV_VPORT_PROFILE_MIDONET) {
|
||||
if (virNetDevMidonetBindPort(*ifname, virtPortProfile) < 0)
|
||||
goto error;
|
||||
} else if (virtPortProfile->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) {
|
||||
if (virNetDevOpenvswitchAddPort(brname, *ifname, macaddr, vmuuid,
|
||||
virtPortProfile, virtVlan) < 0) {
|
||||
virtPortProfile, virtVlan) < 0)
|
||||
goto error;
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user